《C语言专业资料-题库汇总.doc》由会员分享,可在线阅读,更多相关《C语言专业资料-题库汇总.doc(57页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第一章 C 语言概述 一、选择题:1、一个 C 程序的执行是从( A )。A 本程序的 main 函数开始,到 main 函数结束B 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C 本程序的 main 函数开始,到本程序文件的最后一个函数结束D 本程序文件的第一个函数开始,到本程序 main 函数结束2、 在 C 语言中,每个语句必须以( D )结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 3、C 语言规定:在一个源程序中,main 函数的位置( C )。A. 必须在最开始 B. 必须在系统调用的库函数的后面 C. 可以任意 D. 必须在最后4、一个 C 语言程序是由
2、( B )。A. 一个主程序和若干子程序组成 B. 函数组成 C. 若干过程组成 D. 若干子程序组成5、下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行6、用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( C )。A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D. 自动保存源文件 二、填空题:1、C 语言只有 32 个关键字和 9 种控制语句。2、每个源程序有且只有一个 main 函数,系统总是
3、从该函数开始执行 C 语 言程序。 3、C 语言程序的注释可以出现在程序中的任何地方,它总是以 * 符号作 为开始标记,以 */ 符号作为结束标记。4、C 语言中,输入操作是由库函数 scanf 完成的,输出操作是由库函 数 printf 完成的。5、系统默认的 C 语言源程序文件的扩展名是 .c ,经过编译后生成的目标 文件的扩展名是 .obj ,经过连接后生成的可执行文件的扩展名是 .exe 。6、C 语言的标识符只能由字母、数字和 下划线 三种字符组成。第三章数据类型、运算符和表达式 一、选择题:1、以下选项中,不正确的 C 语言浮点型常量是( C )。 A. 160. B. 0.12
4、C. 2e4.2 D. 0.02、以下选项中,( D )是不正确的 C 语言字符型常量。 A. a B. x41 C. 101 D. “a“3、 在 C 语言中,字符型数据在计算机内存中,以字符的( C )形式存储。 A. 原码 B. 反码 C. ASCII 码 D. BCD 码4、若 x、i、j 和 k 都是 int 型变量,则计算下面表达式后,x 的值是( C )。x=(i=4,j=16,k=32) A. 4 B. 16 C.32 D.525、算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次为( B )。A. 算术运算、赋值运算、关系运算 B. 算术运算、关系运算、赋值运算 C
5、. 关系运算、赋值运算、算术运算 D. 关系运算、算术运算、赋值运算 6、若有代数式 ,则不正确的 C 语言表达式是( C )。A.a/b/c*e*3 B. 3*a*e/b/c C.3*a*e/b*c D. a*e/c/b*3 7、表达式!x|a=b 等效于( D )。 A. !(x|a)=b) B. !(x|y)=b C. !(x|(a=b) D. (!x)|(a=b) 8、设整型变量 m,n,a,b,c,d 均为 1,执行 (m=ab)后,变量 a 的值是( B )。A. 3 B. 0 C. 9 D. -12 10、在以下一组运算符中,优先级最低的运算符是( D )。 A. * B. !=
6、 C. + D. = 11、设整型变量 i 值为 2,表达式(+i)+(+i)+(+i)的结果是( B )。 A. 6 B. 12 C. 15 D. 表达式出错 12、若已定义 x 和 y 为 double 类型,则表达式 x=1,y=x+3/2 的值是( C )。A. 1 B. 2 C. 2.0 D. 2.5 13、sizeof (double)的结果值是( A )。 A. 8 B. 4 C. 2 D. 出错 14、设 a=1,b=2,c=3,d=4,则表达式:a10 后 c2 中的值是( A )。 A. D B. 68 C. 不确定的值 D. C 19、以下用户标识符中,合法的是( B )
7、。 A. int B. nit C. 123 D. a+b 20、C 语言中,要求运算对象只能为整数的运算符是( A )。 A. % B. / C. D. * 21、若有说明语句:char c=72;则变量 c 在内存占用的字节数是( A )。 A. 1 B. 2 C. 3 D. 4 22、字符串“ABC“在内存占用的字节数是( B )。 A. 3 B. 4 C. 6 D. 8 23、要为字符型变量 a 赋初值,下列语句中哪一个是正确的( B )。 A. char a=“3“; B. char a=3; C. char a=%; D. char a=*; 24、下列不正确的转义字符是( C )
8、。 A. B. C. 074 D. 0 二、填空题:1、C 语言中的逻辑值“真”是用 1 表示的,逻辑值“假”是用 0 表示的。2、若 x 和 n 都是 int 型变量,且 x 的初值为 12,n 的初值为 5,则计算表达式 x%=(n%=2)后 x 的值为 0 。 3、设 c=w,a=1,b=2,d=-5, 则表达式 x+1c, y!=c+2, -a-5*b100)y=x/100; printf(“%d”,y);else printf(“%d”,a+b);2. if 结构main() float t;char c;printf(“input score,max as 100:n”);scan
9、f(“%f”,if(t=90) ch=A;else if(t=80) ch=B;else if(t=70) ch=C;else if(t=60) ch=D;else ch=E;printf(“Grade=%dn”,ch);switch 结构main()float t;char c;printf(“input score,max as 100:n”);scanf(“%f”,switch(t/10) case 10:case 9: ch=A;break;case 8: ch=B;break;case 7: ch=C;break;case 6: ch=D;break;case 5: ch=E;pri
10、ntf(“Grade=%dn”,ch);五、选做题1. main() int a,b,c,t;scanf(“%d%d%d”,if(a0) break;case 0: x=1; break; break;case 0: x=0; break;循环结构答案一、选择题 1B 2.A 3.A 4.C 5.A 6.B 7.A 8.C 9.D 10.D二、填空题1. x1 x1/2-22. ch=getchar() ch=Afor(i=1;i=0) printf(“%2d %2d %2d”,i,j,k);s=s+1;if(s%5=0) printf(“n”);第 7 章 数组习题 A 卷1. 单项选择题(
11、1) int a4=5,3,8,9;其中 a3的值为( )。DA. 5 B. 3 C. 8 D. 9 (2) 以下 4 个字符串函数中,( )所在的头文件与其他 3 个不同。A A. gets B. strcpy C. strlen D. strcmp(3) 以下 4 个数组定义中,( )是错误的。 DA. int a7; B. #define N 5 long bN; C. char c5; D. int n,dn; (4) 对字符数组进行初始化,( )形式是错误。 BA. char c1 =1, 2, 3; B. char c2 =123; C. char c3 = 1, 2, 3, 0;
12、 D. char c4 =“123“; (5) 在数组中,数组名表示( )。 AA. 数组第 1 个元素的首地址 B.数组第 2 个元素的首地址 C. 数组所有元素的首地址 D.数组最后 1 个元素的首地址(6) 若有以下数组说明,则数值最小的和最大的元素下标分别是( )。 Bint a12 =1,2,3,4,5,6,7,8,9,10,11,12; A. 1,12 B. 0,11 C. 1,11 D. 0,12 (7) 若有以下说明,则数值为 4 的表达式是( )。 Dint a12 =1,2,3,4,5,6,7,8,9,10,11,12; char c=a, d, g ; A. ag-c B
13、. a4 C. ad-c D. ad-c (8) 设有定义:char s12 = “string“ ; 则 printf( “%dn“,strlen(s); 的输出是( )。 AA. 6 B. 7 C. 11 D. 12 (9) 设有定义:char s12 = “string“; 则 printf(“%dn “, sizeof(s); 的输出是( )。 DA. 6 B. 7 C. 11 D. 12 (10) 合法的数组定义是( )。 AA. char a = “string “ ; B. int a5 =0,1,2,3,4,5; C. char a= “string “ ; D. char a
14、 =0,1,2,3,4,5 (11) 合法的数组定义是( )。 DA. int a3 =0,1,2,3,4,5; B. int a 3 =0,1,2,3,4; C. int a23=0,1,2,3,4,5,6; D. int a23=0,1,2,3,4,5,; (12) 下列语句中,正确的是 ( )。DA. char a3 =abc, 1; B. char a 3 =abc, 1; C. char a3 =a, “1“; D. char a 3 = “a“, “1“; (13) 下列定义的字符数组中,输出 printf(“%sn“, str2) ;的输出是( )。Cstatic str320
15、= “basic“, “foxpro“, “windows“; A. basic B. foxpro C. windows D. 输出语句出错(14) 下列各语句定义了数组,其中哪一个是不正确的( )。 CA. char a310=“China“,“American“,“Asia“; B. int x22=1,2,3,4; C. float x2 =1,2,4,6,8,10; D. int m3=1,2,3,4,5,6; (15) 数组定义为 int a32=1,2,3,4,5,6,值为 6 的数组元素是( )。BA. a32 B. a21 C. a12 D. a23 (16) 下面的程序中哪
16、一行有错误( )。D#include main()float array5=0.0; /第 A 行int i;for(i=0;i void main( ) float a20,pjz=0,s,t; int i,k; for(i=0;isk) ; printf(“%dn“ ,k); k=p(4) 这个程序输入了 20 个数存放在一个数组中,并且输出其中最大者与最小者、 20 个数的和及它们的平均值。请填空。void main()char array ;int max,min,average,sum;int i;for(i=0;iarrayi)sum= ;average = ;printf(“20
17、 个数中最大值是%d,“,max);printf(“最小值是%d,“,min);printf(“和是%d,“,sum);printf(“平均值是%d.n“,average);2020min=arrayi;sum+arrayisum/20B 卷5. 阅读程序,分析程序的功能。 (1)#include #include void main( ) char s80; int i ; for(i=0; i #include void main( ) char str1080, c80; int i; for(i=0; i #include void main( ) char a1080, c80; i
18、nt i, j, k; for(i=0; i void main( ) int a6=12,4,17,25,27,16,b6=27,13,4,25,23,16,i,j; for(i=0;i void main( ) char a8,temp; int j,k; for(j=0;j0;k-) ak=ak-1; a0=temp; printf(“%sn“,a); gabcdeffgabcdeefgabcd(6) 阅读下列程序,写出程序运行的输出结果。 #include #include void main( ) char str1 =“*“; for(int i=0;i arrayij)min =
19、 arrayij;m=i;n=j;printf(“min=%d,m=%d,n=%dn“,min,m,n);-5.77 2 1(8) 写出下面这个程序的输出结果:void main()char str=“ABCDEFGHIJKL“;printf(“%sn“,str); 屏幕上显示 printf(“%sn“, 屏幕上显示 str2=str5;printf(“%sn“,str); 屏幕上显示 str9=0;printf(“%sn“,str); 屏幕上显示 ABCDEFGHIJKLEFGHIJKLABFDEFGHIJKLABFDEFGHI(9) 读懂下面的程序并填空。void main()char s
20、tr80;int i=0;gets(str);while(stri!=0)if(stri=a int i ;void sort(float*,int); ; for(i=0;i void find(float *p, int max, int min, int n) int k; *max=*p; for(k=1;kb) f=1; else if(a=b) f=0; else f=-1; return f; -1(2)键盘输入 abcdef #include void fun( ) char c ; if(c=getchar( )!=n) fun( ) ; putchar(c); void m
21、ain( ) fun( ); fedcba(3) #include #define C 5 int x=1,y=C; void main( ) int x; x=y+; printf(“%d %dn“, x,y); if(x4) int x ; x=+y; printf(“%d %dn“,x,y) ; x+=y-; printf(“%d %dn“,x,y); 5 67 712 6(4) #include int c , a=4 ; func(int a , int b) c=a*b ; a=b-1 ; b+ ; return (a+b+1) ; void main( ) int b=2 , p
22、=0 ; c=1 ; p=func(b , a) ; printf(“%d,%d,%d,%dn“, a,b,c,p) ; 4,2,8,9(5) unsigned fun6(unsigned num) unsigned k=1; do k*=num%10; num/=10; while(num); return k; void main( ) unsigned n=26; printf(“%dn“, fun6(n); 12(6)#include int max(int a,int b);main()int x,y,z,t,m;scanf(“%d,%d,%d“,t=max(x,y);m=max(t
23、,z);printf(“%d“,m);int max(int a,int b)if(ab)return(a);elsereturn(b);运行时若输入:10,15,9 则输出:_ 15运行时若输入:300,129,300 则输出:_ 300(7)#include long sum(int a,int b);long factorial(int n);main()int n1,n2;long a;scanf(“%d,%d“,a=sum(n1,n2);printf(“a=%1d“,a);long sum(int a,int b)long c1,c2;c1=factorial(a);c2=facto
24、rial(b);return(c1+c2);long factorial(int n)long rtn=1;int i;for(i=1;iint s();int x,y;main()int n;x=1;y=2;n=s();printf(“x=%d,y=%d,n=%d“,x,y,n);int s()int z;x=3;y=4;z=x+y;return(z);程序运行后输出:_ 3,4,7(9) 以下程序的输出结果是 a=_,b=_,c=_。#include int func(int a,int *p);void main()int a=1,b=2,c;c=func(a,b=func(c,a=fu
25、nc(b,printf(“a=%d,b=%d,c=%d“,a,b,c); int func(int a,int *p)a+;*p=a+2;return(*p+a);36 16 19第九章 预处理 A 部分(本、专科必做)一、选择题 以下不正确的叙述是(D) A、宏替换不占用运行时间。 B、宏名无类型。C、宏替换只是字符替换。 D、宏名必须用大写字母表示。C 语言的编译系统对宏命令的处理(D) A、在程序运行时进行的。 B、在程序连接时进行。C、和 C 程序中的其它语句同时进行编译的。D、在对源程序中其它语句正式编译之前进行的。3、以下程序的输出结果是(C)。A、15 B、100 C、10 D、
26、150#define MIN(x,y) (x)=A3、以下程序的输出结果是(B)A、5,2,3 B、-5,-12,-7 C、-5,-12,-17 D、5,-2,-7#includevoid sub(int x,int y,int *z)*z=y-x;void main()int a,b,c;sub(10,5, sub(7,a, sub(a,b,printf(“%d,%d,%dn”,a,b,c);4、以下程序的输出结果是(C)A、4 B、6 C、8 D、10#includevoid main()int k=2,m=4,n=6;int *pk=*(p=printf(“%dn”,n);5、已知指针
27、p 的指向(图一)的 a1,则执行语句*p+;后,*p 的值是(B)。A、20 B、30 C、21 D、31a0 a1 a2 a3 a41020304050(图一)6、已知指针 p 的指向(图一)的 a1,则表达式*+p 的值是(B)。A、20 B、30 C、21 D、317、已知指针 p 的指向(图一)的 a1,则表达式+*p 的值是(C)。A、20 B、30 C、21 D、318、以下程序的输出结果是(D)。A、23 B、24 C、25 D、26#includevoid prtv(int *x)printf(“%dn”,+*x);void main() int a=25;prtv(9、以下
28、程序的输出结果是(B)。A、运行出错 B、100 C、a 的地址 D、b 的地址#includevoid main()int *k,*a,b=100;a=k=printf(“%dn”,*k);10、以下程序运行后,输出结果是(D)。A) 8 B) 7 C) 6 D) 5#includess(char *s) char *p=s;while(*p) p+;return(p-s);main() char *a=“abded“;int i;i=ss(a);printf(“%dn“,i);二、填空题1、若有定义:char ch;(1)使指针 p 指向变量 ch 的定义语句是 char *p= 。(2)
29、若已定义 char *p;,使指针 p 指向变量 ch 的赋值语句是 p= 。(3)在(1)的基础上,通过指针 p 给变量 ch 读入字符的 scanf 调用语句是 scanf(“%c”,p); 。(4)在(1)的基础上,通过指针 p 给变量 ch 赋字符a的语句是*p=a; 。(5)在(1)的基础上,通过指针 p 用格式输出函数输出 ch 中字符的语句是 printf(“%c”,*p); 。2、以下程序输出的是 C 。 void main( ) int i=3, j=2;char *a=“;printf(“%c%cn“,ai,aj);3、以下函数的功能是,把两个整数指针所指的存储单元中的内容
30、进行交换。请 填空。void exchange(int *x, int *y) int t;t=*y; *y= *x ; *x= t ;B 部分(本科必做)程序填空:1、下面程序的输出结果是 A B C D B C D C D D 。char b=“;void main() char *chp;for(chp=b; *chp: chp+=2) printf(“%s“,chp);printf(“n“);下面是一个字符串连接函数,请补充完整。 void mystrcat(char *s1,char *s2)char *p,*q;for(p=s1; *p ; p+ );for( q=s2 ;*q;q
31、+) *p+=*q ;*p=0 ;第十一章 结构体与共用体 A 部分(本、专科必做)一、选择题1、设有如下定义: struct skint a;float b;data,*p; 若有 p=,则对 data 中的 a 域的正确引用是(B)。A)(*p).data.a B)(*p).a C)p-data.a D)p.data.a2、根据以下定义,能输出字母 M 的语句是(D)。A、printf(“%cn”,class3.name); B、printf(“%cn”,class3. name1); C、printf(“%cn”,class2.name1); D、printf(“%cn”,class2.
32、 name0); struct personchar name9;int age;struct person class10=“John”,17,”Paul”,19,”Mary”,18,”Adam”,16,;3、以下程序的输出结果是(D)。A、0 B、1 C、3 D、6#includevoid main()struct emplxint x;int y;enum2=1,3,2,7;printf(“%dn”,enum0.y/enum0.x*enum1.x);4、若有以下说明及语句,则值为 6 的表达式是(D)。A、p+-n B、p-n+ C、(*p).n+ D、+p-nstruct stint
33、n;struct st *next;struct st a3,*p;a0.n=5;a0.next=a1.n=7;a1.next=a2.n=9;a2.next=0;p=5、已知字符 0 的 ASCII 码的十进制的值是 48,且数组的第 0 个元素在低位, 以下程序的输出结果是(B)。A、39 B、9 C、38 D、8void main()unionint i2;long k;char c4;r,*s=s-i0=0x39;s-i1=0x38;printf(“%xn”,s-c0);6、以下程序输出的结果是(C)。A、32 B、16 C、8 D、24typedef unionlong x2;int
34、y4;char z8;MYTYPE;MYTYPE them;void main()printf(“%dn”,sizeof(them);7、设有以下语句typedef struct S int g; char h; T;则下面叙述中正确的是(B)。A) 可用 S 定义结构体变量 B)可以用 T 定义结构体变量C)S 是 struct 类型的变量 D)T 是 struct S 类型的变量8、有以下说明和定义语句struct student int age; char num8;struct student stu3=20,“200401“,21,“200402“,109,“200403“;stru
35、ct student *p=stu;以下选项中引用结构体变量成员的表达式错误的是(D)。A) (p+)-num B) p-num C) (*p).num D) stu3.age二、填空题1、为了建立结构体(含有两个成员,data 是数据成员,next 是指向自身结构 体的指针成员),请填空:Struct linkchar data;struct link *next ;2、把类型 int 另取一个类型名称 INT,则以下应填:typedef int INT;3、以下程序的运行结果是 2002Shangxian 。# include typedef struct studentchar name
36、10;long sno;float score;STU;main( ) STU a=“zhangsan”,2001,95,b=“Shangxian”,2002,90,c=“Anhua”,2003,95,d,*p=d=a;if(strcmp(a.name,b.name)0) d=b;if(strcmp(c.name,d.name)0) d=c;printf(“%ld%sn”,d.sno,p-name);B 部分(本科必做)程序填空:以下程序的功能是:处理由学号和成绩组成的学生记录,N 名学生的数据已在 主函数中放入结构体数组 s 中,它的功能是:把分数最高的学生数据放在 b 所 指的数组中,注意
37、:分数最高的学生可能不只一个,函数返回分数最高学生的 人数。请填空。#include#define N 16typedef structchar num10;int s;STREC;int fun(STREC *a,STREC *b)int i,j=0,max=a0.s;for(i=0;iN;i+)if(maxai.s) max=ai.s;for(i=0;iN;i+)if( ai.s=max ) bj+=ai;return j;void main()STREC sN=“GA005”,85,“GA003”,76,“GA002”,69,“GA004”,85,“GA001”,91,“GA007”,72,“GA008”,64,“GA006”,87,“GA0015 ”,85,“GA0013”,91,“GA0012”,64,“GA0014”,91,“GA0011”,66,“GA 0017”,64,“GA0018”,64,“GA0016”,72,;STREC hN;int i,n;n=fun(s,h);printf(“The %d highest score:n”, n );for(i=0;in;i+)printf(“%s %4dn”,hi.num,hi.s);printf(“n”);
限制150内