C语言程序设计试题及答案_第1页
C语言程序设计试题及答案_第2页
C语言程序设计试题及答案_第3页
C语言程序设计试题及答案_第4页
C语言程序设计试题及答案_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、 C 语言程序设计 ( 卷)考核班级学生数 印数 考核方式 闭卷 考核时间 120 分钟(本试卷包括第一卷和第二卷,答卷时间总共 第一卷120 分钟 )第一部分:基础知识( 20 项,共 40 分)12一个 C 语言程序是由( )A .主程序B .子程序转换说明符 %x 的输出形式是(A 十进制B 八进制组成的。C 函数)。C 十六进制D 过程3.4.567若a、b均为int型变量,且a=100,则关于循环语句 printf ( “ “) ;的正确说法是() 。A 循环体只执行一次B 死循环C 循环体一次也不执行D 输出若 x、 y、 z 均为 int 型变量,则执行下列语句后的 x=1; y

2、=2; z=3; z=(xy)?z :y ; z = (z=1;n-), 下列语句实现将 S2 所指字符数组中前 n 个字符复制到 S1 所指字符 数组中,其中代码不正确的是( )。A *S1+=*S2+BS1n-1=S2n-1C* ( S1+n-1 )=*(S2+n-1)D*(+S1)=* (+S2)17调用函数的实参与被调用函数的形参应该有如下关系() 。A 只要求实参和形参个数相等B 只要求形参和实参顺序相同C.只要求实参和形参数据类型相同D 上述三点均需具备18联合体成员的数据类型()。A .相同B .可以不同也可以相同C.长度一样D 是结构体变量19. 由系统分配和控制的标准输出文件

3、为()。A .键盘 B .磁盘C .打印机D .显示器20. C语言标准库函数 fread(fd,buffer,n)的功能是( )。A .从文件fd中读取长度不超过 B .从文件fd中读取长度不超过 C.从文件fd中读取长度不超过 D .从文件fd中读取长度不超过n 个字节的数据送入 buffer 指向的内存区域 n-1 个字节的数据送入 buffer 指向的内存区域 n 个字符送入 buffer 指向的内存区域 n-1 个字符送入 buffer 指向的内存区域 第二部分:简单程序( 12 项,共 30 分)21 下列程序main() int x,y,z;x=y=2;z=3;y=z+-1;pr

