第三单元循环结构练习题选择题:1、有以下程序执行后的输出结果是()。
main( ){ int i,s=0;for(i=1;i<10;i+=2) s+=i+1;printf("%d\n",s);}A.自然数1~9的累加和 B.自然数1~10的累加和C.自然数1~9中的奇数之和 D.自然数1~10中的偶数之和2、以下关于for语句的说法不正确的是()。
A. for循环只能用于循环次数已经确定的情况B. for循环是先判断表达式,后执行循环体语句C. for循环中,可以用break跳出循环体D. for循环体语句中,可以保含多条语句,但要用花括号括起来3、若i和k都是int类型变量,有以下for语句for(i=0,k=-1;k=1;k++) printf("*****\n");下面关于语句执行情况的叙述中正确的是()。
A.循环体执行两次B.循环体执行一次C.循环体一次也不执行D.构成无限循环4、已知 int t=0; while(t=1){...} 则以下叙述正确的是()。
A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对5、设有以下程序段int x=0,s=0;while(!x!=0)s+=++x;printf("%d",s); 则A)运行程序段后输出0B)运行程序段后输出1C)程序段中的控制表达式是非法的D)程序段执行无限次6、设i,j,k均为int型变量,则执行完下面的for语句后,k的值为()。
for(i=0, j=10; i<=j; i++, j- -)k=i+j;A.6B.9C.10D.117、C语言中,break; 语句可以用于循环语句和( )语句中。
A.ifB.switchC.forD.while8、for(i=0; i<=15; i++) printf("%d", i ); 循环结束后,i 的值为()。
A.14B.15C.16D.179、与语句“while(!x)”等价的语句是()。
A. while(x==0)B. while(x!=0)C. while(x==1)D. while(x!=1)10、下述程序段中,while循环执行次数是()。
int k=0;while(k=1) k++;A.无限次B. 有语法错误,不能执行C.一次也不执行D. 执行一次11、以下程序中,while循环的次数是()。
#include <stdio.h>void main( ){int i=0;while(i<10) { if(i<1) continue; if(i= =5)break; i++;}}A. 1B. 死循环,不能确定次数C. 6D. 1012.下面程序段int k=2;while (k=0) {printf(“%d”,k);k--;}则下面描述中正确的是。
A)while循环执行10次 B)循环是无限循环C)循环题语句一次也不执行 D)循环体语句执行一次13.以下程序段的循环次数是。
for (i=2; i==0; ) printf(“%d” , i--) ;A)无限次 B)0次 C)1次 D)2次14. int i=100;以下不是死循环的程序段是。
A)while (1) {i=i%100+1 ;if (i>100) break ;} B)for ( ; ; ) ;C) int k=0; do { ++k; } while (k>=0); D)int s=36;while(s) ;--s ;15.下述程序段的运行结果是。
int a=1,b=2, c=3, t;while (a<b<c) {t=a; a=b; b=t; c--;} printf(“%d,%d,%d”,a,b,c);A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,116.下面程序的功能是从键盘输入一组字符,从中统计大写字母和小写字母的个数,选择填空。
main ( ){ int m=0,n=0;char c;while ((【】) ! ’\n’){if (c>=’A’ && c<=’Z’) m++;if (c>=’a’ && c<=’z’) n++;} }A)c=getchar( ) B)getchar( ) C)c==getchar( ) D)scanf(“%c”,&c)17.下述语句执行后,变量k的值是。
int k=1;while (k++<10);A)10 B)11 C)9 D)无限循环,值不定18.下面for循环语句。
int i,k;for (i=0, k=-1; k=1; i++, k++)printf(“***”);A)判断循环结束的条件非法 B)是无限循环C)只循环一次 D)一次也不循环19. 以下for循环的执行次数是。
for (x=0,y=0; (y=123) && (x<4) ; x++) ;A)无限循环 B)循环次数不定 C)4次 D)3次20.以下是死循环的程序段是。
A) for (i=1; ; ) {if (i++%2==0) continue ;if (i++%3==0) break ;}B) i=32767; do { if (i<0) break ; } while (++i) ;C) for (i=1 ; ;) if (++I<10) continue ;D. i=1 ; while (i--);21.以下程序段。
x=-1;do{ x=x*x; }while (!x);A)是死循环 B)循环执行2次 C)循环执行1次 D)有语法错误22.下面程序的功能是在输入的一批正数中求最大者,输入0结束循环,选择填空。
main ( ){ int a,max=0;scanf(“%d”,&a);while (【】) { if (max<a) max=a ; scanf (“%d”,&a); }printf(“%d”,max);}A)a==0 B)a C)!a==1 D)!a23.以下不是死循环的语句是。
A)for (y=9,x=1;x>++y;x=i++) i=x ;B)for ( ; ; x++=i ) ;C)while (1) { x++ ; }D)for (i=10 ; ; i--) sum+=i ;读程题:1.以下程序的输出结果是。
main(){ int i, a[6]={2,3,4,5,6,7};for(i=1; i<6; i+=2)printf("%d ", a[i]);}2.写出下面程序运行的结果。
main ( ){ int i=5 ;for (; i<5 ;){ i++;if(i%4==0)printf(“%-2d”,i);else continue;}}3.写出下面程序运行的结果。
main ( ){ int a,b;for (a=1,b=1 ; a<=100 ; a++) {if (b>=20) break;if (b%3==1) { b+=3 ; continue ; }b-=5;}printf(“%d\n”,a);}4.写出下面程序运行的结果。
main ( ){ int k=1,n=263 ;do { k*= n%10 ; n/=10 ; } while (n) ;printf(“%d\n”,k);}5.若执行以下程序时从键盘上输入3和4,则输出结果是。
main( ){ int a,b,s;scanf("%d%d",&a,&b);s=a;if(a<b) s=b;s*=s;printf("%d\n",s);}6.写出下面程序运行的结果。
main ( ){ int i ;for(i=1;i<10;i++){if(i%3) i++;++i ;printf(“%d ”,i) ;}}编程题:1.编写程序输出如下图形。
***************2.鸡兔问题:假设鸡兔共有30只,脚数共有90只,利用循环编写一个程序求出鸡和兔各有多少只。
3.判断从键盘输入的数m 是否为素数(素数:只能被1和本身整除的数)。
4.利用循环从键盘输入100个数,找出其中的最小值。
5.编程求1-21+31-41+……+991-1001的值。
6.编程求s=1+(1+2)+(1+2+3)+……+(1+2+3+……+n)的值。
7.输出100-999之间的所有水仙花数,每行输出5个(水仙花数:三位数的各位数字的立方之和等于这个三位数本身,如153=1*1*1+5*5*5+3*3*3)。
8.编程打印一下图形(行n 的值由键盘输入)。
****************************文件、结构体、位运算1、左移运算:int a=4,c=a>>1;变量c 的值是()。
A.2B.8C. 9D. 02、在位运算中,操作数每右移一位,其结果相当于()。
A.操作数乘以2B.操作数除以2C. 操作数乘以4D. 操作数除以23、表达式“12|012”的值是()。
A.1B.0C. 14D. 124.以下程序的输出结果是()。
main(){int a,b;a=4|3;b=4&3;printf(“%d %d”,a,b);}A.7 0B.0 7C. 1 1D. 43 05.表达式0x13|0x17的值是()。
A.0x13B.0x17C. 0xE8D. 0xC86.表达式19&23的值是()。
A.0x7B.0x13C. 0xf8D. 0xec7、若有以下说明:struct st{int a;int b[2];}a;则下述正确的是(已知int型变量占两个字节)()。
A.结构体变量a与结构体成员a同名,定义非法。
B.程序只在执行到该定义是才为结构体变量a分配存储单元。
C.程序运行时为结构体变量a分配六个自己存储单元D.以上说法都不对8、若有以下定义和语句:struct student{int num;char name[12];struct{ int year;int month;int day;} birth;}struct student s;设变量s中“生日”是“2013年1月1日”,下列对“生日”的正确赋值方式是()。
A.year=2013;month=1;day=1;B.birth.year=2013; birth.month=1; birth.day=1;C.s.year=2013; s.month=1; s.day=1;D.s.birth.year=2013; s.birth.month=1; s.birth.day=1;9、若有以下定义和语句:struct st{int x;char y;}s;则下列赋值正确的是()。