|
|
第4章习题
1.请问下面的注释有问题吗?如果有问题,请指出问题所在。
/*********以下是n和sum的声明********
*******************************
int n/*提供参与累加的数字*/, sum/*存放累加结果*/;
答:问题在于多行注释没有对应的”*/“。
2.请问下面的声明有什么问题?
int _08ms, %num, x86, X86, int, tree05
答:标识符不能是%开头,所以%num非法;也不能是关键字,所以int非法。
3.编写程序从100反向加到1并打印累加结果,要求使用for语句。
答案不唯一,以下是参考答案:
# include <stdio.h>
int main (void)
{
int sum = 0;
for (int n = 100; n >= 1; n --) sum += n;
printf ("1+2+3+...+100=%d\n", sum);
return 0;
}
4.计算并打印10到50之间所有整数的和。
答案不唯一,以下供参考:
# include <stdio.h>
int main (void)
{
int sum = 0;
for (int n = 10; n <= 50; n ++) sum += n;
printf ("%d\n", sum);
return 0;
}
5.用三种方法打印100以内所有能被7整除的正整数,要求分别使用while、do和for语句。提示:乘性运算符的优先级高于赋值运算符。
答:此题的难点在于如何控制循环次数,因为还没有讲分支语句。答案不唯一,仅供参考。
使用while语句:
# include <stdio.h>
int main (void)
{
int n = 1, r = 7;
while (r < 100)
{
printf ("%d\n", r);
n ++;
r = n * 7;
}
return 0;
}
使用do语句:
# include <stdio.h>
int main (void)
{
int n = 1, r = 7;
do
{
printf ("%d\n", r);
n ++;
r = n * 7;
} while (r < 100);
return 0;
}
使用for语句:
# include <stdio.h>
int main (void)
{
for (int n = 1, r = 7; r < 100;)
{
printf ("%d\n", r);
n ++;
r = n * 7;
}
return 0;
}
6.简述赋值表达式、前缀递增表达式和后缀递减表达式的值是如何计算的,它们的副作用是什么?
答:赋值表达式的值是赋值运算符的左操作数在赋值之后的存储值,其副作用是修改赋值运算符的左操作数所代表的对象;前缀递增表达式的值是前缀++运算符的操作数递增后的新值,其副作用是递增该操作数所代表的对象;后缀递减表达式的值是后缀--运算符的操作数在递减前的原值,其副作用是递减该操作数所代表的对象。
7.用三种方法打印1到100之间的所有整数的平方,要求分别使用while、do和for语句。
答:答案不唯一,仅供参考。
使用while语句:
# include <stdio.h>
int main (void)
{
int n = 1;
while (n <= 100)
{
printf ("%d\n", n * n);
n ++;
}
return 0;
}
使用do语句:
# include <stdio.h>
int main (void)
{
int n = 1;
do
{
printf ("%d\n", n * n);
n ++;
} while (n <= 100);
return 0;
}
使用for语句:
# include <stdio.h>
int main (void)
{
for (int n = 1; n <= 100; n ++) printf ("%d\n", n * n);
return 0;
}
|
|