答案给的是15啊 怎么回事呢 我是初学者吗,马上要考试了 哪位大神给解释下啊
以下程序的输出结果是
#define MIN(x, y) (x) < (y) ? (x) : (y)
main()
{ int i , j, k;
i = 10; j = 15;
k = 10 * MIN(i, j);
printf(“%d\n”, k);
}
A、10
B、150
C、15
D、100
结果为15。
程序的第一行进行带参宏定义,用宏名MIN表示条件表达式(x) < (y) ? (x) : (y) ,形参x,y均出现在条件表达式中。程序中 MIN(i,j) 为宏调用,实参i,j,将代换形参x,y。
宏展开后该语句为: 10*(i) < (j) ? (i) : (j),运算结束的结果为15。
宏只是做了简单的替换操作。而函数的参数只在函数调用时求值一次,并将结果传递给函数即可。
define,无参宏定义的一般形式为:#define 标识符 字符串
define 函数定义一个常量。
常量类似变量,不同之处在于:
在设定以后,常量的值无法更改。
扩展资料:
对于宏定义还要说明以下几点:
1.宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名,这只是一种简单的代换,字符串中可以含任何字符,可以是常数,也可以是表达式,预处理程序对它不作任何检查。如有错误,只能在编译已被宏展开后的源程序时发现。
2.宏定义不是说明或语句,在行末不必加分号,如加上分号则连分号也一起置换。
3.宏定义其作用域为宏定义命令起到源程序结束。如要终止其作用域可使用#undef命令。
参考资料:
大侠 能加你Q吗 我还有好多问题啊.....
追答在加班了,不能Q~~
你直接起帖吧,现在回答的人多
按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,main()
{ int n,k;
float score,sum,ave;
sum=0.0;
for(n=1;n<=10;n++)
{
for(k=1;k<=4;k++ )
{
scanf("%f",&score);
sum+=score;
}
ave=sum/4.0;
printf("NO%d:%f\n",n,ave);
}}上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是B
B、sum=0.0;
main()
{ int n,k;
float score,sum,ave;
// sum=0.0; 不应该放在这里
for(n=1;n<=10;n++)
{
sum=0.0; //应该放在这里,因为是需要计算没有学生4门成绩的平均分
for(k=1;k<=4;k++ )
{
scanf("%f",&score);
sum+=score;
}
ave=sum/4.0;
printf("NO%d:%f\n",n,ave);
}}