4、intf( “%d t ”,x,y);y=+x-1;printf( “ %d n” ,x,y);y=z-1;printf(“%d t ”,z,y);y=-z-1;printf(“ %d n” ,z,y); 运行后输出的数据为 ?。A. 3 1 4 2 B. 3 1 3 3 C. 2 2 3 2D. 2 1 3 22 4 1 3 2 4 2 2 3 3 2 1 1 3 1 222. 下列程序main() int i,j;char *a,c;”丄”a= ” computer ”; printf( “ %s” ,a); for(i=0,j=7;icomputer a3=uC. computer-re

5、tupmoc a4=p23. 下列程序B. computer-retupmoc a5=mD. computer-retupmoc a2=tint sum(int n) int p=1,s=0,i;for(i=1;i=n;i+) s+=(p*=i); return s;main() printf(“ sum(5)=n%”d,sum(5);运行后输出的数据为 _ _Dsum(5)=155A. sum(5)=151 B.sum(5)=152 C.sum(5)=15324. 下列程序main() static int a=5,6,7,3,2,9;int s1,s2,i,*ptr;s1=s2=0;ptr

6、=&a0; for(i=0;i5;i+2=2) s1+=*(ptr+i);s2+=*(ptr+i+1);printf( “ s1=%d,s2=n%”d ,s1,s2);D.s1=15,s2=19运行后输出的数据为 A. s1=18,s2=14 B.s1=14,s2=32 C.s1=14,s2=1825. 下列程序 int c=1;main()static int a=5;int b=6;printf( “ a=%d b=%d c=%n”d ,a,b,c); func();printf( “ a=%d,b=%d,c=%n”d ,a,b,c); func();func() static int a

7、=4;int b=10;a+=2;c+=10;b+=c;printf( “ a=%d,b=%d,c=n%”d ,a,b,c); 运行后输出的数据为 _.A. a=5 b=6 c=1a=6 b=21 c=11a=5 b=6 c=11a=8 b=31 c=21C. a=5 b=6 c=1a=6 b=21 c=11a=6 b=21 c=11a=8 b=31 c=21B. a=5 b=6 c=1 a=7 b=17 c=11 a=5 b=6 c=11 a=9 b=17 c=21 D. a=5 b=6 c=1 a=7 b=17 c=11 a=7 b=17 c=11 a=9 b=38 c=2126已知str

8、uct studentchar * name;int student_n;char grade;struct student temp,*p=&temp; = ”chou ”; 则下面不正确的是 。表达式值A.p t n ameB. (*p) t name+2C. *p t name+2D. *(p t name+2)27.下列程序chouheo#define MAX 10 main() int i,sum,a =1,2,3,4,5,6,7,8,9,10; sum=1;for(i=0;iMAX;i+) sum-=ai;printf( “ SUM=%”d ,sum); 程序运行

9、结果是 :A. SUM=55 B.SUM=-54 C.SUM=-55 D.SUM=54 28.下列程序void inv(int*x,int n)int *p,t,*i,*j,m=(n-1)/2;i=x;j=x+n-1;p=x+m; for(;ip;i+,j-) t=*i;*i=*j;*j=t; return;main( ) static int i,a10=3,7,9,11,0,6,7,5,4,2; inv(a,10);for(i=0;i10;i+)printf( “ %d,” ,ai); 程序运行结果 :A. 0,2,3,4,5,6,7,7,9,11B.11,9,7,7,6,5,4,3,2,

10、0C. 3,7,9,11,0,6,7,5,4,2D.2,4,5,7,6,0,11,9,7,329.下列程序main() int a10,b10,*pa,*pb,i; pa=a;pb=b; for(i=0;i3;i+,pa+,pb+) *pa=i;*pb=2*i;printf( “ %d n” ,*pa,*pb); printf( n“” );pa=&a0;pb=&b0; for(i=0;i3;i+)*pa=*pa+i;*pb=*pb*i;printf( “ %d n” ,*pa+,*pb+); 运行后输出的数据为 。A. 00B.00C. 00D. 0012121222242424240000

11、0000222212124824244830.下列程序copy_string(from,to)char *from,*to; while(*from) *to+=*from+;*to= 0;main() static char s1 =” c_program. ”;static char s280;copy_string(s1,s2) ; printf( “ %sn” ,s2) ; copy_string( “123” ,s2); printf( “ n%”s ,s2);运行后输出的数据为( )。A. c_program 123 B.123 C. c_program123 D. c_progr

12、am 123 31.下列程序:#include main() char a40,b40;int i,j; printf( “ Enter the string: ” ); scanf( “ %s” ,a);i=j=0; while(ai!= 0) if(!(ai= 0&ai= 9 ) bj=ai; j+;+i; bj= 0; printf( “ %s” ,b); 运行后输出的结果是( ) 。 A. 把键盘输入的字符串显示在屏幕上B. 把键盘输入的字符串中的数字字符删掉,然后显示该字符串C. 把键盘输入的字符串中的字符 0和 9删掉,然后显示该字符串D. 只保留由键盘输入的字符串中的字母数字,然

13、后显示该字符串 32下列程序#includemain() char a80;int i,j;printf( “ Enter the string:”);scanf( “ %s” ,a);i=0;while(ai!= 0) if(ai= A &ai= Z )ai=ai- A +a;printf( “ %s” ,a);运行后输出的结果是( )。A. 把键盘输入的字符串中的大写字母变换成小写字母,然后显示变换后的字符串。B. 把键盘输入的字符串中的数字字符删除掉,然后显示该字符串。C. 把键盘输入的字符串中的小写字母变换成大写字母,然后显示变换后的字符串。D. 把键盘输入的字符串原封不动地显示在屏幕

14、上。第二卷 说明:(1)第二卷含二大题,均属填空题,每题各有5 个空栏,在阅读和理解原题程序的基础上,在空栏处填入适当的字符、语句,以构成一个正确的 C 语言程序。(2)每空栏填对得 3 分,两大题共 10 个空栏,全填对得 30 分。试题一一个整数称为完全平方数,是指它的值是另一个整数的平方。如 81 是个完全平方数,因为 它是 9 的平方。下列程序是在三位的正整数中寻找符合下列条件的整数: 它既是完全平方数, 且三位数字中又有两位数字相同:例如144(12*12 )、676(26*26 )等,从程序中找出并输出所有满足上述条件的三位数。程序如下: main() int n,k,a,b,c;

15、for(k=1; ;k+) if(n100) if(n1+2&2|2*44-!0 后, x 的值为( )。(A)-l(B)O(C)1(D)56、 以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子:(x)/(y x z)的c语言表达式是()。(A)x/y*z (B)x*(1/(y*z)(C) x/y*1/z(D)x/y/z7、设有以下说明语句struct exint x ; float y; char z; example;则下面的叙述不正确的是()。(A)struct 是结构体类型的关键字 (B)example 是结构体类型名(C)x, y, z都是结构体成员名(D)s

16、truct ex是结构体类型8、假定 w 、 x、 y、 z、 m 均为 int 型变量;有如下程序段:w=1;x=2 ; y=3;z=4;m=(wx)?w : x;m=(my)?m : y; m=(mz)?m: z;则该程序段执行后,m的值是()。(A)4(B)3(C)2(D)19、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()(A) 地址传递(C) 由实参传给形参,再由形参传回实参10、以下定义语句中,错误的是()。(B) 单向值传递(D) 传递方式由用户指定(A)int a=1 , 2;(B) char *a3;(C)char s10=text ;(D) int

17、n=5,an;11、下列程厅执行后的输出结果是()main() char arr24 ; strcpy(arr,you) ; strcpy(arr1,me);arr03=& ;printf(%sn,arr) ;(A)you&me (B)you (C) me (D)err12、标有 /* */ 的语句的执行次数是( ) int y, i;for(i=O ;ipup.sex18、若已定义了如下的共用体类型变量(C)(*p).pup.sex (D)(*p).sex x ,则 x 所占用的内存字节数为(union data int i;char ch;double f;x ;(A) 7 (B) 11

18、(C)8 (D) 1019、若有下面的说明和定义: struct test int m1 ; char m2;float m3; union uu char u15;int u22;ua; myaa;则 sizeof(struct test) 的值是 ( )(A)fopen(A : userabc.txt ,r)(C)fopen(A : userabc.txt,rb)(B) fopen(A : userabc.txt ,r+)(D) fopen(A :userlabc.txt , w)(A) 12 (B) 16 (C) 14 (D)920、若要打开:A 盘上 user 子目录下名为 abc.t

19、xt 的文本文件进行读、写操作,下面符合此要求的函数调用是( )第二部分:简单程序 (12 题,共 30 分) 21、以下程序的运行情况是()main()int i=1,sum=0 ;while(i=85);caseB:caseC: printf(=60) ;caseD: printf(=85(B)=60(C)=6060errormain()23.有如下程序 int x=23;do printf(%d ,x-);while(!x) ; 该程序的执行结果是(A)321 (B)2324.有如下程序(C)不输出任何内容(D)陷入死循环int func(int a,int b) return (a+b

20、);main()int x=2, y=5,z=8 ,r;r=func(func(x ,y),z);printf(%dn,r) ;该程序的输出结果是 (A) 12(B) 13(C)14(D)1525. 以下程序的输出结果是() 。main() int a , b;for(a=1 ,b=1; a=10) break ;if(b%3=1) b+=3 ; continue;printf(%dn,a);(A)101 (B) 6 (C)5 (D)426. 以下程序的输出结果是() 。int a, b;void fun() a=100; b=200;main() int a=5 , b=7 ;fun() ;

21、printf(%d%dn , a,b);(A) 100200 (B)57 (C)200100 (D)7527. 下面的程序执行后,文件 testt 中的内容是 ( ) #include void fun(char *fname,char *st) FILE *myf; int i;myf=fopen(fname,w);for(i=0 ;istrlen(st);i+)fputc(sti ,myf) ; fclose(myf) ;main() fun(test.t,new world);fun(test.t,hello,);(D)hello,rld(A) hello , (B)new,worldh

22、ello (C) new,world28. 以下程序的运行结果是() 。#include main()static char s30=abcdefg ;static char t=abcd ;int i,j ;i=0;while(si!=0)i+;j=0;whi1e(tj!=0) si+j=tjj+ ; si+j=0 ;printf(%sn , s);(A) abcdabcdefg (B)abcdefg (C)abcd(D)abcdefgabcd 29. 有如下程序main() char ch25=6937 , 8254,*p2;int i, j, s=0 ;for(i=0 ; i2;i+)p

23、i=chi;for(i=0 ;i0 ;j+=2)s=10*s+pij-0 ;printf(%dn , s); 该程序的输出结果是( ) 。(A)69825 (B)63825 (C)6385 (D)69382530. 若已建立如下图所示的单向链表结构在该链表中 ,指针 p,s 分别指向图中所示结点,则不能将s 所指的结点插入到链表末尾仍构成单向链表的语句组是( ) 。(A) p=p-next;s-next=p;p-next=s;(B) p=p-next;s-next=p-next;p-next=s;(C) s-next=NULL;p=p-next;p-next=s(D) p=(*p).next;

24、(*s).next=(*p).next; (*p).next =s;31. 请选择正确的运行结果填入() 中。include int x,y ;num()int a=15,b=10 ;int x , y;y=a-b;y=a+b;return;main() int a=7,b=5 ;x=a+b ;y=a-b;num() ; printf(%d ,%dn ,x,y);(A) 12,2 (B) 5,25 (C)2,12(D) 不确定32. 以下程序的输出结果是() 。#define M(x,y,z) x*y+zmain() int a=1 ,b=2, c=3;printf(%dn , M(a+b,b

25、+c,c+a) ; (A)19 (B)17 (C)15 (D)12第二卷说明: (1) 第二卷含两大题,均属填空题,每题各有5 个空栏,在阅读和理解原题程序的基础上,在空栏处填入适当的字符、语句,以构成一个正确的 C 语言程序。(2) 每空栏填对得 3 分,两大题共 10 个空栏,全对得 30 分。试题一: 有一函数,实参传来一个字符串,统计此字符串中字母、数字、空各和其他字符的个数,在主函数中 输入字符串以及输出上述的结果。int letter,digit,space,others; /* 是全局变量 */main()int count(char (1);char text80 ; prin

26、tf(nlnput string :n) ; (2)_; printf(string :) ; puts(text) ; letter=O; digit=O ; space=O; others=O; (3);printf(letter :%d,digit : %d,space: %d,other: %dn,letter,digit , space,others); int count(char str)int i ;for(i=O ; stri!=0 ; i+)if(4)=a&stri=A&stri=0&stris2时,返回它们两者的 第一个不同的字符的 ASCII码差值(如“ BOY ”与“

27、BAD ”,第二个字母不同,“0”与“ A”之差为79-65=14); 如果s1s2,则输出正值;如果sls2,则输出负值。main() int m ;char _(6), str220 , *p1,*p2 ;printf(Input two string : n);scanf(%s,strl) ;scanf(%s , _(7);p1=&strl0;p2=(8);m=strcmp(p1,p2) ;printf(result:%d,n,m);strcmp(char _(9),char *p2)/*两个字符串比较的函数 */ int i ;( 1 0) ;while(*(pl+i)=*(p2+i)

28、if(*(p1+i+)=0) return(0) ;return(*(pl+i)-*(p2+i); /* 不等时返回结果为第一个不等字符 ASCII 码的差值 */参考答案第一卷第一部分:基础知识I. A 2.B 3.B 4.A 5.C 6.A 7.B 8.D 9.B 10.DII. A 12.C 13.A 14.A 15.D 16.C 17.D 18.C 19.A 20.B第二部分:简单程序21.D 22.C 23.B 24.D 25.D 26.B 27.A 28.D 29.C 30.A 31.A 32.D第二卷试题一:1、str2、gets(text)或 scanf( “ s”,text)

29、3、count(text)4、 stri5、 others+试题二: 6、 str1207、 str28、 &str209、 *p110、 i=0C语言程序设计(卷)考核班级学生数 印数 考核方式闭卷考核时间120分钟(本试卷包括第一卷和第二卷,答卷时间总共120分钟)第一卷 本卷共70分,其中第126题每题2分,第2732题每题3分。 第一部分:基础知识1、一个C语言程序是从 开始执行的。A、程序中的第一个语句B、包含文件(头文件)的第一个函数C、名为ma in的函数 D、程序中的第一个函数2、语句while(!E) 中的条件! E等价于A、E=0 B、E!=1 C、E!=0 D、E3、若有

30、以下类型说明语句:char w;int x;float y;double z;则表达式w*x+z-y的结果为类型。A、float B、double C、int D、char4、一个函数返回值的类型是由 决定的A、return语句中的表达式类型;B、定义函数时所指定的函数类型C、调用该函数的函数的类型D、调用函数时临时类型5、设x、y、z和k都是int型变量,则执行下列表达式后,变量x的值为x=(y=4,z=16,k=32);A、 4 B、 16 C、 32 D、 526、有以下程序:mai n() int i=10,j=1;printf(“ d,%” -,-,+j);执行后输出的结果是A、9,

31、 2 B、10, 2 C、9, 1 D、10, 17、以下指针s的指字符串的长度为 char *s= ” Namen ”;A、19 B、15 C、18 D、-128、设有语句int a=3;则执行了语句 a+=a-=a*a ;后,变量a的值是A、3 B、0 C、9 D、-129、对于下面的for循环语句,可以断定它 。for(x=0,y=0;(y!=123)&(x4);x+)printf( - “);A、是无限循环(死循环)B、循环次数不定C、共执行4次循环D、共执行3次循环10、设有以下语句,则 不是对a数组元素的正确引用,其中0 iint a10=0 ,1,2,3,4,5,6,7,8,9

32、;int *p=a;A、ap-5 B 、*(&ai) C 、ai D 、*(a+i)11、 为了判断两个字符串si和s2是否相等,应当使用 A、 if(s1=s2) B 、 if(s1=s2)C、 if(strcmp(s1,s2) D 、 if(strcmp(s1,s2)=0)12、对于 C 语言程序中的函数,下列叙述中正确的是 A、函数的定义不能嵌套,但函数调用可以嵌套B、函数的定义可嵌套,但函数的调用不能嵌套C、函数的定义和调用均不能嵌套D、函数的定义和调用均可嵌套13、有以下程序main() int i;for(i=0;i5)printf(“n%”d ,m);elseprintf(“ %

33、n”d ,m-);A、 7 B、 6 C、 5 D、 423、当 a=1, b=3, c=5, d=4 时,执行下面一段程序后, x 的值为 if (ab)if(cd)x=1;else if(ac)if(bd)x=2;elsex=3;elsex=6;else x=7;A、1 B、2 C、3 D、624、以下程序企图把从终端输入的字符输出到名为 abc.txt 的文件中,直到从终端读入字符 #号时结束输入和输出操作,但程序有错。出错的原因是 #include main( ) FILE *fout;char ch;fout=fopen( abc.txt , w );ch=fgetc(stdin);

34、while(ch!= #)fputc(ch,fout);ch=fgetc(stdin);fclose(fout);A、函数fopen调用形式有误B、输入文件没有关闭C、函数fgetc调用形式有误D、文件指针stdin没有定义25、有以下程序,执行后输出结果是 main()union unsigned int n;unsigned char c;ul;ul.c= A;printf(“n%”c,ul.n);A、产生语法错B、随机值 C、A D、6526、有以下程序,执行后输出结果是 main() int m 3=1,4,7,2,5,8,3,6,9;int i,k=2;for(i=0; i3; i+

35、)printf( “%d”, mki);A、4 5 6 B、2 5 8 C、3 6 9 D、7 8 927、以下程序运行后,输出结果是 int func(int a, int b) static int m=0,i=2; i+=m+1;m=i+a+b; return(m);main() int k=4,m=1,n; n=func(k, m);printf( “ %d”, , n);n=func(k, m);printf( “ %d);” , nA、8, 15 B、8, 16 C、8, 17 D、8, 828、在执行以程序时,如果从键盘上输入:ABCdef ,则输出结果为:#include main( ) char ch; while(ch=getchar()!= n) if(ch= A &ch= a & ch= z ) ch=ch-32;printf( “ %c” ,ch);printf( n“” );A 、 ABCdef B 、abcDEF C、 abc

温馨提示

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

评论

0/150

提交评论