C语言程序设计练习题库

  • 格式:doc
  • 大小:142.00 KB
  • 文档页数:20

C语言习题集1-4章练习题一.选择题1、以下叙述中正确的是()。

A、用C程序实现的算法必须要有输入和输出操作B、用C程序实现的算法可以没有输出但必须要有输入C、用C程序实现的算法可以没有输入但必须要有输出D、用C程序实现的算法可以既没有输入也没有输出2、以下叙述中错误的是()A、用户所定义的标识符允许使用关键字B、用户所定义的标识符应尽量做到‚见名知意‛C、用户所定义的标识符必须以字母或下划线开头D、用户定义的标识符中,大、小写字母代表不同标识3、以下不正确的C语言标识符是()A、 intB、 a_1_2C、 ab1exeD、 _x4、下面的注释那个写法是正确的()A、/*this is a comment*\B、/*this is a comment/* it is error*/C、/*this is a comment*/D、 //this one seems like a comment doesn’t it5、C语言提供的不正确的转义字符是()A、’\\’B、’\’’C、’074’D、’\0’6、字符串常量"ab\\\c\ted\3\76"的长度是()A、 9B、 10C、16D、87、在定义变量时同时给a、b、c三个整型变量赋初值5的正确语句是()A、int a=b=c=5;B、int a, b, c = 5;C、 int a =5 ;b = 5; c =5 ;D、int a =5, b = 5, c =5;8、在C语言中,要求参加运算的数必须时整数的运算符是()A、/B、*C、%D、=9、是C语言提供的合法的数据类型关键字()A、FloatB、signedC、 intD、Char10、若int k=7,x=12;则能使值为3的表达式是()A、x%=(k%=5)B、x%=(k-k%5)C、x%=k-k%5D、(x%=k)-(k%=5)11、对于下述语句,若将10赋给变量k1和k3,将20赋给变量k2和k4,则应按()方式输入数据。

