C语言程序设计练习题库.doc_第1页
C语言程序设计练习题库.doc_第2页
C语言程序设计练习题库.doc_第3页
C语言程序设计练习题库.doc_第4页
C语言程序设计练习题库.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言习题集1-4章练习题一选择题1、以下叙述中正确的是( )。A、用C程序实现的算法必须要有输入和输出操作B、用C程序实现的算法可以没有输出但必须要有输入C、用C程序实现的算法可以没有输入但必须要有输出D、用C程序实现的算法可以既没有输入也没有输出2、以下叙述中错误的是( )A、用户所定义的标识符允许使用关键字B、用户所定义的标识符应尽量做到“见名知意”C、用户所定义的标识符必须以字母或下划线开头D、用户定义的标识符中,大、小写字母代表不同标识3、以下不正确的C语言标识符是( )A、 int B、 a_1_2 C、 ab1exe D、 _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 doesnt it 5、 C语言提供的不正确的转义字符是( )A、B、C、074D、06、字符串常量abcted376的长度是( )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、Float B、signed C、 int D、Char10、若int k=7,x=12;则能使值为3的表达式是( )A、x%=(k%=5) B、x%=(kk%5) C、x%=kk%5 D、(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,2012、若定义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 (+a0 | | +b0)+c;printf(“%d,%d,%d”,a,b,c);A、0,0,0 B、1,1,1 C、1,0,1 D、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=0 B、a=2,b=1 C、a=1,b=1 D、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,7 B、6,9,6 C、7,9,6 D 、7,9,717、当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是( )if (ab)if (cd) x=1;elseif (ac)if (bbc,b&c+1,c+=1,则表达式值相等的是( )A、和 B、和 C、和 D、和19、以下程序的运行结果是( )int main() int m=5; if(m+5) printf( “%dn”,m); else printf( “%dn”,m-); A、 4 B、5 C、 6 D、720、 两次运行下面的程序,如果从键盘上分别输入7和5,则输出结果是( )int main() int a; scanf(%d,&a); if(a+6) printf(%d,a); else printf(%dn,a-)A、7和5 B、8和6 C、8和5 D、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、 语言中while和do-while循环的主要区别是( ).do-while的循环体至少无条件执行一次.while的循环控制条件比dowhile的循环控制条件严格.do-while允许从外部转到循环体内.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;i10;i+);结束后,i的值是( )A. 9 B. 10 C. 11 D. 127、 下面程序的循环次数是( ): int k=0; while(k10)if(k1) continue;if(k=5) break;k+;A. 5 B. 6 C. 4 D. 死循环,不能确定循环次数8、 以下for循环的次数是( )for(x=0,y=0;(y=123)&(x4);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,则下面程序的运行结果是( )includemain( )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”);A668977 B.668966 C.66778777 D.668876611、 下面程序的功能是从键盘输入的一组字符中统计出大写字母个数m和小写字母个数n,并输出m,n中较大者,请选择填空。#includemain( )int m=0,n=0;char c;while(( )!=n)if(c=A&ca&c=z) n+;printf(“%dn”,mb) t=a;a=b;b=t;printf(“%d,%dn”,a,b);scanf(“%d,%d”,&a,&b);A.!a=b B.a!=b C.a=b D.a=b13、 下面程序段的执行结果是( )a=1;b=2;c=2;while(abc ) 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,114、 下面程序的输出结果是( )main()int s,k;for(s=1,k=2;k5;k+)s+=k;printf(“%dn”,s);A. 1 B. 9 C. 10 D. 1515、 要使下面程序输出10个整数,则在下画线处填入正确的数是( ): for(i=0;i5);printf(“%dn”,j);输出结果是( ):A. 45 B. 40 C. 34 D. 5517、 运行下面程序main() int k=0,a=1; while(k10) for( ; ;) if(k%10)=0) break; else k-;k+=11; a+=k;printf(“%d %dn”,k,a);则输出的结果是( )A. 21 32 B. 21 33 C. 11 12 D. 10 1118、 有如下程序:main() int x=3;doprintf(“%d”,x-);while(!x);该程序的执行结果是:( )A. 3 2 1 B. 2 1 0 C. 3 D. 219、 若k为整型变量,则下面while循环执行的次数为:( )k=10;while(k=0) k=k-1;A. 0 B. 1 C. 10 D. 无限次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(“%dn”,i);A. 3 B. 2 C. 1 D. 022、 执行以下程序后,输出结果是:( )main() int y=10;do y-;while(-y);printf(“%d”,y-);A. -1 B. 1 C. 8 D. 023、 以下程序的输出结果是:( )main() int a,b; for(a=1,b=1;a=10) break; if(b%3=1) b+=3; continue;printf(“%d”,a);A. 101 B. 3 C. 4 D. 524、 下列程序段不是死循环的是( )A. int I=100 ;while(1)I=I%100+1;if(I100)break;B. for(;)C. int k=0;do+k;while(k=0);D. int s=36; while(s); -s;25、 下面程序段的运行结果是( )for(x=3;x6;x+)printf(x%2)?(“*%d”):(“#%dn”),x);A*3 B.#3 C.#3 D.*3#4 #4 *4 *4#5 *5 *5 #5 二.填空题1、 下面程序的运行结果为: #include main()int a=10,y=0;doa+=2;y+=a;if(y10) break;while(a8);printf(a=%d,y=%dn,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;ij;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=0;j-)a+;printf(%d,a);7、 下面的程序运行后,a的值为: #include main() int i,j,a=0;for(i=0;i=0;j-) a+;printf(%d,a);8、 下面程序的运行结果为: int i=1,s=3;dos+=i+;if(s%7=0) continue;else +i;while(s=0 ch=9)s+; printf(“%dn”,s); 11、 以下程序的功能是求两个整数的最大公约数,运行时输入两个数。 #include “stdio.h” main() int m,n,r,t; scanf(“%d,%d”,&m,&n); while( )m=n; ; printf(“它们的最大公约数为%dn”,n); 12、 下面的程序输出200-300之间的全部素数的和,请填空: #include main( ) int i,j,f,s=0; for(i=201;i300;i+=2) f= ; for(j=2;j=i/2;j+) if(i%j = =0) f=0; ; if( )s+=i; printf(“200-300之间的全部素数的和为%dn”,s); 三、编程题1、 求1-2+3-4+99-100。2、 任意输入10个数,分别计算输出其中的正数和负数之和。3、 计算1-100以内的所有含6的数的和。4、 编写程序输出下面图形。1 23 45678905、 编写程序输出下面图形 *数组练习题一、选择题1、 在C语言中,引用数组元素时,其数组下标的数据类型允许是( ) A.整型常量 B.整型表达式 C.整型常量或整形表达式 D.任何类型的表达式2、 若有说明:int a10;则对数组元素的正确引用是( ) A.a10 B.a3.5 C.a(5) D.a10-103、 以下对一维整型数组a的定义正确是() A.int a() B. int n,a10; C.int n; D. int n; scanf(“%d”,&n); int an; int an;4、 以下能对一维数组a进行正确初始化的语句是( ) A.int a10=(0,0,0,0,0) B.int a10= C.int a =0; D.int a10=10*1;5、 以下对二维数组a的正确说明是( ) A.int a3 ; B.float a(3,4) C.double a14; D.float a(3)(4)6、 以下不能对二维数组进行正确初始化的是( )A. int a23=0; B.int a 3=1,2,0C. int a23=1,2,3,4,5,6;D. int a 3=1,2,3,4,5,67、 设有数组定义:char array=“china”,则数组array所占的空间为( ) A.4个字节 B.5个字节 C.6个字节 D.7个字节8、 当执行下面的程序时,如果输入ABC,则输出结果是( )#include#includevoid main()char ss10=“1,2,3,4,5”; gets (ss); stract(ss,”6789”);printf(“%sn”,ss);9、 为了判断两个字符串str1和str2是否相等,应当使用( ) A.if(str1=str2) B.if(str1=str2) C.if(strcmp(str1,str2) D.if(strcmp(str1,str2)=0)10、 以下程序运行后的输出结果是( ) main()char str9=“hello”, “student”, “computer” ; printf(“%sn”,str1);A.h B.hello C.student D.computer11、 以下程序的输出结果是( )void main()char k,w10=“ABCD”,“EFGH”,“IJKL”,“MNOP”; for(k=1;k3;k+) printf(“%sn”,wk);A.ABCD B.ABCD C.EFG D.EFGH FGH EFG JK IJKL KL IJ O M12、 以下程序的输出结果是( ) main( )char arr24; strcpy(arr0,“you”); strcpy(arr1,“me”); arr03=&; printf(“%sn”,arr); A.you&me B.you C.me D.err13、 以下对一维整型数组a的正确说明是 。A)int a(10) ; B)int n=10,an;C)int n; D)#define SIZE 10scanf(“%d”,&n); int aSIZE;int an;14、 若有说明:int a34=0;则下面正确的叙述是 。A)只有元素a00可得到初值0B)此说明语句不正确C)数组a中各元素都可得到初值,但其值不一定为0D)数组a中每个元素均可得到初值015、 若有说明:int a4=0,0;则下面不正确的叙述是 。A)数组a的每个元素都可得到初值0B)二维数组a的第一维大小为1C)因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1D)只有元素a00和a01可得到初值0,其余元素均得不到初值016、 下面是对s的初始化,其中不正确的是 。A)char s5=“abc”; B)char s5=a,b,c;C)char s5=” ”; D)char s5=”abcdef”;17、 有两个字符数组a,b,则以下正确的输入语句是 。A)gets(a,b); B)scanf(“%s%s”,a,b);C)scanf(“%s%s”,&a,&b); D)gets(“a”),gets(“b”);18、 对两个数组a和b进行如下初始化:char a = “ABCDEF”;char b = A,B,C,D,E,F;则以下叙述正确的是A) a与b完全相同 B) a与b长度相同C) a与b中都存放字符串 D) a数组比b数组长度长19、 当运行以下程序时输入三行,每行都是在第一列上开始, 代表Entre键。abcdef则程序的输出结果是 #include #define N 6 main() char cN; int i = 0; for(i = 0; i N; i+) ci = getchar(); for(i = 0; i N; i+) putchar(ci); A)abcdef B)a C)a D)ab b bc cd cdefdef20、 以下程序段的输出结果是 pritnf(“%dn”, strlen(“ATSn0121”);A) 11 B) 10 C) 9 D)8二、填空题1、 下面程序的功能是把以下给定的字符读入数组str1中,并输出行列号之和是2的数组元素。void main()char str43=A,b,c,d,E,f,G,h,I,j, K,i; int x,y,z; for(x=0;x4;x+) for(y=0;_ y+) z=x+y; if(_) printf(“%cn”,strxy); 2、 若有定义:double x35;则x数组中行下标的下限为_,列下标的上限为_.3、 若有定义:int a34=1,2,0,4,6,8,10;则初始化后,a12得到的初值是_,a21得到的初值为_。4、 下面程序以每行4个数据的形式输出a数组,请填空。 #define N 20 main() int aN,i; for(i=0;iN;i+)scanf(%d,_); for(i=0iN;i+) if (_) _ printf(%3d,ai); printf(n);5、 下面程序可求出矩阵a的主对角线上的元素之和,请填空。 main() int a33=1,3,5,7,9,11,13,15,17,sum=0,i,j; for(i=0;i3;i+) for(j=0;j3;j+) if(_)sum=sum+_; printf(sum=%dn,sum);6、 以下程序的输出结果是 。 main() int arr10, i, k = 0; for(i = 0; i 10; i+) arri = i; for(i = 0; i 4; i+) k += arri + i;printf(“%dn”, k); 7、 给出以下程序,其功能是将a矩阵和b矩阵合并成c矩阵,最后将c矩阵按格式输出。请填空。5 4 8 96 3 7 9 7 8 2 53 1 7 5 1 2 4 3 6 3 0 2 2 3 1 4 5 1 3 6 1 5 2 3 a = b= c =#include main() int a34 = 3, 1, 7, 5,1, 2, 4, 3,6, 3, 0, 2;int b34 = 2, 3, 1, 4,5, 1, 3, 6,1, 5, 2, 3;int i, j, c34;for(i = 0; i 3; i+) for(j = 0; j 4; j+) cij = ;for(i = 0; i 3; i+) for(j = 0; j 4; j+) pritnf(“%5d”, cij); ;8、 在C语言中,二维数组的元素在内存中的存放顺序是 。三程序阅读题1.写出下面程序的运行结果。main ( ) int a66,i,j ;for (i=1; i6 ; i+)for (j=1 ; j6 ; j+)aij=(i/j)*(j/i) ;for (i=1;i6 ; i+) for (j=1 ; j=bi) ci=ai-32 ;else ci=bi-32 ;i+;ci=0;puts(c);3.当运行下面程序时,从键盘上输入AabD,则写出下面程序的运行结果。main ( ) char s80;int i=0;gets(s);while (si!=0) if (si=a)si=z+a-si ;i+;puts(s);4.写出下面程序的运行结果。main ( ) int i,c;char s25=“8980”,”9198”;for (i=3; i=0 ; i-) c=s0i+s1i-2*0;s0j = c % 10 + 0 ;for (i=0; i=1; i+) puts(si);5.当运行下面程序时,从键盘上输入7 4 8 9 1 5,则写出下面程序的运行结果。main ( ) int a6,i,j,k,m;for (i=0 ; i=0; i-) k=a5;for (j=4; j=0; j-)aj+1=aj ;a0=k;for (m=0 ; mS2,输出一个正数;如果S1=S2,输出0;如果S1S2,输出一个负数;输出的正,负数值为两个字符串相应位置字符ASCII码值的差值,当两个字符串完全一样时,则认为S1=S2。以上程序均使用gets或puts函数输入,输出字符串。不能使用string.h中的系统函数。8 定义一个可以存放10个元素的int数组a,输入10个数,并逆序输出。9 用数组来保存Fibonacci数列前20项数值,以每5个数据为一行进行输出。10 统计具有10个元素的自然数数组num中的奇数个数。函数练习题一、选择题1.有一下程序:#include int f(int x) int y; if(x=0|x=1)return (3); y=x*x-f(x-2); return y;int main() int z; z=f(3); printf(%dn,z);程序的运行结果是:A 0 B 9 C 6 D 82.若有“fun(int a,int n)”,以下说法正确的是( )。A)函数的类型为单精度类型 B) 第一个实参应该是数组名C)实参和形参之间是一个值传递的过程 D)以上说法都不对二、填空题1.以下程序的输出结果是:_。float fun(int x,int y) return (x+y);main() int a=2,b=5,c=8; printf(%3.0fn,fun(int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论