C语言题目解答一下!~

来源:百度知道 编辑:UC知道 时间:2024/09/21 22:21:26
#include <stdio.h>
void main( )
{ int s, x1, y1, z1, x2, y2, z2;
printf("Enter 6 integers:");
scanf("%d%d%d%d%d%d", &x1, &y1, &z1, &x2, &y2, &z2);
s = f(x2, y2, z2) - f(x1, y1, z1);
printf("%d\n", s);
}
f(int x, int y, int z)
{ int k, n;
int tab[2][13] = {
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
n = (x % 4 == 0 && x % 100 != 0 || x % 400 == 0);
for(k = 1; k < y; k++)
z = z + tab[n][k];
return z;
}
(13) 程序运行时,输入1 0 0 0 0 0,输出 (13) 。
A、29 B、28 C、0 D、-1
(14) 程序运行时,输入0 0 1 0 0 0,输出 (14) 。
A、29 B、28 C、0 D、-1
(15) 程序运行时,输入2000 2 1 2000 3 1,输出 (15) 。
A、29 B、28 C、0 D、-1
(16) 程序运行时,输入1981 2 1 1981 3 1,输出 (16) 。
A、29 B、28 C、0 D、-1<

(13)输入1 0 0 0 0 0 后scanf函数将输入的六个数值依次赋值给x1,y1,z1,x2,y2,z2,之后执行s = f(x2, y2, z2) - f(x1, y1, z1),先看f(x2,y2,z2),形参x2,y2,z2将值赋给函数f(int x, int y, int z)中的实参x,y,z,函数中执行n = (x % 4 == 0 && x % 100 != 0 || x % 400 == 0),它的意思是x能被4整除与x不能被100整除或x能被400整除,逻辑运算与:当两边同时为真(为1)时才为真(1);逻辑运算或:当两边有一个为真时就为真,根据条件x=0,带入上式可得n=0,接下来执行函数中的for循环语句,因为y=0不满足k<y所以直接跳出循环,此时k=1,z = z + tab[n][k]得z=0+tab[0][1]=0,函数将返回z值,即0,同样将x1,y1,z1值赋给实参然后在运行函数得到返回值z=0,所以s = f(x2, y2, z2) - f(x1, y1, z1)=0-0=0(13)题应选C。
依照同样的方法可以得出(14)D;(15)A;(16)C;

没分不解释

没分不解释

没分不解释