C语言习题顺序、选择、循环.doc

上传人:s****u 文档编号:12811955 上传时间:2020-05-26 格式:DOC 页数:28 大小:265KB
返回 下载 相关 举报
C语言习题顺序、选择、循环.doc_第1页
第1页 / 共28页
C语言习题顺序、选择、循环.doc_第2页
第2页 / 共28页
C语言习题顺序、选择、循环.doc_第3页
第3页 / 共28页
点击查看更多>>
资源描述
2.3顺序结构程序设计2.3.1 要点导读1.printf() 与scanf()语句。printf() 与scanf()语句是最通用的输入输出函数,它们可以在程序设计者的控制下以各种格式分别实现数据的输出和输入操作。它们位于stdio.h库文件中。2.字符数据的输入输出。最简单的字符输入输出函数是getchar()和putchar()。两者分别从键盘读一个字符或向显示屏写一个字符。2.3.2 经典例题分析1.下列程序运行后输出的结果是 。#include void main() int a=0,b=0;a=10;b=20;printf(“a+b=%d”,a+b);分析:printf( )是输出函数,它的括号内由两部分组成:1)控制字符串,是用双引号括起来的字符串,它包括两种信息:(1) 格式说明。由”%”和格式字符组成,如:%d、%f、%c等。它的作用是将输出的数据转换成指定的格式输出。(2) 普通字符。需要原样输出的字符。2)”输出表列”是需要输出的一些数据,可以是表达式。题目中a的值是10,b的值是20,在中,”a+b= “是普通字符,需原样输出。输出表列是一个表达式,它的结果以整型输出。答案:a+b=30。2.下列程序运行后输出的结果是 。#include void main() int a=732;printf(“%dn”,a);printf(“%2dn”,a);printf(“%10dn”,a);printf(“%-10dn”,a);分析:d格式符,用来输出十进制整数。其中%d,按整型数据的实际长度输出。%md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。printf(“%dn”,a);把a的值按原样输出:732。printf(“%2dn”,a);结果占2列,但732占3列大于2列,所以按实际位数输出:732。printf(%10dn”,a);结果占10列,但732占3列小于10列,所以左端补7个空格。printf(“%-10dn”,a); 结果占10列,“-”表示把数值放到左端,732占3列小于10列,所以右端补7个空格。答案: 732732 732 /*表示空格*/ 7323.已知char a=103;则语句printf(“%3d”,a);执行后的输出结果为(表示空格)。A)67B)cC)67D)103分析:103是一个转义字符,表示一个八进制数所代表的字符,转换为十进制为67。printf(“%3d”,a);把103转换为十进制数输出,结果占3列。但67占2列,小于要求的3列,所以左补空格,即67。答案:C。4.下列程序运行后结果是 。#include #define a 3345.67void main() printf(“%fn”,a);printf(“%en”,a);printf(“%4.2fn”,a);printf(“%3.1fn”,a);printf(“%10.3fn”,a);printf(“%-10.3fn”,a);分析:f格式符,用来输出实数,以小数形式输出,小数点后输出6位。所以printf(“%fn”,a);输出结果为3345.670000。%m.nf是指,要输出的数占m列,同时小数点保留n位(四舍五入),如果输出的数大于m,则原样输出,同时小数点保留n位(四舍五入)。如果小于m,则左补空格,同时小数点保留n位(四舍五入)。printf(“%4.2fn”,a);输出结果为3345.67。printf(“%3.1fn”,a);输出结果为3345.7。e格式符,以规范化指数的形式输出,所以printf(“%en”,a);3.345670e+03。答案:3345.670000 3.345670e+03 3345.67 3345.73345.670 /*(表示空格)*/3345.6705.下列程序运行后结果是 。#include void main() char x=0x227f; printf(“%dn”,x);A) 22B) 127C) 255 D)8831分析:变量x被定义成字符型,字符型占1个字节,而x被赋值为一个4位16进制的值22ff,占16位。所以227f高8位被舍去,x的值为7fH。执行printf(“%dn”,x);即把x以有符号的十进制整数输出。答案:B。6.设int b=0;下列语句的输出结果是 。printf(“%d,%d”,+b,b-);A) 1,1B) 1,0C) 0,0D) 0,-1 分析:printf函数的执行顺序是由右到左,输出顺序是由左向右。答案:C。 7.下列程序运行时,若从键盘输入:12345678后结果是 。#include void main() char c1,c2,c3,c4,c5,c6; scanf(“%c%c%c%c”,&c1,&c2,&c3,&c4); c5=getchar( );c6=getchar( );putchar(c1);putchar(c2);printf(“%c%cn”,c5,c6);分析:scanf(格式控制,地址表列)的功能是:从键盘读取输入的信息。其中”格式控制”的含义同printf函数;”地址表列”是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。其scanf(“%c%c%c%c”,&c1,&c2,&c3,&c4)的作用是:按照c1,c2,c3,c4在内存的地址将c1,c2,c3,c4的值存进去。由于”%c”表示按字符形式输入数据,所以”回车符”作为一个字符,输入有效。getchar( )函数的作用从终端输入一个字符。putchar( )函数的作用是向终端输出一个字符。所以c1=1、c2=2、c3=3、c4=回车,c5=4、c6=5。答案:1245。8.设有定义int a;float b;执行scanf(“%2d%f”,&a,&b);语句时,若从键盘输入876 543.0,a和b的值分别是 。分析:scanf()可以指定输入数据所占的列数,系统自动按它截取所需数据。%2d说明了a占两列,即为87,剩下的数字应该赋给b,但是6和5之间有一个空格,为输入终止符,所以543.0被舍弃,即b的值为6。答案:87 6。9.已知a,b,c为int类型,执行scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);后,若要使得a为1,b为2,c为3,则以下选项中正确的输入形式是( )。A) 1,2,3B) a=1,b=2,c=3C) 1 2 3D) a=1 b=2 c=3分析:scanf中如果在字符控制串中除了格式说明符以外还有其他字符,则在输入数据时应输入与这些相同的字符。答案:B。10.设有int x,y;scanf(“%d%*d%d”,&x,&y);从键盘输入数据102030后,y的值是 。分析:%*d表示跳过。所以y的值是30。答案:30。2.3.3 习题一、选择题1.设a、b、c为整型变量,若从键盘给a、b、c输入数据,则正确的输入语句是。A)scanf(“%f%f%f”,&a,&b,&c) ; B) scanf(“%d%d%d”,&a,&b,&c);C) scanf(“%d%d%d”,a,b,c); D) scanf(“%d%d%d”,&a;&b;&c);2.下列程序执行后输出的结果是。#includevoid main()int x=d;printf(“%c”,A+(x-a+1); A) GB) HC) ED) J3.设整型变量a,b的值均为8。printf(“%d,%d”,(a+,+b),b-);的输出值是。A)8,8B)8,7C)9,9D)8,94.若有以下程序段,执行后输出的结果是。int m=100,n=0100;printf(“%d,%on”,m,n);A) 100,100B) 100,0100C) 100,4D) 100,045.有以下程序,其输出结果是。#include void main() float x=1; int y;x+;y=x+1;printf(“x=%d,y=%f”,x,y);A) x=2,y=3B) x=2,y=3.0C) x=2.0,y=3D) x=0,y=0.0000006.有以下程序,其输出结果是。 #include void main() int a; char c=10; float f=100.0;double x;a=f/=c*=(x=6.5);printf(“%d,%d,%3.1f,%3.1f”,a,c,f,x);A) 1,65,1,6.5B) 1,65,1.5,6.5C) 1,65,1.0,6.5D) 2,65,1.5,6.5二、填空题1.下列程序输出的结果是 。#include void main() int x=7,y=5; printf(“y=%dn”, x%y); 2.下列程序输出的结果是 。#include void main() float d,f; long k; int i; i=f=k=d=20/3; printf(“%3d%3ld%5.2f%5.2fn”,i,k,f,d);3.下列程序输出的结果是: 。#include void main() int k=11;printf(“k=%d,k8=%o,k16=%xn”,k,k,k);4.下列程序输出结果是:。#include #define BL “ahpu.edu.cn!”void main() printf(“%2sn”,BL); printf(“%15sn”,BL);printf(“%15.4sn”,BL);printf(“%-15.4sn”,BL);5.若想通过以下输入语句使a=5.0,b=4,c=3,则输入数据形式应该是。int b,c;float a;scanf(“%f,%d,c=%d”,&a,&b,&c);6.当输入为56789 012345a72时,执行下列程序段后,变量i、j、x、y、c的值各是什么?int i,j;float x,y;char c;scanf(“%2d%f%f%c%d”,&i,&x,&y,&c,&j);三、编程题1.已知x=3.2,y=7,z=2,计算y/3*x-2的值。2.输入一个华氏温度,要求输出摄氏温度(结果保留2位)。公式为c=5/9*(f-32)。3.从键盘输入一个小写字母,用大写形式输出该字母。4.把16进制数12a以10进制形式输出。5.输入两个整数,将其值交换。2.3.4 本节易错知识点本节阐述了printf()、scanf()、putchar()和getchar()的具体用法。对于scanf()的用法应注意以下几点:1) 如果在字符控制串中除了格式说明符以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。例如:scaf(“%d,%d”,&a,&b);输入时用如下形式:5,6 此处5后面是逗号,它与scanf()函数字符控制串中的逗号对应。输入时只能输入逗号,不可用”空格”替代。2)用%c格式输入字符时,空格、回车及转义字符均作为有效字符输入。例如: scanf(“%c%c%c”,&a,&b,&c);若要使变量a,b,c的值分别为A、B、C,就只能输入ABC。当使用多个scanf()函数连续给多个字符型变量赋值时,注意输入的方法。例如: scanf(“%c”,&c1); scanf(“%c”,&c2);如果要使得c1的值为a,c2的值为b,则正确输入方法为:ab,而不是ab。3) 遇到满足最大字段宽度或非法输入时认为结束,如:”%2d”,只取两位数。如:scanf(“%d%c%f”,&a,&b,&c);若输入:1234a56p.78则a的值1234,b的值a,c的值56。2.3.5 实验指导实验名称 顺序结构程序设计一、实验目的1.掌握数据的输入输出的方法,能正确使用有关格式转换符;2.熟悉顺序结构程序中语句的执行过程;3.掌握顺序结构程序的设计方法二、实验内容与要求1.下列程序作用是依次输入2个整数,计算并输出这2个整数之差。 #include void main() float a,b,c; printf(“input a,b”n”); scanf(“%d,%d”,&a,&b); c=a-b; printf(“c=%dn”,c); 分析程序,若运行时输入: 100,60 后预期结果是多少? 上机运行该程序,查看程序运行结果是否符合题目要求。如果不符合分析原因并修改程序,直至符合要求为止。2.按下列公式计算并输出s的值,s=3/(a+b)2。有下列程序:#include void main() int a,b; float s; scanf(“%d,%d”,&a,&b); s=3 /(a+b)*(a+b); /*有两个错误*/printf(“s=%fn”,s); 根据题意修改上述程序,并进行调试,直到正确为止。 在的基础上,将scanf(“%d,%d”,&a,&b);改为scanf(“%d%d”,&a,&b);后再编译、链接、运行。3.分析下列程序,写出预期结果,然后输入调试,查看运行结果与预期结果是否一致并分析其原因。#include stdio.hvoid main() int a=-1;unsigned b=65534; printf(%d,%o,%x,%un,a,a,a,a); printf(b=%d,b) ;4.编程并上机调试运行1) 设圆半径为r=1.5,求圆周长和面积。要求用scanf函数输入数据,输出时取小数点后两位。2) 输入一个3位十进制整数,分别输出百位、十位以及个位上的数。3) 从键盘输入一个带2位的实数,将其整数部分和小数部分分离后输出。例如:输入321.54,输出321.54=321+0.54。4) 用getchar函数读入两个字符,然后分别用putchar和printf函数输出这两字符。2.4 选择结构程序设计2.4.1 要点导读1.关系运算符与关系表达式 关系运算是逻辑运算中比较简单的一种。它的实质是两个值之间的”比较运算”,其结果只有两种:”真”、”假”。因此关系表达式的运算结果也只有两种:”真”、”假”。C语言提供6种关系运算符:、=、=和!=。在这里、=、优先级相同,=和!=优先级相同。前4种的优先级高于后两者。2.逻辑运算符与逻辑表达式逻辑运算符可以将多个关系表达式或逻辑量连接起来,构成逻辑表达式。C语言里提供了3种逻辑运算符:!、&、|。不同逻辑运算符进行运算所得的结果如下表:ab!a!ba&ba|b真(非0)真(非0)假(0)假(0)真(1)真(1)真(非0)假(0)假(0)真(1)假(0)真(1)假(0)真(非0)真(1)假(0)假(0)真(1)假(0)假(0)真(1)真(1)假(0)假(0)在C语言中,关系表达式与逻辑表达式的结果用数据值“1”表示真、“0”表示假。判断一个表达式时,非“0”即为真、“0”为假。3.if语句的三种基本形式用if语句可以构成选择结构。它判断给定的条件是否满足,以决定执行某个分支程序段。C语言的if语句有三种基本的实现形式:if、if-else和if-else if形式。4.switch语句C语言提供了另一种用于多分支选择的switch语句,其一般形式为: switch (表达式) case 常量表达式1:语句1 case常量表达式2:语句2case常量表达式n:语句ndefault: 语句n+1 其表达式应为整型、字符型、枚举型表达式。它的语意是:计算表达式的值,并依次与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句。如果表达式与所有的case后的常量表达式均不相同时,则执行default后的语句。2.4.2 经典例题分析1.若有int i;则执行语句i=432;后,i的值为。分析:这是一个关系表达式,在这个表达式中有和=,可知的优先级高于=,且的结合性是,所以,先判断43,显然是为真的,即表达式的值为1。再判断1是否大于2,显然不成立为假,即为0,然后把0赋给i,所以i的值为0。答案:0。2.若变量c为char类型,下列选项中能正确判断出c为数字字符的表达式是。A )0=c=0&c=0&c=0&cbc应该这样写ab&bc,因为c为数字字符,应在09之间,所以应为:c=0&c=9。答案:D。3.已知int x=1,y=2,z=3;则逻辑表达式xy|+z运算后,z的值是。分析:C语言在计算逻辑表达式时,如果在某一步已得到了整个表达式的结果,则后面的部分将不再计算。对于&表达式,若已得到一个操作数为0,则后面的操作数不再计算。对于|表达式,若已得到一个操作数为1,则后面的操作数不再计算。本题中,12显然为真即为1,所以+z不需要再运算了,z的值没改变,还是为3。答案:3。4.下列程序运行的结果是:。#include void main()char c=d; if(mc=z) printf(“YES”); else printf(“NO”);分析:这是if-else形式,格式为:if(表达式) 语句1 else 语句2其语义是:如果表达式的值为真,则执行语句1,否则执行语句2。本题中,表达式mc=z 结果为真,所以执行printf(“YES”);答案:YES。5.if(表达式)语句,其中”表达式”。A) 必须是逻辑表达式 B) 必须是关系表达式C) 必须是逻辑表达式和关系表达式 D) 可以是任意合法的表达式分析:表达式一般是关系表达式或逻辑表达式,用于描述选择结构的条件,但也可以是其它类型的表达式,只要其合法,在其值非0时都视为真,所以其它表达式也可以做if语句的判断条件。答案:D。6.下列程序运行结果是:。#include void main()int a=1; if(a) printf(“YES”); else printf(“NO”);分析:if(表达式)中的”表达式”可以是任意合法的,其实质是判断表达式是真还是假。本题a的值为1,if(a) printf(“YES”); else printf(“NO”);的含义是判断a是否为真(非0),如果为真则输出”YES”,否则输出”NO”。答案:YES。7.C语言对于嵌套的if语句规定else 总是匹配。A)与最外层的if B)与之前最近的且未配对的ifC)与之前最近的不带else的if D)与最近的 之前的if分析:在C语言中,为了避免语句造成二义性,规定,else总是与它前面最近的未配对的if配对。答案:B。8.下列程序运行结果是:。#include void main() int x=1,y=2,z=3; if(xy) if(yz) printf(“%d”,+z); else printf(“%d”,+y); printf(“%dn”,x+);分析:由if-else匹配规则可知,else与if(yz)配对,也就是说当xy成立时,yz不成立,执行printf(“%d”,+y);yz成立,则执行printf(“%d”,+z);。因为x=1,y=2,很显然xy成立,接着判断yz是否成立,很显然是成立的,那么直接执行printf(“%dn”,+z);然后执行printf(“%dn”,x+);。答案:41。9.若有定义:float x=1.5;int a=1,b=3,c=2;则正确的switch语句是。A) switch(x) B) switch(int)x); case 1.0:printf(“*n”); case 1:printf(“*n”);case 2.0:printf(“*n”); case 2:printf(“*n”); C) switch(a+b) D) switch(a+b) case 1:printf(“*n”); case 1:printf(“*n”); case 2+1:printf(“*n”); case c:printf(“*n”); 分析:C语言提供了另一种用于多分支选择的switch语句,其一般形式为: switch (表达式) case常量表达式1:语句1 case常量表达式2:语句2case常量表达式n:语句ndefault: 语句n+1表达式一般应为整型、字符型、枚举型表达式。A选项中case后是浮点型,应为一个整型、字符型或枚举型常量表达式;B选项switch(int)x);中多了分号,D选项case c:printf(“*n”);中c是一个变量,应为一个常量表达式。答案:C。10.下列程序执行后结果是。#include void main() int a=16,b=21,m=0; switch(a%3) case 0: m+; break; case 1: m+; switch(b%2) default: m+; case 0: m+;break;printf(“%d”,m);分析:switch语句的意思为:计算表达式的值,并依次与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句。如果表达式与所有的case后的常量表达式均不相同时,则执行default后的语句。break语句用于跳出switch语句。本题a%3值为1,执行case 1:m+;以及后面的语句。b%2值为1,执行default: m+;以及后面的语句。答案:3。2.4.3 习题一、选择题1.下列程序段运行后结果是。 int a,b,c; a=1;b=2;c=3; if(ab) c=a;b=c; printf(“a=%d,b=%d,c=%d”,a,b,c);A) a=1,b=3,c=3B) a=1,b=3,c=2C) a=1,b=2,c=3D) a=2,b=1,c=12.下列程序运行后的结果是。#include void main() int a=1,b=2,c=3; if(a+=1&(+b=3&c+=3) printf(“%d,%d,%dn”,a,b,c);A) 1,2,3B) 2,3,5C) 2,2,3D) 2,3,43.与y=(x0?1:x0) y=1; B) if(x) else if(x0) y=1; else y=0; else if(x=0) if(x0) y=1; if(x0) y=-1;else if(x=0) y=0; else y=-1;else y=-1;4.有以下程序,执行后结果是。#include void main() int a=5,b=4,c=3,d=2; if(abc) printf(“%dn”,d); else if(c-1)=d)=1) printf(“%dn”,d+1); else printf(“%dn”,d+2);A) 2 B) 3 C) 4 D) 55.若有定义:float w; int a,b;char c;则合法的switch语句是。 A) switch(b)B) switch(a); case 1.0:printf(“*n”); case 1 printf(“*n”);case 2.0:printf(“*n”); case 2 printf(“*n”); C) switch(b)D) switch(w) case 1:printf(“*n”); case 1:printf(“*n”); case 1+2:printf(“*n”); case c:printf(“*n”); 6.下列程序运行后的结果是。#include void main() int x=1,a=0,b=0; switch(x) case 0:b+;case 1:a+;case 2:a+;b+;printf(“%d,%dn”,a,b);A) 2,1B) 1,1 C) 1,0 D) 2,2二、填空题1.能正确表述逻辑关系20x30或x-100的C语言表达式是。2.设int a=0,b=0,c=0;c=a+&b+;则a,b,c的值分别是。3.若从键盘输入58,则以下程序输出结果是。#include void main() int a;scanf(“%d”,&a);if(a50) printf(“%d”,a);if(a=58) printf(“%d”,a);4.下列程序运行后的结果是 。#includevoid main() int x=10,y=20,t=0;if(x=y) t=x;x=y;y=t;printf(“%d,%dn”,x,y);5. 当int a=1,b=3,c=5,d=4;时,执行下列一段程序后,x的值:。 if(ab) if(cd) x=1; else if(ac) if(bd) x=2; else x=3; else x=6; else x=7; 6.下列程序运行后的结果是 。#include void main() int x=1,y=0,a=1,b=0; switch(x) case 1:switch(y) case 0:a+; case 1:b+;break; case 2:a+;b+;break; printf(“a=%d,b=%dn”,a,b);三、编程题1.要求输入三个数,输出其中最大值。2.由键盘输入3个数,若输入的这3个数可以构成三角形,则计算以这3个数为边长的三角形周长;如果不能,则输出提示错误信息。3.从键盘上输入一个整数判断其奇偶以及正负。4.判断方程ax2+bx+c=0的根的个数。5.从键盘输入表示年份的整数,判断是否为闰年。判断闰年的方法是:能被400整除的年是闰年;或者凡是能被4整除但不能被100整除的年是闰年。2.4.4 本节易错知识点本节阐述了逻辑表达式、if、if-else、if-else和switch语句的具体用法。1.在逻辑表达式运算中应注意,如果在某一步已得到了整个表达式结果,则后面的部分将不再计算。例如:c=b&+a;如果这里b为0,那么+a将不再执行,仍为原值。2.在if语句中,应该注意if语句中的表达式可以为所有的合法的表达式。例如:int a=1;if(a=0) printf(“Yes”); else printf(“No”); 3.在if语句3种形式中,如果要想在满足条件是执行一组语句,必须使用括起来一个复合语句,但在后面不能加分号。4.在使用switch()语句时应注意:在case后的各个常量表达式值都不能相同;case后允许有多个语句,可以不用 括起来;若每个分支后,都有break语句,则各case和default子句先后顺序可以变动而不影响程序结果;default子句可以省略不用。2.4.5 实验指导实验名称 选择结构程序设计一、实验目的1.学会正确使用关系运算符和关系表达式;2.学会正确使用逻辑运算符和逻辑表达式以及关系表达式等;3.熟练掌握if语句和switch语句;4.熟悉选择结构程序中的语句执行过程,掌握选择结构程序设计的方法。二、实验内容与要求1.编写程序,判断从键盘上输入的一个字符,并按下列要求输出。1) 若该字符是数字,输出字符串”0-9”;2) 若该字符是大写或者小写字母,输出字符串”A-z”;3) 若该字符是其他字母,输出”!,”。#include void main() char c; scanf(“%c”,&c); if( ) printf(“0-9n”); else if( ) printf(“A-z”); printf(“!,n”);完善上述源程序,对源程序进行编译、连接,运行程序,并写出结果。序号输入数据预期结果运行结果132G3#2. 编程并上机调试运行1)给出一个不多于4位的正整数,求它是几位数?2)给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90分及以上为A, 8089为B,7079为C,6069为D,60以下为E。用switch语句来实现。3)输入4个整数,要求按从大到小顺序输出。4) 输入3个整数,将最大数与最小数交换。5) 输入一个字符,如果是数字字符,把它转换成相对应的数字并输出;如果不是,则以带符号的十进制整数形式输出。2.5 循环结构程序设计2.5.1 要点导读1.while语句while语句一般形式为:while(表达式) 语句。它的执行过程为:计算表达式的值,当值为真,执行循环体语句。其特点是:先判断,后执行。2. do-while语句do-while语句一般形式为:do 循环体语句 while(表达式);它的执行过程:先执行循环体一次,再判断表达式的值,若为真则继续循环,否则终止循环。3.for语句for语句是C语言所提供的功能更强,使用更广泛的一种循环语句。for语句的一般形式是:for(表达式1;表达式2;表达式3) 其中表达式1一般是赋值表达式,用来给循环变量赋初值。表达式2一般为关系表达式或逻辑表达式,表示循环条件,当表达式2为真时,则继续循环,否则循环结束。表达式3一般是赋值语句或自增(自减)语句,用来修改循环变量的值,表示循环变量的变化方式。4.转移语句程序中的语句通常总是按顺序方向或按语句功能定义的方向执行的。如果需要改变程序的正常流向,可以使用转移语句。在C语言中提供了4种转移语句:break,continue,return,goto5.循环嵌套一个循环语句的循环体内包含另一个完整的循环语句,称为循环的嵌套。循环的嵌套可以组成多重嵌套。2.5.2 经典例题分析1.下列程序段中,while循环执行的次数是。int k=0;while(k=1) -k;A)无限次B)不能执行C)一次也不执行D)执行1次分析:while语句一般形式为while(表达式) 语句,执行过程为:计算表达式的值,当值为真(非0)时,执行循环体语句。其特点是先判断,后执行。本题k初始值为0,当进入循环的判断表达式后k的值为1,为真。因为判断表达式是一个赋值表达式,每次循环执行完之后,k的值总是被赋值为1,判断表达式一直为真,所以执行无限次。答案:A。2.下列两个程序输入11后结果分别是。#include #include void main() void main() int sum=0,i; int sum=0,i; scanf(“%d”,&i); scanf(“%d”,&i); while(i=10) do sum=sum+i; sum=sum+i; i+; i+; while(i=10); printf(“sum=%dn”,sum); printf(“sum=%dn”,sum); 分析:while(表达式) 语句。计算表达式的值,当值为真时,执行循环体语句。do 循环体语句 while(表达式);先执行循环体一次,在判断表达式的值,若为真则继续循环,否则终止循环。答案:0,11。3.for(表达式1;表达式3)可理解为。A) for(表达式1;0;表达式3)B) for(表达式1;1;表达式3)C) for(表达式1;表达式1;表达式3)D) for(表达式1;表达式3;表达式3)分析:for语句的一般形式是for(表达式1;表达式2;表达式3)。其中表达式2一般为关系表达式或逻辑表达式,表示循环条件,当表达式2为真时,则继续循环,否则循环结束。题目中表达式2为空,也就是说本循环没有设立条件,那么循环为无限循环,所以表达式2一直为真(非0)。答案为B。4.下列程序的运行结果是。#include void main( ) int c=0,k; for(k=1;k3;k+) switch(k) default: c+=k; case 2: c+;break; case 4:c+=2;break;printf(“%dn”,c); 分析:for语句执行过程是 先求表达式1。求解表达式2,若为真,则执行for语句的内嵌语句,然后执行第3步。若为假,则结束循环,转到第5步。求解表达式3。转回上面第2步。循环结束。当k为1,switch( )语句执行完毕后c为2;当k为2,switch( )语句执行完毕后c为3,当k为3时,循环结束,执行printf(“%dn”,c);语句。答案:3。5.执行以下程序后,输出#的个数是。#include void main() int i,j;for(i=1;i5;i+)for(j=2;j=i;j+) putchar(#); 分析:一个循环语句的循环体内包含一个完整的循环语句,称为循环嵌套。循环的嵌套可以组成多重嵌套。各种循环语句之间可以相互嵌套。本题是一个二重循环,执行过程为:把1赋给i,判断i是否小于5,如果小于,则执行第二个for语句循环,直到第二个for语句的循环结束,返回上一层执行i的自加,判断是否小于5,如果条件成立,则继续执行第二个for循环。直到第一个循环的i等于5时,整个循环结束。所以输出6个# 。答案:6。6.以下程序运行后的输出结果是。 #include void main() int i=0,s=0; for(;) if(i=3|i=5) continue; if(i=6) break; i+; s+=i;printf(“%dn”,s); A) 10 B) 13 C) 21 D) 程序进入死循环分析:break语句用在switch语句或循环语句中,其作用是跳出switch语句或跳出本层循环,转去执行后面的程序。continue语句只能用在循环体中,其作用是结束本次循环,即不再执行循环体中continue语句之后的语句,转入下一次循环。答案:D。2.5.3 习题一、选择题1.语句while(!c);中的条件!c等价于。A) c=0B) c!=1C) c!=0D) -c2.设有如下程序,运行结果是。 #include void main() int y=10; for( ;y0;y-) if(y%3=0) printf(“%d”,-y);A) 852B) 963C) 1063D)7413.以下程序段的输出结果是。 int x=3; do printf(“%3d”,x-=2); while(!(-x);A) 1 0B) 3 -2C) 1 -2D) 14.执行下面的程序后,a的值是。#include void main() int a,b; for(a=1,b=1;a=20) break; if(b%3=1) b+=3;continue; b-=5; printf(“%d”,a);A) 7B) 8C) 9D) 105.下列程序段的输出结果是。 int i,j,m=0; for(i=1;i=15;i+=4) for(j=3;j=19;j+=4) m+; printf(“%dn”,m);A) 12B) 15C) 20D) 25二、填空题1.要使下列程序段输出10个整数,请填入一个整数。for(i=0;i= ;printf(“%dn”,i+=2); 2.若输入字符串:abcde,则以下while循环体将执行 次。#include void main() char ch; while(ch=getchar()=e) printf(“*”);3.下列程序在运行时,如果从键盘输入1298,则结果是。#include void main() int n1,n2; scanf(“%d”,&n2); while(n2!=0) n1=n2%10; n2=n2/10; printf(“%d”,n1);4.下列程序运行结果是 。 #include void main() int i,a=3,b=4,t; for(i=1;i=5;i+)switch(i%5) case 0:b=3; case 1:t=a;a=b;b=t;break; default: b=5;printf(“%d,%dn”,a,b);5.下列程序运行结果是 。#include void main() int i,j,s=0; for(i=1;i=4;i+) for(j=1;j=5-i;j+) s=s+i*j; printf(“%d”,s);6.下列程序运行后结果是 。#includevoid main() int a=1,b; for(b=1;b10;b+) if(a
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!