1、C 语言程序设计 ( 卷)考核班级学生数 印数 考核方式 闭卷 考核时间 120 分钟(本试卷包括第一卷和第二卷,答卷时间总共 120 分钟)第一卷第一部分:基础知识(20 项,共 40 分)1一个 C 语言程序是由( ) 组成的。A主程序 B子程序 C函数 D过程2转换说明符%x 的输出形式是( ) 。A十进制 B八进制 C十六进制 D二进制3若 a、b 均为 int 型变量,且a=100,则关于循环语句for(b=100;a!=b;+a,+b)printf ( “ -“) ;的正确说法是( ) 。A循环体只执行一次 B死循环C循环体一次也不执行 D输出-4若 x、y、z 均为 int 型变
2、量,则执行下列语句后的 z 值为 ( ) 。x=1; y=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是结构体
3、变量19由系统分配和控制的标准输出文件为( ) 。A键盘 B磁盘 C打印机 D显示器20C 语言标准库函数fread(fd,buffer,n)的功能是( ) 。A从文件 fd 中读取长度不超过 n 个字节的数据送入 buffer指向的内存区域B从文件 fd 中读取长度不超过 n-1 个字节的数据送入buffer 指向的内存区域C从文件 fd 中读取长度不超过 n 个字符送入 buffer 指向的内存区域D从文件 fd 中读取长度不超过 n-1 个字符送入 buffer 指向的内存区域第二部分:简单程序(12 项,共 30 分)21下列程序main() int x,y,z;x=y=2;z=3;y
4、=z+-1;printf(“%dt%dt”,x,y);y=+x-1;printf(“%d t%dn”,x,y);y=z-1;printf(“%dt%dt”,z,y);y=-z-1;printf(“%dt%dn”,z,y);运行后输出的数据为?_。A. 3 1 4 2 B. 3 1 3 3 C. 2 2 3 2 D. 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;i%sn”,a);c=aj-1,i=2+j;printf(“a
5、%d=%cn”,i,c);运行后输出的数据为_ .A. computer-computer B. computer-retupmoca3=u a5=mC. computer-retupmoc D. computer-retupmoca4=p a2=t23.下列程序int sum(int n) int p=1,s=0,i;for(i=1;imain() char a40,b40;int i,j;printf(“Enter the string:”);scanf(“%s”,a);i=j=0;while(ai!=0) if(!(ai=0int i,j;printf(“Enter the string
6、:”);scanf(“%s”,a);i=0;while(ai!=0) if(ai=Achar ch;double f;x;(A) 7 (B) 11 (C)8 (D) 1019、若有下面的说明和定义:struct test int m1;char m2;float m3;union uu char u15;int u22;ua; myaa;则 sizeof(struct test)的值是 ( ) 。(A) 12 (B) 16 (C) 14 (D)920、若要打开:A 盘上 user 子目录下名为 abc.txt 的文本文件进行读、写操作,下面符合此要求的函数调用是( ) 。(A)fopen(“A
7、:userabc.txt“,“r“) (B) fopen(“A:userabc.txt“,“r+“)(C)fopen(“A:userabc.txt“,“rb“) (D) fopen(“A:userlabc.txt“,“w“)第二部分:简单程序(12 题,共30 分)21、以下程序的运行情况是( ) 。main()int i=1,sum=0;while(i=85“);case B:case C: printf(“=60“);case D: printf(“=85 (B)=60 (C)=60=10) break;if(b%3=1) b+=3; continue;printf(“%dn“,a);(A
8、)101 (B) 6 (C)5 (D)426.以下程序的输出结果是( ) 。int a,b;void fun() a=100;b=200;main() int a=5,b=7 ;fun();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; imain()static char s30=“abcdefg“;st
9、atic char t=“abcd“;int i,j;i=0;while(si!=0)i+;j=0;whi1e(tj!=0) si+j=tj;j+; 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; i0;j+=2)s=10*s+pij-0;printf(“%dn“,s);该程序的输出结果是( ) 。(A)69825 (B)63825 (C)6385 (D)69382
10、530.若已建立如下图所示的单向链表结构在该链表中,指针 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;(*s).next=(*p).next; (*p).next =s;31.请选择正确的运行结果填入( ) 中。include int x,y;num()int a=15,b=10;int x,y;y=a-b;
11、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+c,c+a) ;(A)19 (B)17 (C)15 (D)12第二卷说明:(1)第二卷含两大题,均属填空题,每题各有 5 个空栏,在阅读和理解原题程序的基础上,在空栏处填入适当的字符、语句,以构成一个正确的C 语言程序。(
12、2)每空栏填对得 3 分,两大题共 10 个空栏,全对得 30 分。试题一:有一函数,实参传来一个字符串,统计此字符串中字母、数字、空各和其他字符的个数,在主函数中输入字符串以及输出上述的结果。int letter,digit,space,others; /*是全局变量*/main()int count(char _(1)_);char text80;printf(“nlnput string:n“);_(2)_;printf(“string:“);puts(text);letter=O;digit=O;space=O;others=O;_(3)_;printf(“letter:%d,digi
13、t: %d,space:%d,other: %dn“,letter,digit,space,others); int count(char str)int i;for(i=O;stri!=0;i+)if(_(4)_=aelseprintf(“%d n”,m-);A、7 B、6 C 、 5 D、423、 当 a=1, b=3, c=5, d=4 时,执行下面一段程序后,x 的值为_if (amain( ) FILE *fout;char ch;fout=fopen( abc.txt,w);ch=fgetc(stdin);while(ch!=#)fputc(ch,fout);ch=fgetc(st
14、din);fclose(fout);A、函数 fopen 调用形式有误 B、输入文件没有关闭C、函数 fgetc 调用形式有误 D、文件指针 stdin 没有定义25、 有以下程序,执行后输出结果是_main()union unsigned int n;unsigned char c;ul;ul.c=A;printf(“%cn”,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; imain( ) char ch;while(ch=getchar()
15、!=n) if(ch=Aif(x=0|x=1)return (2);p=x*func(x-1);return (p);main( )printf(“%d n”,func(4);A、8 B、12 C 、 24 D、4832、 下面的程序运行后,全局量 t.x 和 t.s 的正确结果为_struct tree int x;char *s;t;func(struct tree t) t.x=10;t.s=”computer”;return(0);main() t.x=1;t.s=”minicomputer”;func(t);printf(“%d, %s ”, t.x, t.s);A、10, comp
16、uter B、1, computer C、1, minicomputer D、10, minicomputer第二卷说明:(1)第二卷均为填空题,在阅读和理解原题程序的基础上,在空栏处填入适当的字符、语句以构成一个正确的 C 语言程序。(2)答本卷的题目时,要在本卷答题纸上编号对应的栏目中,用钢笔或圆珠笔书写。用铅笔答题无效,在试题上直接答题者无效。请勿在第一卷的答题卡上填写本卷答案。(3)每空栏 3 分,共 10 个空栏,共 30 分。试题一 下列程序是求1+1/2+1/4+1/50 的值。#include “stdio.h”main( ) int i=2;float sum=1;while
17、 (_(1)_) sum=sum+1.0/i;_(2)_;printf(“sum=%f”, sum);试题二 下列函数用于统计一行字符中的单词个数,单词之间用空格分隔。word_num(char str )int i, num=0, word=0;for(i=0; stri!=_(3)_; i+)if(_(4)_= )word=0;else if(word=0) word=1;_(5)_;return(num);试题三 以下函数的功能是删除字符串 s 中的所有数字字符。void dele (char *s) int n=0,i;for(i=0; si; i+)if(_(6)_)sn+=si;s
18、n=_(7)_;试题四 以下程序的功能是:从键盘输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。main( ) float x1000, sum = 0.0, ave, a ;int n=0, i;printf(“Enter mark:n”);scanf(“%f”,while(a=0.0 (26)以下程序的输出结果是( ) 。main()int a44=l,3, 5,2,4,6,3,5,7 ;prinff( “%d%d%d%dn“,a03,a12,a21,a30 ) ; A)0650 B)1470 C)5430 D)输出值不确(27)以下程序的输出结果
19、是( ) 。#include main()char st20=“hello0t“;printf(“%d%dn“ ,stden(st,sizeof(st) ) ; A)9 9 B)5 20 C)13 20 D)20 20(28)以下程序的输出结果是( ) 。amovep(int *p,int ( *a)3,int n) int i,j;for(i=0;ix, (h1.p)-y) ;A)12 B)23 C)14 D)32(30)以下程序的输出结果是( ) 。main() int a,b;for(a=l,b=l;a=10)break;if(b%3=1 ) b+=3; continue;printf(
20、“%dn“ ,a) ;A)101 B)6 C)5 D)4(31)以下程序的输出结果是 ( ) 。union myun struct int x,y,z;u;int k;a;main() a.u.x=4;a.u.y=5;a.u.z=6;a.k=0;printf(“%dn“ ,a.u.x) ;A)4 B)5 C)6 D)0(32)以下程序的输出结果是( ) 。int a,b;void fun() a=100;b=200;main() int a=5,b=7;fun() ;printf(“%d%dn“,a,b) ;A)100200 B)57 C)200100 D)75(33)以下程序的输出结果是 (
21、 ) 。#define M(x,y,z ) x*y+zmain() int a=l,b=2,c=3;printf(“%dn“,M (a+b,b+c,c+a) ) ;A)19 B)17 C)15 D)12(34)整型变量 X 和 Y 的值相等,且为非 0 值,则以下选项中,结果为 0 的表达式是( ) 。A)x|y B)x|y C)xprintf(“n“) ;(30) 以下程序的输出结果是 ( ) 。A)1 B)2 C)3 D)4long fun(int n) long s;if(n=1|n=2)s=2;else s=n-fun(n-1) ;return s:main() printf(“%ld
22、n“,fun(3) ); (31)以下程序的输出结果是( ) 。A)16 B)2 C)9 D)1#define SQR(X) X*Xmain() int a=16,k=2,m=l;a/=SQR(k+m)/SQR( k+m) ;printf(“%dn“ ,a) ;(32)若定义了以下函数:void f() *p=(double *)malloc( 10*sizeof(double) ) ;p 是该函数的形参,要求通过 p把动态分配存储单元的地址传回主调函数,则形参 p 的正确定以应当是 ( ) 。A)double *p B)float *p C)double *P D)float *p(33)以
23、下程序的输出结果是( ) 。A)10 B)11 C)51 D)60struct st int x; int *y;*p;int dt4=10,20,30,40;struct st aa4=50,data nextheadp q(35)以下程序的输出结果是( ) 。A)0 B)1 C)2 D)3main() int x=05;char z=a;printf(“%dn“ , (x(7)用以下语句调用库函数malloc 使字符指针st 指向具有 11 个字节的动态存储空间,请填空。st=(char *) 7 ;(8)下列程序段的输出结果是 8 。int n=c;switch (n+) default
24、:printf (“error“);break;case a: case A: case b: case B: printf(“good“ ); break;case c: case C: printf(“pass“ );case d: case D: printf(“warn“);(9)下程序的输出结果是 9 。void fun(int *n) while(*n)- );printf(“%d“,+(*n) );main() int a=100;fun(10)以下程序用来输出结构体变量 ex 所占存储单元的字节数,请填空。struct st char name20;double score;;
25、main() struct st, ex;printf(“ex size:%dn“ ,sezeof( 10 ) ;(11)下面程序把从终端读入的文本(用作为文本结束标志)输出到一个名为 bi.dat 的新文件中。请填空。#include “sidioh“FILE *fp;main() char ch;if(fp=fopen( l1 ) )=NULL)exit(0) ;while(ch=getchar () )!=) fputc(ch,fp);fclose(fp);(12)若变量 n 中的值为 24,则prnt 函数共输出 l2 行,最后一行有 l3 个数。void prnt(int n, in
26、t aa ) int i;for(i=l;i=n;i+ ) printf(“%6d“,aai) ;if(!(i%5 ) )printf(“n“) ;printf(“n“) ;(13)以下程序中,主函数调用了 LineMax 函数,以实现在 N行 M 列的二维数组中找出每一行上的最大值。请填空。#define N 3#define M 4void LineMax(int xNM) int i,j,p;for(i=0;iN;i+) p=0;for(j=1;jM;j+ )if(xiPxij) l4 ;printf(“The max value in line%d is %dn“,i,xip) ;ma
27、in() int xNM=1,5,7,4,2,6,4,3,8,2,3,1;l5 ;参考答案一、选择题1.C 2.B 3.C 4.A 5.A 6.B 7.C 8.B 9.C 10.A11.D 12.C 13.D 14.C 15.C 16.A 17.C 18.B 19.C 20.D21.B 22.B 23.C 24.B 25.C 26.A 27.D 28.A 29.D 30.A31.B 32.C 33.C 34.B 35.B二、填空题1 有穷性 2 n2 3 单入口单出口 4概念5 不可分解 6 2,1 7 malloc 或malloc(sizeof(char*11)8 passwarn 9 0 10 struct st 或x11 “bi.dat“,“w“或“bi.dat“,“w“或“bidat“,“W+t“12 5 13 4 14 p=j 15 LineMax(x)