C语言基础问题之六,祝看到本帖的人圣诞快乐

来源:百度知道 编辑:UC知道 时间:2024/05/17 20:39:24
5.以下程序的运行结果是:______________________
enum weekday {SUN=0,MON,WED,TUS,THS,FRI,SAT,};
int hours(int x,int y)
{ return (y>x ) ? 24*(y-x) : 24*(y+7-x);
}
void main ()
{ printf ("%d",hours(SAT,TUS));
}
6. 以下程序的运行结果是:______________________
#define MCRA(m) 2*m
#define MCRB(n,m) 2*MCRA(n)+m
main()
{ int i=2,j=3;
printf("%d\n",MCRB(j,MCRA(i)));
}
一定不要给我说明为什么喔~~~~答案我有!谢谢。这是两道题。回答的好一定加分

5.根据
enum weekday {SUN=0,MON,WED,TUS,THS,FRI,SAT,};
所以
SUN=0,MON=1,WED=2,TUS=3,THS=4,FRI=5,SAT=6

hours(SAT,TUS)=hours(6,3),所以其实就是将x=6,y=3代入:
return (y>x ) ? 24*(y-x) : 24*(y+7-x);
由于y>x不成立,所以返回24*(y+7-x),即96。
所以输出结果为96

6.
首先,用define时一定要注意有括号和无括号的区别。
MCRB(j,MCRA(i))将i=2,j=3代入,即MCRB(3,MCRA(2))。
MCRA(2)为 2*2,
所以MCRB(3,MCRA(2)),也就是MCRB(3,2*2)。
也就是 :2*MCRA(3)+2*2 = 2*2*3 +2*2=16

简单到不想回答

第5题是先判断SAT与TUS的值因为SAT<TUS所以执行条件语句的第2条语句:24*(y+7-x).

第一道:96
是计算两天相差的小时数
enum weekday {SUN=0,MON,WED,TUS,THS,FRI,SAT,}; //枚举,MON=1,WED=2...类推
int hours(int x,int y)
{ return (y>x ) ? 24*(y-x) : 24*(y+7-x); //如果y>x,就是两天在同一个星期,就是相差天数*24小时,如果y<x,后面的星期就是指下一个星期,所以相差天数是y+7-x
}
void main ()
{ printf ("%d",hours(SAT,TUS)); //返回星期六与下个星期三相差的小时数
}

第二题:14
就是一个宏定义的替换
#define MCRA(m) 2*m
#define MCRB(n,m) 2*MCRA(n)+m //MCRB(n,m)=