C语言练习题(带详解答案)

运行结果为: 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 main( )

{ 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 main()

{ int num,c;

scanf(\

do {c=num; printf(\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 main()

{ 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 main() { char c;

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 main()

{ 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次循环

第5次循环

联系客服:779662525#qq.com(#替换为@)