int k1,k2,k3,k4;scanf(‚%d%d‛,&k1,&k2);scanf(‚%d,%d‛,&k3,&k4);A、1020↙B、10 20↙C、10,20 ↙D、10 20↙1020↙ 10 20↙ 10,20↙ 10,20↙12、若定义x为double型变量,则能正确输入x值的语句是()A、scanf(‚%f‛,x);B、scanf(‚%f‛,&x);C、scanf(‚%lf‛,&x);D、scanf(‚%5.1f‛,&x);13、以下程序片段()main ( ){ int x=0,y=0,z=0;if (x=y+z) printf(‚***‛);else printf(‚###‛);}A、有语法错误,不能通过编译B、输出:***C、可以编译,但不能通过连接,所以不能运行D、输出:###14、下述程序的输出结果是()main ( ){ int a=0,b=0,c=0;if (++a>0 | | ++b>0)++c;printf(‚%d,%d,%d‛,a,b,c);}A、0,0,0B、1,1,1C、1,0,1D、0,1,115、以下程序输出结果是()main ( ){ int x=1,y=0,a=0,b=0;switch(x) {case 1:switch (y) {case 0 : a++ ; break ;case 1 : b++ ; break ;}case 2:a++; b++; break;case 3:a++; b++;}printf(‚a=%d,b=%d‛,a,b);}A、a=1,b=0B、a=2,b=1C、a=1,b=1D、a=2,b=216、下述程序的输出结果是()main ( ){ int a,b,c;int x=5,y=10;a=(--y==x++) ? –y : ++x ;b=y++ ; c=x ;printf(‚%d,%d,%d‛,a,b,c);}A、6,9,7B、6,9,6C、7,9,6 D 、7,9,717、当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是()if (a<b)if (c<d) x=1;elseif (a<c)if (b<d) x=2;else x=3;else x=6;else x=7;A、1B、2C、3D、418、若有定义:int a=3,b=2,c=1;并有表达式:①a%b,②a>b>c,③b&&c+1,④c+=1,则表达式值相等的是()A、①和②B、②和③C、①和③D、③和④19、以下程序的运行结果是()int main(){int m=5;if(m++>5)printf( ‚%d\n‛,m);elseprintf( ‚%d\n‛,m--);}A、 4B、5C、 6D、720、两次运行下面的程序,如果从键盘上分别输入7和5,则输出结果是()int main(){int a;scanf("%d",&a);if(a++>6)printf("%d",a);elseprintf("%d\n",a--)}A、7和5B、8和6C、8和5D、7和6二.填空题1、C程序是由构成的,一个C程序中至少包含。

因此,是C 程序的基本单位。

2、C 语言中的标识符只能由、和三种字符组成,且第一个字符必须是。

3、C语言中包含了三种基本的结构,它们分别为:、、。

4、设x,i,j,k都是int型变量,表达式x=(i=4,j=16,k=32)计算后,x的值为。

5、一般地,调用标准字符或格式输入输出库函数时,文件开头应有以下预编译命令:。

6、C语言提供三种逻辑运算符,按优先级高低它们分别是,,。

7、将条件‚y能被4整除但不能被100整除,或y能被400整除‛写成逻辑表达式。

8、在C语言中的实型变量分为两种类型,它们是和双精度型。

9、执行以下程序段后,a= ,b= ,c= 。

int x=10,y=9 ;int a,b,c ;a = (x--=y++) ? x-- : y++ ;b = x++ ;c = y ;三.编程题1、输出1000以内所有的水仙花数(水仙花数是指一个正三位数,其各个位数的立方和等于该数本身)。

2、编写一个程序,输入三个数,使其按照从小到大的顺序输出。

循环练习题一.选择题1、C语言中while和do-while循环的主要区别是()A.do-while的循环体至少无条件执行一次B.while的循环控制条件比do–while的循环控制条件严格C.do-while允许从外部转到循环体内D.do-while的循环体不能是复合语句2、以下描述中正确的是()A.由于do -while循环中循环语句中只能是一条可执行语句,所以循环体内不能使用复合语句。

B.do-while循环由do开始,且while结束,在while(表达式)后面不能写分号。

C.在do-while循环体中,一定要有能使while后面表达式的值变为零(‚假‛)的操作。

D.do-while循环中,根据情况可以省略while3、下面有关for循环的正确描述是()A.for循环只能用于循环次数已经确定的情况B.for 循环是先执行循环体语句,后判断表达式C.在for循环中,不能用break语句跳出循环体D.for循环的循环体语句中,可以包含多条语句,但必须花括号括起来4、对for(表达式1;; 表达式3)可理解为()A.for(表达式1;0;表达式3)B.for(表达式1;1;表达式3)C.for(表达式1;表达式1;表达式3)D.for(表达式1;表达式3;表达式3)5、以下叙述正确的是:()A. do---while语句构成的循环不能用其他语句构成的循环来代替。

B. do---while语句构成的循环只能用break语句退出。

C.用do---while语句构成的循环,在while 后的表达式为非零时结束循环。

D.用do---while语句构成的循环,在while后的表达式为零时结束循环。

6、for(i=0;i<10;i++);结束后,i的值是()A. 9B. 10C. 11D. 127、下面程序的循环次数是():int k=0;while(k<10){if(k<1) continue;if(k==5) break;k++;}A. 5B. 6C. 4D. 死循环,不能确定循环次数8、以下for循环的次数是()for(x=0,y=0;(y=123)&&(x<4);x++);A.是无限循环B.循环次数不定C.4次D.3次9、若i为整型变量,则以下循环执行的次数是()for(i=2;i=0;) printf(‚%d‛,i--)A.无限次B.0次C.1次D.2次10、若运行以下程序时,从键盘输入2473<CR>,则下面程序的运行结果是()#include<stdio.h>main( ){int c;while((c=getchar( ))!=’\n’)switch(c-‘2’){case 0:case 1:putchar(c+4);case 2:putchar(c+4);break;case 3:putchar(c+3);default:putchar(c+2);break;}printf(‚\n‛);}A.668977 B.668966 C.66778777 D.668876611、下面程序的功能是从键盘输入的一组字符中统计出大写字母个数m和小写字母个数n,并输出m,n中较大者,请选择填空。

#include<stdio.h>main( ){int m=0,n=0;char c;while(()!=’\n’){if(c>=’A’&&c<=’Z’) m++;if(c>’a’&&c<=’z’) n++;}printf(‚%d\n‛,m<n? ());}A. c==getchar( )B.getchar( )C.c=getchar()D.scanf(‚%c‛,c)A. n:mB.m:nC.m:mD.n:n12、下面程序的功能是将从键盘输入的一对数,由小到大排序输出。

当输入一对相等的数时结束循环,请选择填空()。

main(){int a,b,t;scanf(‚%d,%d‛,&a,&b);while( ){if(a>b) {t=a;a=b;b=t;}printf(‚%d,%d\n‛,a,b);scanf(‚%d,%d‛,&a,&b);}}A.!a=bB.a!=bC.a==bD.a=b13、下面程序段的执行结果是()a=1;b=2;c=2;while(a<b<c ) {t=a;a=b;b=t;c--;}printf("%d,%d,%d",a,b,c);A.1,2,0B.2,1,0C.1,2,1D.2,1,114、下面程序的输出结果是()main(){int s,k;for(s=1,k=2;k<5;k++)s+=k;printf(‚%d\n‛,s);}A. 1B. 9C. 10D. 1515、要使下面程序输出10个整数,则在下画线处填入正确的数是():for(i=0;i<= ;)printf(‚%d\n‛,i+=2);A. 9B. 10C. 18D. 2016、运行下面程序:main(){ int i=10,j=0;do{ j=j+i;i--;}while(i>5);printf(‚%d\n‛,j);}输出结果是():A. 45B. 40C. 34D. 5517、运行下面程序main(){ int k=0,a=1;while(k<10){for( ; ;){ if((k%10)==0) break;else k--;}k+=11; a+=k;}printf(‚%d %d\n‛,k,a);}则输出的结果是()A. 21 32B. 21 33C. 11 12D. 10 1118、有如下程序:main(){ int x=3;do{printf(‚%d‛,x--);}while(!x);}该程序的执行结果是:()A. 3 2 1B. 2 1 0C. 3D. 219、若k为整型变量,则下面while循环执行的次数为:()k=10;while(k==0) k=k-1;A. 0B. 1C. 10D. 无限次20、若i为整型变量,则以下循环执行的次数是()for(i=2;i==0;)printf(‚%d‛,i--);A.无限次 B. 0次 C. 1次 D. 2次21、以下循环体的执行次数是;()main(){int i,j;for(i=0,j=3;i<=j;i+=2,j--)printf(‚%d\n‛,i);}A. 3B. 2C. 1D. 022、执行以下程序后,输出结果是:()main(){ int y=10;do { y--;}while(--y);printf(‚%d‛,y--);}A. -1B. 1C. 8D. 023、以下程序的输出结果是:()main(){ int a,b;for(a=1,b=1;a<=100;a++){if(b>=10) break;if(b%3==1) {b+=3; continue;}}printf(‚%d‛,a);}A. 101B. 3C. 4D. 524、下列程序段不是死循环的是()A.int I=100 ;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;25、下面程序段的运行结果是()for(x=3;x<6;x++)printf((x%2)?(‚**%d‛):(‚##%d\n‛),x); A.**3 B.##3 C.##3 D.**3##4##4 **4 **4##5 **5**5 ##5二.填空题1、下面程序的运行结果为:#include<stdio.h>main(){int a=10,y=0;do{a+=2;y+=a;if(y>10) break;}while(a<8);printf("a=%d,y=%d\n",a,y);}2、从键盘输入1 2 3 4 5 -1 回车,则下面程序运行的结果是:main(){ int n,k=0;do{ scanf(‚%d‛,&n);k+=n;}while(n!=-1);printf(‚k=%d,n=%d‛,k,n);}3、下面程序的运行结果为:main(){int i,j,s=0;for(i=1,j=5;i<j;i++,j--)s+=i*10+j;printf(‚\n%d‛,s);}4、下面程序的运行结果是main(){int i=10,s=0;for(;--i;)if(i%3==0)s+=i;s++;printf(‚\ns=%d‛,s);}5、下面程序的运行结果是main(){int a=2,n=5,s;s=a;for(;--n;)s=s*10+a;printf(‚%d‛,s);}6、下面的程序运行时,循环体语句‚a++‛运行的次数为:main(){int i,j,a=0;for(i=0;i<2;i++)for(j=4;j>=0;j--)a++;printf("%d",a);}7、下面的程序运行后,a的值为:main(){ int i,j,a=0;for(i=0;i<2;i++) a++;for(j=4;j>=0;j--) a++;printf("%d",a);}8、下面程序的运行结果为:int i=1,s=3;do{s+=i++;if(s%7==0) continue;else ++i;}while(s<15);printf(‚%d‛,i);9、当运行以下程序时,从键盘输入China# 回车,则下面程序的运行结果是:#include ‚stdio.h‛main(){ int v1=0,v2=0;char c;while((c=getchar())!=’#’){ switch(c){ case ‘a’:case ‘h’:default:v1++;case ‘o’:v2++;}}printf(‚%d,%d\n‛,v1,v2);}10、以下程序输入一行字符(以回车结束输入),统计其中所有数字字符的个数。