C练习题(无答案).doc_第1页
C练习题(无答案).doc_第2页
C练习题(无答案).doc_第3页
C练习题(无答案).doc_第4页
C练习题(无答案).doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

一, 选择题。(共30题,每题1.5分,共45分)1、C语言程序由什么组成( )A、子程序 B、主程序和子程序 C、函数 D、过程2、源程序要正确地运行,必须要有什么函数( )A、Printf函数 B、自定义的函数 C、main函数 D、不需要函数3、C语言中的数据的基本类型包括( )A、整型、实型、字符型和逻辑型 B、整型、实型、字符型和结构体C、整型、实型、字符型和枚举型 D、整型、实型、字符型和指针型4、在C语言中,不合法的int型常量是( )A、32767B、0678C、0XABCD、32768L5、在C语言中,运算对象必须是整型数的运算符是( ) A、% B、 C、%和 D、* 6、若已定义x和y为double型,则表达式:x=1,y=x+3/2的值是( )A、1 B、2 C、2.0 D、2.57、若t为double类型,表达式t=1,t+5,t+的值就是( )A、1 B、6.0 C、2.0 D、 1.08、若有定义:int a=10,b=9,c=8;执行下面两条语句c=(a-=(b-5);c=(a%11)+(b=3);后,变量b的值为( )A、9B、4C、3D、29、设int a=12,则执行完语句a+=a-=a*a后,a的值是( )A、22 B、264 C、 144 D、 -26410、putchar ( )函数可以向终端输出一个( )A、整型变量表达式值 B、实型变量值C、字符串 D、字符或字符型变量值11、.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是( )int a1,a2; char c1,c2;scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);A、10A 20B B、10 A 20 BC、10A20B D、10 A20 B12、执行下列程序片段时输出结果是( )int x=13,y=5;printf(“%d”,x%=(y/=2);A、3 B、2 C、1 D、013、若定义x为double型变量,则能正确输入x值的语句是( )A、scanf(“%f”,x); B、scanf(“%f”,&x);C、scanf(“%lf”,&x); D、scanf(“%5.1f”,&x);14、已知i,j,k为int型变量,若从键盘输入:1,2,3,使I的值为1,j的值为2,k的值为3,以下选项中正确的输入语句是( )A、scanf(“%2d%2d%2d”,&i,&j,&k); B、scanf(“%d_%d_%d”,&i,&j,&k);C、scanf(“%d,%d,%d”,&i,&j,&k); D、scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);15、有输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量 a的值为1,b的值为3,c的值为2,则正确的数据输入方式是( )A、132 B、1,3,2 C、a=1 b=3 c=2 D、a=1,b=3,c=216、C语言中的变量名只能由字母,数字和下划线三种字符组成,且第一个字符( )A、必须是字母 B、必须是下划线C、必须是字母或者下划线 D、可以是字母,数字和下划线中任一种字符17如果有以下说明语句:char c=abc,则变量c( )A包含了1个字符 B包含了2个字符C包含了3个字符 D说明不合法,c的值不确定18以下选项中,不能作为合法常量的是( )A1.234e04 B1.234e0.4 C1.234e+4 D1.234e019、逻辑运算符两侧运算对象的数据类型( )A、能是0或1 B、能是0或非0正数C、能是整型或字符型数据 D、以是任何类型的数据 20、设a为整形变量,不能正确表达数学关系:10a15 的C语言表达式是( )A、10a10&a15 D、 !(a=15)21、在C语言中,逻辑值“真”用( )表示。A、 true B、大于0的数 C、 非0整数 D、非0的数22、以下程序的输出结果是( ) main() int x=10,y=10; printf(%d%dn,x-,-y); A、 10 10 B、 9 9 C、 9 10 D、 10 923、当a,b,c的值分别为3,4,5时,以下各语句执行后a,b,c的值为多少( )if (ac)a=b;b=c;c=a;elsea=c;c=b;b=a;printf(“%d,%d,%d”,a,b,c);A、5,4,5 B、5,5,4 C、3,4,5 D、5,3,424、当a,b,c的值分别为3,4,5时,以下各语句执行后a,b,c的值为多少( )if(ac)a=c;elsea=b;c=b;b=a;printf(“%d,%d,%d”,a,b,c);A、5,5,4 B、5,4,5 C、3,4,5 D、5,3,425、若k1,k2,k3,k4均为int型变量,为了将整数10赋给k1和k3,将整数20赋给k2和k4,则对应以下scanf()函数调用语句的正确输入方式是( )(代表换行符,_代表空格).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,2026、在C语言中,当While语句中的条件为( )时,结束该循环。A、0 B、1 C、true D、非027、C语言对嵌套if语句的规定是:else总是与( ) A、其之前最近的if配对 B、第一个if配对 C、缩进位置相同的if配对 D、其之前最近的且尚未配对的if配对28.若有以下定义和语句:intu=010,v=0x10,w=10;printf(%d,%d,%dn,u,v,w);则输出结果是( )【正确答案】A A、8,16,10 B、10,10,10 C、8,8,10 D、8,10,10 29、若k为整型,以下while循环体中的语句执行( )次k=2;while(k=0)printf(“%d”,k);k-;printf(“n”);A、无限次 B、0次 C、1次 D、2次30.若i、j已定义为int型,则以下程序段中内循环体的总的执行次数是( )for(i=5;i0;i-)for(j=0;j4;j+)A、20 B、24 C、25 D、30 二,填空题(每空2分,共30分)。1.浮点数按精度分有两种:一种是 ,另一种是 。2.表示换行的转义字符是 。3.符号&有特殊的含义,&a表示取变量a的 。4、输入两个实数a,b。然后交换它们的值,最后输出(提示:要交换两个数得借助一个中间变量temp.首先让temp存放a的值,然后把b存入a,再把temp存入b就完成了)main()float a,b,temp;Printf(“请输入a和b的值:”);Scanf(“%d,%d”,_);Temp=a;_;_;printf(“交换后,a=%d,b=%dn”,_);5、C语言三个循环语句分别是 语句, 语句和 语句6、至少执行一次循环体的循环语句是 7、执行以下程序段后,a= _,b= _ ,c= _ int x=10,y=9 ;int a,b,c ;a = (x-= =y+) ? x- : y+ ;b = x+ ;c = y ;三、 看程序写结果(每题5分,共25分).1、用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=A,c2=a,问在键盘上如何输入? (表示空格)main ( ) int a,b;float x,y;char c1,c2;scanf(“a=%db=%d”,&a,&b);scanf(“ %f %e”,&x,&y);scanf(“ %c %c”,&c1,&c2); 2、#includemain()int x=345;printf(“%6dn%06dn%-6dn%2d”,x,x,x,x);3、当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;printf(“x=%d”,x);4、若int i=0;执行下列程序后,变量i的正确结果是( )。switch ( i ) case 9: i+=1 ;case 10: i+=1 ;case 11: i+=1 ;default : i+=1 ;printf(“i=%d”,i);5、main()int i=1,s=3;dos+=i+;if(s%7=0)continue; else +i; while(s15);printf(“i=%dn”,i);1循环控制:2数组:3函数4宏定义5指针6文件1循环控制:(一)选择题1设有程序段 int k=10; while(k=0)k=k-1; 这下面描述中正确的是_. a)while循环执行10次 b)循环是无限循环 c)循环体语句一次也不执行 d)循环体语句执行一次2语句while(!E);中的表达式!E等价于_. a)E=0 b)E!=1 c)E!=0 d)E=13下面程序段的运行结果是_. int n=0; while(n+=2);printf(%d,n); a)2 b)3 c)4 d)有语法错4下面程序的运行结果是_. #include main() int num=0; while(num=2) num+; printf(%dn,num); a)1 b)1 c)1 d)1 2 2 2 3 3 45以下程序段_. x=-1; do x=x*x; while(!x); a)是死循环 b)循环执行二次 c)循环执行一次 d)有语法错误6若有如下语句 int x=3; doprintf(%dn,x-=2);while(!(-x); 则上面程序段_. a)输出的是1 b)输出的是1和-2 c)输出的是3和0 d)是死循环7下面程序的运行结果是_. #includemain() int y=10; doy-;while(-y); printf(%dn,y-); a)-1 b)1 c)8 d)08若i为整型变量,则以下循环执行次数是_. for(i=2;i=0;)printf(%d,i-); a)无限次 b)0次 c)1次 d)2次9执行语句for(i=1;i+=a&c=A&c=Z_)n+; c=getchar(); 2下面程序的功能是用辗转相除法求两个正整数的最大公约数。请填空。 #include main() int r,m,n; scanf(%d%d,&m,&n); if(mn)_m=m+n;n=m-n;m=m-n;_; r=m%n; while(r)m=n;n=r;r=_m%n_; printf(%dn,n); 3下面程序的运行结果是_s=254_. #include main() int a,s,n,count; a=2;s=0;n=1;count=1; while(count=7)n=n*a;s=s+n;+count; printf(s=%d,s); 4下面程序段的运行结果是_a=-5_. i=1;a=0;s=1; doa=a+s*i;s=-s;i+;while(i=10); printf(a=%d,a);5下面程序段的运行结果是_8_. i=1;s=3; dos+=i+; if(s%7=0)continue; else +i; while(s15); printf(%d,i);2数组:1.以下为一维整型数组a的正确说明是_. a)int a(10); b)int n=10,an; c)int n; d)#define SIZE 10; scanf(%d,&n); int aSIZE; int an;2以下对二维数组a的正确说明是_. a)int a3; b)float a(3,4); c)double a14 d)float a(3)(4);3若二维数组a有m列,则计算任一元素aij在数组中位置的公式为_.(假设a00位于数组的第一个位置上。) a)i*m+j b)j*m+i c)i*m+j-1 d)i*m+j+14若二维数组a有m列,则在aij前的元素个数为_. a)j*m+i b)i*m+j c)i*m+j-1 d)i*m+j+15若有以下程序段: . .int a=4,0,2,3,1,i,j,t; for(i=1;i=0&taj) aj+1=aj;j-; aj+1=t; . . 则该程序段的功能是_. a)对数组a进行插入排序(升序) b)对数组a进行插入排序(降序) c)对数组a进行选择排序(升序) d)对数组a进行选择排序(降序)6有两个字符数组a、b,则以下正确的输入语句是_. a)gets(a,b); b)scanf(%s%s,a,b); c)scanf(%s%s,&a,&b); d)gets(a),gets(b);7下面程序段的运行结果是_. char a7=abcdef;char b4=ABC; strcpy(a,b); printf(%c,a5); a)空格 b)0 c)e d)f8判断字符串s1是否大于字符串s2,应当使用_. a)if(s1s2) b)if(strcmp(s1,s2) c)if(strcmp(s2,s1)0) d)if(strcmp(s1,s2)0)9下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔,请选择填空。 #include main() char s80,c1,c2=; int i=0,num=0; gets(s); while(si!=0) c1=si; if(i=0)c2=; else c2=si-1; if(_ _)num+; i+; printf(There are %d words.n,num); a)c1=&c2= b)c1!=&c2= c)c1=&c2!= d)c1!=&c2!=10下面程序的运行结果是_. #include main() char str=SSSWLIA,c; int k; for(k=2;(c=strk)!=0;k+) switch(c) case I:+k;break; case L:continue; default:putchar(c);continue; putchar(*); a)SSW* b)SW* c)SW*A d)SW/P二、填空题1 若有定义:double x35;则x数组中行下标的下限为_,列下标的上限为_.2下面程序以每行4个数据的形式输出a数组,请填空。 #define N 20 main() int aN,i; for(i=0;iN;i+)scanf(%d,_ _); for(i=0;iN;i+) if (_i%4=0_) _ _ printf(%3d,ai); printf(n);3. 下面程序可求出矩阵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;j=1); for(j=i-1;j=0;j-) printf(%d,aj); 5. 下面程序用插入法对数组a进行降序排序。请填空。 main() int a5=4,7,2,5,1; int i,j,m; for(i=1;i=0&maj) _ _; j-; _ _=m; for(i=0;i5;i+) printf(%d,ai); printf(n); 6. 下面程序的功能是在三个字符串中找出最小的,请填空。 #include #include main() char s20,str320; int i; for(i=0;i3;i+)gets(stri); strcpy(s,_ _); if(strcmp(str1,s)0)strcpy(s,str1); if(strcmp(str2,s)0)strcpy(s,str2); printf(%sn,_); 7. 下面程序的运行结果是_ _. #include main() char s=ABCCDA; int k;char c; for(k=1;(c=sk)!=0;k+) switch(c) case A:putchar(%);continue; case B:+k;break; default:putchar(*);case C:putchar(&);continue; putchar(#); 3函数:1.以下正确的说法是_. 建立函数的目的之一是 a)提高程序的执行效率 b)提高程序的可读性 c)减少程序的篇幅 d)减少程序文件所占内存2以下正确的函数定义形式是_. a)double fun(int x,int y) b)double fun(int x; int y) c)double fun(int x, int y); d)double fun(int x,y);3C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为_. A)地址传递 B)单向值传递 C)由实参传给形参,再由形参传回给实参 D)由用户指定传递方式4C语言允许函数值类型缺省定义,此时该函数值隐含的类型是_. a)float b)int c)long d)double5已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的错误定义方式为_. int a34; f(a); a)f(int array6) b)f(int array3)/*第二维不能省*/ c)f(int array4) d)f(int array25)6以下程序的正确运行结果是_. #include void num() extern int x,y;int a=15,b=10; x=a-b; y=a+b; int x,y; main() int a=7,b=5; x=a+b; y=a-b; num(); printf(%d,%dn,x,y); a)12,2 b)不确定 c)5,25 d)1,12二、填空题1以下程序的运行结果是_ _. #include main() int a=1,b=2,c; c=max(a,b); printf(max is %dn,c); max(int x,int y) int z; z=(xy)?x:y; return(z); 2函数gongyu的作用是求整数num1和num2的最大公约数,并返回该值。请填空。 gongyu(int num1,int num2) int temp,a,b; if(num1(_) num2) temp=num1;num1=num2;num2=temp; a=num1;b=num2; while(_ _) /*or b!=0 */ temp=a%b;a=b;b=temp; return(a); 3以下程序的运行结果是_ _. int a=5;int b=7; main() int a=4,b=5,c; c=plus(a,b); printf(A+B=%dn,c); plus(int x,int y) int z; z=x+y; return(x); 4预处理:1以下程序的运行结果是_. #define MIN(x,y) (x)(y)?(x):(y) main() int i=10,j=15,k; k=10*MIN(i,j); printf(%dn,k); a)10 b)15 c)100 d)1502若有宏定义如下: #define X 5 #define Y X+1 #define Z Y*X/2 则执行以下printf语句后,输出结果是_. int a;a=Y; printf(%dn,Z); printf(%dn,-a); a)7 b)12 c)12 d)7 6 6 5 53请读程序: #include #define MUL(x,y) (x)*y main() int a=3,b=4,c; c=MUL(a+,b+); printf(%dn,c); 上面程序的输出结果是_. a)12 b)15 c)20 d) 164对下面程序段: #define A 3 #define B(a) (A+1)*a) . x=3*(A+B(7); 正确的判断是_. a)程序错误,不许嵌套宏定义 b)x=93 c)x=21 d)程序错误,宏定义不许有参数5指针:(一)选择题1变量的指针,其含义是指该变量的_. a)值 b)地址 c)名 d)一个标志2若有语句int *point,a=4;和point=&a;下面均代表地址的一组选项是_. a)a,point,*&a b)&*a,&a,*point c)*&point,*point,&a d)&a,&*point ,point3若有说明;int *p,m=5,n;以下正确的程序段的是_. a)p=&n; b)p=&n; scanf(%d,&p); scanf(%d,*p); c)scanf(%d,&n); d)p=&n; *p=n; *p=m;4下面程序段的运行结果是_. char *s=abcde; s+=2;printf(%s,s); a)cde b)字符c c)字符c的地址 d)无确定的输出结果5设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是_.a)c=*p1+*p2; b)p2=c c)p1=p2 d)c=*p1*(*p2);6以下正确的程序段是_. a)char str20; b)char *p; scanf(%s,&str); scanf(%s,p); c)char str20; d)char str20,*p=str; scanf(%s,&str2); scanf(%s,p2);7若有说明语句 char a=It is mine; char *p=It is mine; 则以下不正确的叙述是_. a)a+1表示的是字符t的地址 b)p指向另外的字符串时,字符串的长度不受限制 c)p变量中存放的地址值可以改变 d)a中只能存放10个字符8下面程序的运行结果是_. #include #include main() char *s1=AbDeG; char *s2=AbdEg; s1+=2;s2+=2; printf(%dn,strcmp(s1,s2); a)正数 b)负数 c)零 d)不确定的值9下面程序的运行结果是_. #include #include fun(char *w,int n) char t,*s1,*s2; s1=w;s2=w+n-1; while(s1*b)_ _; if(num*c) _ _; printf(输出最小整数:%dn,num); 2下面程序段的运行结果是_ _.

温馨提示

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

评论

0/150

提交评论