问题 填空题

[说明1]


下面[C程序代码1]的设计意图是:计算1~100各数的平方。运行该段代码后,没有得到应有的运算结果。

[C程序代码1]


答案

参考答案:行号 修改正确后的完整代码行
5 result=SQUARE(i);
6 i++或i=i+1或++i或i+=1
7 printf("result=%d\a" result);

解析:将[说明1]中的C程序代码进行宏展开之后,计算平方的语句为result=SQUARE(i++)*(i++))。此处,使用了两次“i++”表达式,单次循环两次使用i++显然不是该程序的初衷,因此不能得到期望的运算结果,应该避免两次i++的使用。换而言之,在该宏定义中,参数α使用了两次,而在引用宏时,使用了i++,从而导致运算结果出错。该错误的修改方法是:将第5行的语句修改为“result=-SQUARE(i);”,第6行的语句修改为“i++;”或其等价表达形式。
该C程序代码的另一个错误之处是,在printf语句中错误使用了取地址运算符号&,即第7行的语句应修改为“printf(“result=%dha”,result);”。

单项选择题
单项选择题 共用题干题