C语言复习题库.doc_第1页
C语言复习题库.doc_第2页
C语言复习题库.doc_第3页
C语言复习题库.doc_第4页
C语言复习题库.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、下列叙述中错误的是(A)。A一个C语言程序只能实现一种算法 BC程序可以由多个程序文件组成CC程序可以由一个或多个函数组成 D一个C函数可以单独作为一个C程序文件存在2、以下叙述中正确的是(C)。AC程序的基本组成单位是语句 BC程序中的每一行只能写一条语句C简单C语句必须以分号结束 DC语句必须在一行内写完3、以下叙述中正确的是(C)。AC程序中的注释只能出现在程序的开始位置和语句的后面BC程序书写格式严格,要求一行内只能写一个语句CC程序书写格式自由,一个语句可以写在多行上D用C语言编写的程序只能放在一个程序文件中4、按照C语言规定的用户标识符命名规则,不能出现在标识符中的是(B)。A大写字母 B连接符 C数字字符 D下划线5、下列定义变量的语句中错误的是(D)。Aint _int;Bdouble int_; Cchar For;Dfloat USS6、以下选项中不能作为C语言合法常量的是(A)。A345 B。 0.1c+6 Ca D0117、以下选项中不属于字符常量的是 (B)。AC BC CxCC0 D072 8、下列常量哪个是不合法的(B)。A0x4d00 BBASIC C D “/045”9、以下4组用户定义标识符中,全部合法的一组是(A)。A_mainBIf CtxtDintenclude -maxREALk_2sin turbo3COM_00110、以下选项中不属于字符常量的是(B)。AC BC CxCC D07211、下列变量名中哪个是不合法(C)。ATurbo_C Bvc Cint D_2ab12、设变量已正确定义并赋值,以下正确的表达式是(B)。Ab=3+ Bx=2,+y Ca=14%3.3 Dx=y+3=213、以下定义语句中正确的是 (D)。Aint a=b=0 ; Bchar A=65+1,b=b; Cfloat a=1,*b=&a,*c=&b ; Ddouble a=0.0,b=1.1; 14、以下选项中正确的定义语句是(C)。Adouble a;b; B double a=b=7 Cdouble a=7,b=7; Ddouble,a,b;15、以下不能正确表示代数式2ab/cd 的C语言表达式是(D)。A2*a*b/c/d Ba*b/c/d*2 Ca/c/d*b*2 D2*a*b/c*d16、若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是(A)。A+x,y=x- Bx+1=y Cx=x+10=x+yDdouble(x)/1017、以下关于逻辑运算符两侧运算对象的叙述中正确的是(D)。A只能是整数0或1 B只能是整数0或非0的整数C可以是结构体类型的数据 D可是任意合法的表达式18、若有定义int x,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x+): (y+)中的条件表达式(x-y)等价的是(C)。A(x-y0) B(x-y0) C(x-y0)D(x-y=0)19、设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是(A)。Ak+ Bk+=1 C+k Dk+120、若以下选项中的变量已正确定义,则正确的赋值语句是(C)。Ax1=26.8%3 B1+2=x2 Cx3=0x12 Dx4=1+2=3;21、定义 int x;float y; 正确的输入语句是(C)。Ascanf(%d%d,x,y); Bscanf(%d%d,&x,&y);Cscanf(%d%f,&x,&y); Dscanf(%f%d,&x,&y);22、当变量c的值不为2、4、6时,值也为“真”的表达式是 (B)。A(c=2)(c=4)(c=6) B(c=2&c=2&c=2&c=6)&(c%2!=1) 23、设有以下定义inta=0;doubleb=1.25;charc=A;#defined2则下面语句中错误的是(D)。Aa+; Bb+ Cc+; Dd+;24、若有以下函数首部 int fun(double x10,int *n)则下面针对此函数声母语句中正确的是 (B)。Aint fun(double x,int *n);Bint fun(double ,int);Cint fun(double*x,int n);Dint fun(double *,int*);25、 若程序中定义了以下函数 inta(inta,intb) return(a+b);并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是(A)。Ainta(inta,b); Binta(int,int);Cinta(intb,inta); Dintad(intx,inty);26、若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|10的是(C)。Aabs(x-y)-10&x-y10C(x-y)10 D(x-y)*(x-y)y) z=x;x=y;y=z;执行后x,y,z的值是(B)。Ax=10,y=20,z=30 Bx=20,y=30,z=30Cx=20,y=30,z=10 Dx=20,y=30,z=2028、对for(表达式1; ; 表达式3)可理解为(B)。A for(表达式1; 0; 表达式3)B for(表达式1; 1; 表达式3)C for(表达式1; 表达式1; 表达式3)D for(表达式1; 表达式3; 表达式3)29、以下叙述中正确的是(C)。Abreak语句只能用于switch语句体中Bcontinue语句的作用是:使程序的执行流程跳出包含它的所有循环Cbreak 语句只能用在循环体内和switch语句体内D在循环体内使用break语句和continue语句的作用相同30、下列叙述中正确的是(D)。Abreak语句只能用于switch语句B在switch语句中必须使用defaultCbreak语句必须与switch语句中的case配对使用D在switch语句中,不一定使用break语句31、在嵌套使用if语句时,C语言规定else总是(C)。A和之前与其具有相同缩进位置的if配对B和之前与其最近的if配对C和之前与其最近的且不带else的if配对D和之前的第一个if配对32、若i为整型变量,则以下循环执行次数是(B)。for(i=2;i=0;) printf(%d,i-);A无限次 B 0次 C 1次 D 2次33、以下能正确计算123.10的程序段是(C)。 A do i=1; s=1; Bdo i=1;s=0; s=s*i; s=s*i; i+; i+;while(i=10); while(i=10); C i=1; s=1; Di=1; s=0; do s=s*i; do s=s*i;i+; i+;while(i=10); while(i2 !1 46、以下叙述中错误的是 (D)。A在程序中凡是以“”开始的语句行都是预处理命令行 B预处理命令行的最后不能以分号表示结束 C#define MAX是合法的宏定义命令行 DC程序对预处理命令行的处理是在程序执行的过程中进行的 47、设有定义语句int(*f)(int);,则以下叙述正确的是 (B)。Af是基类型为int的指针变量 B f是指向函数的指针变量,该函数具有一个int类型的形参 C f是指向int类型一维数组的指针变量 D f是函数名,该函数的返回值是基类型为int类型的地址 48、判断字符串s1是否大于字符串s2,应当使用(D)。A if(s1s2) B if(strcmp(s1,s2)C if(strcmp(s2,s1)0)D if(strcmp(s1,s2)0)49、判断字符串a和b是否相等,应当使用(C)。Aif(a=b) Bif(a=b) C. if(strcmp(a,b) Dif(strcpy(a,b)50、设已有定义:float x;则以下对指针变量p进行定义且赋初值的语句中正确的是(D)。Afloat *p=1024; Bint *p=(float x);Cfloat p=&x; Dfloat *P=&x;51、若已有说明float *p,m=3.14; 要让p指向m,则正确的赋值语句是(B)。A p=m; B p=&m;C *p=m; D *p=&m;52、若有定义:int *p4; 则标识符p(B)。A 是一个指向整型变量的指针B 是一个指针数组名C 是一个指针,它指向一个含有四个元素的一维数组 D 说明不合法53、定义结构如下:struct stulong sno; char name10; int a; float b; 则sizeof(struct stu)的值为(B)。A. 4 B. 20 C. 22 D. 2454、以下对结构变量stu1中成员age的非法引用是(B)。struct student int age; int num; stu1,*p;p=&stu1;A stu1.age B p.age C p-age D (*p).age55、在C语言中,只有在使用时才占用内存单元的变量,其存储类型是 (A)。Aauto和register Bextern和register C auto和static D static和register 56、设有定义语句:char c1=32,c2=32;则以下表达式中值为零的是(A)。A. c1c2 B. c1&c2 C. c2 D. c1|c257、C语言中可以处理的文件类型是(B)。A文本文件和数据文件 B文本文件和二进制文件C数据文件和二进制文件 D任何类型文件58、若要以写的方式创建新打开文本文件,则在fopen函数中使用的打开方式是(A)。Aw Brb Crb+ Dw+59、定义FILE *fp; 以“只读”方式打开文件C:aa.dat的正确语句是(D)。Afp=fopen(C:aa.dat,w); Bfp=fopen(C:aa.dat,r);Cfp=fopen(C:aa.dat,w);Dfp=fopen(C:aa.dat,r);60、若有定义: int a=1,b=2,c=3;则表达式(ac?c:(a0) a-=2; else if(a=0) a-=2; else a+=10; printf(%dn,a);输出结果为:_0_。2、main() int x=6,y=2; if(x5) if(x0) printf(%d,x+); else printf(%d,x-); printf(%d,x);输出结果为:_6 7_。3、#include main() int x=1,y=2,z=3; if(xy) if(yz) printf(%d,+z); else printf(%d,+y); printf(%dn,x+);输出结果为:_1_。4、main() int x,y,z;x=y=z=0; +x&+y|+z;printf(%d %d %dn,x,y,z);输出结果为:_1 1 0_。5、main() int x=2; switch(x=2) case 1:printf(*);break; case 2:printf(%);break; 输出结果为:_*_。6、有以下程序 #include 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=%dn”,a,b); 输出结果为:_ a=2,b=1_。 7、main() int i;for(i=0;i0&n3);输出结果为:_0 2 3_。10、main() int i; for(I=1;I=40;I+) if(I+%5=0) if (+I%8=0) printf(%d,i) printf(n)输出结果为:_32_。11、main() int i=1,s=3;while(s15) s+=i+; if(s%7=0) continue; else i+; printf(%dn,i);输出结果为:_8_。12、#include main() int x=8; for( ; x0; x-) if(x%3)printf(“%d,”,x- -); continue; printf(“%d,”,- -x); 输出结果为: 8,5,4,2 。13、main() inti,j; for(i=1;i3;i+)for(j=i;j3;j+)printf(%d*%d=%d,i,j,i*j); printf(n); 1*1=1 1*2=2输出结果为: 2*2=4 。14、main()int aa33=1,2,3,1,2,3,1,2,3; int i,k=0,s=0; for(i=0;i3;i+)s+=aaik; +k; printf(%dn,s); 输出结果为:_6_。15、fun(int a, int b) return(ab? a:b);main() int x=5, y=7, z=6, r; r=fun(z, fun(x,y); printf(%dn, r);输出结果为:_5_。16、int x;void plusone() x+; main() x=1; plusone(); plusone(); printf(x=%dn,x);输出结果为: x=3 。17、int f() int sum=0; static int x=1; return sum+=x+;main() int i; for(i=1;i=3;i+) printf(%d ,f();输出结果为: 1 2 3 。18、fun(int x,int y) static int m=0,I=2; I+=m+1;m=I+x+y; return m; main() int j=1,m=1,k; k=fun(j,m); printf(%d,k); k=fun(j,m); printf(%dn,k) 输出结果为: 5,11 。19、以下程序的运行结果是: void test( int *x,int y) *x+=2; y+=2;main() int a=1,b=1; test(&a,b); printf(a=%d,b=%d,a,b);输出结果为: 3 1 。20、int x;void minusone() x-; int f(int n) static int x=2; x=x+n; return x;main() x=4; minusone(); printf(x=%dn,x); printf(f(2)=%dn,f(2); printf(f(4)=%dn,f(4); 3 f(1)=4输出结果为: f(2)=821、以下程序的运行结果是: main() int n=4,i,j; for(i=0; in; i+) for(j=0; jn; j+) if (i=j) printf(%4d, i+1); else if (i+j=n-1) printf(%4d, j+1); else printf(%4d, 0); printf(n); 1 0 0 4 0 2 3 0 0 2 3 0输出结果为: 1 0 0 422、#include int f(int x) int y; if(x=0|x=1) return (3); y=x*x-f(x-2); return y; main() int z; z=f(3); printf(“%dn”,z); 输出结果为:_6_。23、int fun(int x) if(x0) return x+fun(x-1); return 1; main() printf(%dn,fun(5); 输出结果为:_16_。24、#include void recur(int x); void main() recur(3); void recur(int n) if(n=0)return ; printf(%d ,n); recur(n-1); printf(%d ,n); 输出结果为:_321123_。25、#include int fun(int a,int b) if(b=0) return a;else return(fun(-a,-b);main() printf(%dn,fun(4,2);输出结果为: 2 。26、main() int a4=1,2,3,4; int i; for(i=0;i=0;i-) printf(%d ,ai); printf(n);输出结果为: 7 5 3 1 。27、main() int k; int a33=1,2,3,4,5,6,7,8,9; for(k=0;k3;k+) printf(%d ,ak2-k);输出结果为: 3 5 7 。28、main() int x3=1,2,3,*p,i; p=a; for(;p=0;i- -) printf(%d ,*(a+i); putchar(n); 输出结果为:_4 3 2 1_。Iyi31、void convert(char *a,int n)int i;if( (i=n/10)!=0 )convert(a+1,i);*a=n%10+0; main()char str10= ;convert(str,123);puts(str);输出结果为:_321_。32、#include main()char p20=a,b,c,d,q=”abc”, r=”abcde”; strcpy(p+strlen(q),r); strcat(p,q); printf(“%d%dn”,sizeof(p),strlen(p);输出结果为:_20 11_。33、int fun(char s) int n=0;while(*s=0) n=10*n+*s-0;s+;return(n); main() char s10=1,3,4,*,2,9,*,0,*;printf(%dn,fun(s); 输出结果为:_134_。34、main() int i; char *p4=ABCD,BCDE,CDEF,DEFG; char *pp=p; for(i=0;i4;i+,pp+) printf(%c ,*(*pp+1)+2);输出结果为:_D_ _E_F_ _G_。35、 struct info int b;int p; ; void f(struct info c) c.b=3; c.p=4;main() struct info a=1,2;f(a);printf(%d,%dn,a.b,a.p);输出结果为: 1,2 。36、#include struct st int x,y; data2=1,10,2,20;main() struct st *p=data;printf(%d,p-y); printf(%dn,(+p)-x);输出结果为: 10,2 。37、struct info int k; char *s; t;void f(struct info t) t.k=1997; t.s=Borland;main() t.k=2000; t.s=Inprise; f(t); printf(%d,%sn,t.k,t.s);输出结果为: 2000,Inprise 。38、#includestruct NODE char num; struct NODE *next;main( ) struct NODE *p,*q,*r; p=(struct NODE *)malloc(sizeof(struct NODE); q=(struct NODE *)malloc(sizeof(struct NODE); r=(struct NODE *)malloc(sizeof(struct NODE); p-num=a; q-num=b; r-num=c; r-next=q;q-next=p;p-next=NULL; printf(%cn,r-next-next-num);输出结果为:_a_。39、#include main() FILE *fp; int a10=1,2,3,i,n; fp=fopen(“dl.dat”,”w”); for(i=0;i=10)return f1(i-5);elsereturn f1(i);int f1(int i)return i-5; 输出结果为:_2_。三、程序填空题1、下面程序的功能是分离出一个三位整数的百十个位。请填空。main()int n,i,j,k; scanf(%d,&n);i=n/100;j= n/10%10;k=n%10;printf(%d %d %d,i,j,k);2、以下程序是求出1+1/3+1/5+1/99的和。main() int i; float s=0; for(i=1;i1e-6;i+) s=s*i; e=e+1/s; printf(%lf,e); 4、以下程序的功能是:输入2个整数,求出它们的最大公约数并输出,请填空。main( ) int gcd(int m,int n);int a,b;scanf(%d,%d,&a,&b);printf(%d,gcd(a,b);int gcd(int m,int n)int r;r=m%n;while(r!=0) m=n;n=r; r=m%n;return n;5、实现一个有10元素的数组的翻转。main ()int i,a10=1,2,3,4,5,6,7,8,9,10,n=10; printf(翻转前:n); for (i=0;i10; i+) printf(a%d = %dn,i,ai); int x,m=n/2; for (i=0;im;i+) int t=ai;ai=a9-i;a9-i=t; printf(翻转后:n); for (i=0; i10; i+) printf(a%d = %dn,i,ai); 6、求出M行N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。#defineM 3#defineN 3void SumColumMin(int aMN,int *sum) int i,j,k,s=0; for(i=0;iN;i+) k=0; for(j=1;jaji) k=j; s+=aki; *sum=s;main() int xMN=3,2,5,1,4,6,8,3,9,s; SumColumMin(x,&s ); printf(“%dn”,s);7、以下程序的功能是:再main函数中调用mylength求一个字符串的长度。请填空。int mylength(char *p)int len=0;while(*p!=0) len+; p+; return(len);main()char str180; scanf(%s,str1);printf(str1 的长度=%d,mylength(str1);8、求整数x,y,z中的最大值。main() int x,y,z,max,t; scanf(%d%d%d,&x,&y,&z); if(xz) max=x; else max=z; printf(max=%dn,max);9、下列程序的功能是从键盘输入两个int型数据给变量x和y,然后在main()函数中调用exchange()函数将变量x和y的内容对调。void exchange(int *a,int *b) int t;t=*a; *a=*b; *b=t;main() int x,y; scanf(%d%d,&x,&y); printf(x=%d y=%dn,x,y); exchange(&x,&y); printf(x=%d y=%dn,x,y);10、定义一个结构类型,要求输入一个学生的数学和计算机两门课的成绩,然后计算并输出其平均成绩.main() struct student int math,computer;stu;printf(请输入两门课的成绩: );scanf(%d%d ,&stu.math,&puter);printf(平均成绩 %f , (stu.math+puter)/2); 11、将一串数字字符串中各数字求和,如126求和为9。main() char *str=12345,*p; int s=0; p=str; while (*p!=0;) s=s+*p-0; p+; printf(数字字符串的数字之和为:%dn,s);12、以下程序中函数fun的功能是:统计person所指结构体数组中所有性别(sex)为M的记录的个数,存入变量n中,并做为函数值返回。#define N

温馨提示

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

评论

0/150

提交评论