5.
#include < stdio .h > main ( )
{ float c=3.0 , d=4.0; if ( c>d ) c=5.0; else
if ( c==d ) c=6.0; else c=7.0;
printf ( “%.1f\\n”,c ) ; }
运行结果为:7.0
此题为if...else...语句的嵌套,第二if...else...作为第一个if...else...语句else部分的复合语句。
若表达式c>d成立,则执行c=5.0; 否则(表达式c>d不成立) 若表达式c==d成立,则执行c=6.0; 否则,执行c=7.0; 输出c中的值
3.0小于4.0,因此表达式c>d不成立,执行第二个if…else…。
3.0不等于4.0,因此表达式c==d不成立,执行c=7.0,将7.0赋给c, 覆盖掉c中的3.0,此时c中的值为7.0 输出此时的c中的值 6.
#include
{ if (m % 2 == 0) printf(\
else printf(\} }
若键入-9,则运行结果为: -9 is a negative odd 7.
#include
{ int num=0;
while(num<=2){ num++;printf(\;}
}
运行结果为: 1 2 3
详见教材p115循环结构
当循环条件num<=2成立的时候,执行循环体{ num++;printf(\;}中的语句。
循环初值num为0; 循环条件num<=2成立
第1次循环:执行num++;即将num中的值加1,执行后num为1; 执行printf(\;在屏幕上输出num中的值,即输出1,之后换行
此时num中的值为1,循环条件num<=2成立
第2此循环:执行num++;即将num中的值加1,执行后num为2; 执行printf(\;在屏幕上输出num中的值,即输出2,之后换行
此时num中的值为2,循环条件num<=2成立
第3此循环:执行num++;即将num中的值加1,执行后num为3; 执行printf(\;在屏幕上输出num中的值,即输出3,之后换行 此时num中的值为3,循环条件num<=2不成立,结束循环。 8.
#include
{ int sum=10,n=1;
while(n<3) {sum=sum-n; n++; } printf(“%d,%d”,n,sum); }
运行结果为:3,7
当循环条件n<3成立的时候,执行循环体{sum=sum-n; n++; }中的语句。
循环初值sum为10,n为1; 循环条件n<3成立
第1次循环:执行sum=sum-n=10-1=9; 执行n++,即将n中的值加1,执行后n为2;
此时n中的值为2,sum中的值为9,循环条件n<3成立,继续执行循环 第2次循环:执行sum=sum-n=9-2=7; 执行n++,即将n中的值加1,执行后n为3;
输出此时n,sum中的值,即为3,7。需要注意,在printf(“%d,%d”,n,sum); 中要求输出的数据
彼此间用逗号间隔,因此结果的两个数据间一定要有逗号 9.
#include
{ int num,c;
scanf(\
do {c=num; printf(\ }while((num/=10)>0); printf(\ }
从键盘输入23,则运行结果为:32
详见教材p117循环结构;p60复合的赋值运算符 do{ }while(表达式);
先无条件执行循环体,再判断循环条件。注意while(表达式)后有分号
定义整型变量num,c; 为num赋一个整型值;
执行{c=num; printf(\ }直到循环条件(num/=10)>0不成立; 输出换行
已知为num赋值23 第1次执行循环体
执行c=num=23=3; 执行printf(\输出3
判断循环条件 num/=10等价于num=num/10; 因此num=23/10=2, 2大于0,因此循环条件(num/=10)>0成立,继续执行循环体。执行完第1次循环时,num为2,c为3
第2次执行循环体
执行c=2=2;
执行printf(\再输出2
判断循环条件num=2/10=0,0等于0,因此循环条件(num/=10)>0不成立。结束循环 10
#include
{ int s=0,a=5,n;
scanf(\
do { s+=1; a=a-2; }while(a!=n); printf(\,%d\\n\ }
若输入的值1,运行结果为: 2,1
详见教材p117循环结构;p60复合的赋值运算符 执行{ s+=1; a=a-2; }直到循环条件a!=n不成立;
已知为n赋值1,s为0,a为5 第1次执行循环体
执行s+=1;等价于s=s+1=0+1 执行a=a-2; a=5-2=3
判断循环条件,3不等于1,因此循环条件a!=n成立,继续执行循环体。 执行完第1次循环时,s为1,a为3 第2次执行循环体
执行s+=1;等价于s=s+1=1+1=2 执行a=a-2; a=3-2=1
判断循环条件,1等于1,因此循环条件a!=n不成立,结束循环。 执行完第2次循环时,s为2,a为1
输出此时s,a中的值,结果为2,1 11.
#include \
main() {char c; c=getchar();
while(c!='?') {putchar(c); c=getchar(); } }
如果从键盘输入abcde?fgh(回车) 运行结果为:abcde 12.
#include
while((c=getchar())!=’$’)
{ if(‘A’<=c&&c<=‘Z’) putchar(c);
else if(‘a’<=c&&c<=‘z’) putchar(c-32); } }
当输入为ab*ABí#CD$时,运行结果为:ABABCDCD
13.
#include
{ int x, y =0;
for(x=1;x<=10;x++)
{ if(y>=10)
break; y=y+x; }
printf(“%d %d”,y,x);
}
运行结果为:10 5 详见教材p120 for语句
详见教材p126~128 break,continue语句 for( 表达式1;表达式2;表达式3) { }
(1) 先求解表达式1
(2) 求解表达式2,若其值为真,执行循环体,然后执行 (3). 若为假,则结束循环,转到(5) (3) 求解表达式3
(4) 转回上面 (2)继续执行
(5) 循环结束,执行for语句下面的一个语句
break ,跳出循环体;continue,结束本次循环(第i次循环),继续执行下一次循环(第i+1次循环)
此题 表达式1为x=1,表达式2(循环条件)为x<=10,表达式3为x++ 初值x为1,y为0,循环条件(即表达式2)x<=10成立,进入循环体
第1次循环 执行if语句。0小于10,if语句的条件表达式不成立,不执行break;
执行y=y+x; y=0+1=1
转向表达式3,执行x++, x=x+1=1+1=2。循环条件x<=10成立,进入第2次循环
第2次循环 执行if语句。1小于10,if语句的条件表达式不成立,不执行break;
执行y=y+x; y=1+2=3
转向表达式3,执行x++, x=x+1=2+1=3。循环条件x<=10成立,进入第3次循环
第3次循环 执行if语句。3小于10,if语句的条件表达式不成立,不执行break;
执行y=y+x; y=3+3=6
转向表达式3,执行x++, x=x+1=3+1=4。循环条件x<=10成立,进入第4次循环
第4次循环 执行if语句。6小于10,if语句的条件表达式不成立,不执行break;
执行y=y+x; y=6+4=10
转向表达式3,执行x++, x=x+1=4+1=5。循环条件x<=10成立,进入第5次循环