C语言 模拟试题+答案

更新时间:2023-03-08 07:37:13 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

附录四 模拟试题

模拟试题一

一、选择题(从下列各题所列选项中选出正确答案。40分,每题 1 分): 1.C 语言源程序的基本单位是( )。

A)过程 B)子程序 C)函数 D)标识符 2.在C语言的类型说明中,int、char、short等类型的长度是( )。

A)由用户自己定义的 B)固定的 C)与机器字长有关 D)任意的 3、以下语句的输出结果是( )。

int a=110,b=017; printf(“%x,%d”,a++,b++);

A)6e,15 B)6e,16 C)6f,15 D)6f,16 4、表示条件x≥y≥z的C语言表达式是( )。

A)(x >= y)&(y >= z) B)(x >= y)&&(y >= z) C)(x >= y).AND.(y >= z) D)(x >= y >= z) 5、设有说明语句 char ch = ‘\\72’;则变量 ch ( )。

A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明不合法 6、下列程序段不是死循环的是( )。

A)k=0; B)i=100; do { while(1)

+ + k; { i = i 0+1;

}while(k>=0); if (i > 100) break;} C)s =3379; D)for(;;) while(s++%2+s%2) s++;

7、下述对C语言字符数组的描述中错误的是( )。

A)字符数组可以存放字符串

B)字符数组中的字符串可以整体输入、输出

C) 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D)不可以用关系运算符对字符数组中的字符串进行比较 8、给出以下两个字符数组的定义,则正确的叙述为( )。

char x[ ]=\

char y[ ]={'a','b','c','d','e','f','g'};

A)数组x和数组y等价 B)数组x和数组y的长度相同

C)数组x的长度大于数组y的长度 D)数组x的长度小于数组y的长度 9、定义如下变量和数组:

int i;

int x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是( )。

for(i=0;i<3;i++) printf(\

A)1 5 9 B)1 4 7 C)3 5 7 D)3 6 9 10、以下叙述中不正确的是( )。

A)在不同的函数中可以使用相同名字的变量 B)函数中的形式参数是局部变量

C)在一个函数内定义的变量只在本函数范围内有效

D)在一个函数内的复合语句中定义的变量在本函数范围内有效

11、设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执

行的语句是( )

A)k=*p1+*p2; B)p2=k; C)p1=p2; D)K=*p1 * (*p2); 12、设有如下定义:

int arr[]={6,7,8,9,10}; int * ptr;

则下列程序段的输出结果为( )。 ptr=arr;

* (ptr+2)+=2;

printf (\

A)8,10 B)6,8 C)7,9 D)6,10 13、以下程序的输出结果是( )。

main()

{ int i,k,a[10],p[3]: k=5;

for (i=0;i<10;i++) a[i]=i;

for (i=0;i<3;i++) p[i]=a[i*(i+1)]; for (i=0;i<3;i++) k+=p[i]*2; printf(\}

A)20 B)21 C)22 D)23 14、执行以下程序段后,m的值为( )。

int a[2][3]={ {1,2,3},{4,5,6} }; int m,*p; p=&a[0][0];

m=(*p)*(*(p+2))*(*(p+4));

A)15 B)14 C)13 D)12 15、设有如下定义:

char *aa[2]={\则以下说法中正确的是( )。

A)aa数组成元素的值分别是\和ABCD\

B)aa是指针变量,它指向含有两个数组元素的字符型一维数组

C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D)aa数组的两个元素中各自存放了字符'a'和'A'的地址 16、有以下程序段

char arr[]=\char *ptr;

main() { union

{ int k; char i[2]; } *s,a; s=&a;

s->i[0]=0x39; s->i[1]=0x38; printf(\}

输出结果是( )。

A)3839 B)3938 C)380039 D)390038 17、有以下程序

main()

{ int a,b,c=246; a=c/100%9; b=(-1)&&(-1);

printf(\}

输出结果是( )。

A)2,1 B)3,2 C)4,3 D)2,-1 18、有以下程序

struct stu

{ int num; char name[10]; int age; }; void fun(struct stu *p)

{ printf(\main() {

struct stu students[3]={{9801,\

{9803,\

fun(students+2); }

输出结果是( )。

A)Zhang B)Zhao C)Wang D)18 19、设有以下说明和定义:

typedef union

{ long i; int k[5]; char c; }DATE; struct date

{ int cat; DATE cow; double dog; } too; DATE max;

则下列语句的执行结果是( )。

printf (\A)26 B)30 C)18 D)8 20、有以下程序

main( )

{ char a[]=\char *p1,*p2; int i;

p1=a; p2=b;

for(i=0;i<7;i++)

if(*(p1+i)==*(p2+i)) printf(\%c\输出结果是( )。

A)gm B)rg C)or D)ga 21、有以下程序

viod fun (int a,int b,int c) { a=456; b=567; c=678;} main( )

{ int x=10, y=20,z=30; fun (x,y,z);

printf(\}

输出结果是( )。

A)30,20,10 B)0,20,30 C)456,567,678 D)678,567,456 22、有以下程序

int fun(int x,int y,int *cp,int *dp) { *cp=x+y; *dp=x-y; } main( )

{ int a, b, c, d; a=30; b=50;

fun(a,b,&c,&d);

printf(\}

输出结果是( )。

A)50,30 B)30,50 C)80,-20 D)80,20 23、有以下程序

main( ) { int i, j;

for(j=10;j<11;j++)

{ for(i=9;i=j-1; )printf(\}

输出结果是( )。

A)11 B)10 C)9 D)10 11 24、有以下程序

int abc(int u,intv); main ( )

{ int a=24,b=16,c; c=abc(a,b);

printf('%d\\n\}

int abc(int u,int v) { int w;

while(v) { w=u%v; u=v; v=w } return u; }

输出结果是( )。

A)6 B)7 C)8 D) 9 25、设有以下定义:

int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*prt)[3]=a,*p=a[0]

则下列能够正确表示数组元素a[1][2]的表达式是( )。 A)*((*prt+1)[2]) B)*(*(p+5)) C)(*prt+1)+2 D)*(*(a+1)+2) 26、下列用户标识符中不合法的是( )。

A)average B)_234 C)INT D)file.c 27、下面C常量中不合法的是( )。

A)’XYZ\\0’ B)0.02e-2 C)’\\n’ D)0xfff

28、设 int a ; float b = 12.671 ; a = b ; 则变量a 的值为( )。

A)0.671 B)12.7 C)13 D)12

29、调用scanf( “ -%c/ ” , &a , &b , &c ) ; 时,若从键盘输入 1234.567 ,则

a , b , c 的值分别是( )。

A)1234 , ‘.’ , 56 B)12 , 3 , 4.56 C)12 , ‘3’ , 4.56 D)12 , ‘3’ , 4.0 30、设 char a , b ; 下面函数调用中只有( )是正确的。

A)putchar ( a , b ) ; B)putchar ( a ) ;

C)getchar ( a ) ; D)scanf( “%c %c” , a , b ) ; 31、设有 struct point_type { int x ; int y ; } point ; 则下列正确的赋值语句是( )。 A)point_type.x = 200 ; B)point = { 200 , 300 }

C)point . x = 200 ; D)point -> x = 200 ; 32、下面( )不是C语言的正确表达式。

A)2 + 3 = 5 B)2 + 3 > 5 C)a = a D)a < a 33、表达式 – 13 % 5 的值为( )。

A)- 2 B)- 3 C)2 D)3

34、设 int x = 1 , y = 2 , z = 3 ; 则表达式 x = = z || x + y > z 的值是( )。

A)0 B)1 C)2 D)3

35、设 int a = 5 , b = 3 ; 则表达式 a * = a + b 的值是( )。

A)28 B)20 C)40 D)45

36、设 int a = 1 , b = 2 ; 能正确表示代数式 1/ab 的C语言表达式是( )。

A)1.0 / ( b * a ) B)1.0 / b * a

C)1 / a / b D)1 / ( a * b ) 37、下面4个条件语句中,( )与其他3个语句不等价(其中s1,s2,s3是C语言语句)。

A)if ( a ) s1 ; else s2 ; B)if ( a = = 0) s2 ; else s1 ; C)if ( ! a ) s1 ; else s2 ; D)if ( a != 0 ) s1 ; else s2 ; 38、表达式 a > b ? a : c > d ? c : d 相当于( )。

A)a > b ? a : ( c > d ? c : d ) B)a > b ? ( a : c > d ? c : d ) C)a > b ? ( a : c ) > d ? c : d D)( a > b ? a : c ) > d ? c : d 39、下面关于指针变量的叙述中,不正确的是( )。

A.一个变量的地址称为该变量的“指针” B.指针变量的值是内存的地址

C.因为内存地址是整型量,所以可以通过算术运算分配内存 D.一个整型指针所指的对象只能是整型量

40.下面函数的功能是求字符串的长度,下划线处应填上( )。 int flen ( char * s ) { int n = 0 ;

while ( ______ ) + + n ; return ( n ) ;

}

A)* s + + B)* s - - C)+ + * s D)- - * s

二、判断题(每小题1分,共10分)

1、 一个C程序可以由一个或多个源程序文件组成,而一个源程序文件又可以由一个或多个

函数组成。程序的编译单位是源文件而不是函数。( )

2、 函数调用时,实参的个数、类型必须与对应的形参保持一致,否则,编译程序往往不报

错而导致错误结果。( )

3、 在函数体中说明为static存储类别的变量,只在编译时赋一次初值,程序执行过程中

不再重新赋值。( )

4、 使用typedef可以定义一种新的数据类型。( )

5、 函数中未指定存储类别的变量,其隐含的存储类别是extern。( ) 6、 寄存器变量仅适用于局部变量,不能用于全局变量。( ) 7、 switch 语句必须与 break 语句同时使用。( ) 8、 在 C 语言中字符型数据和整形数据之间可以通用。( ) 9、 共用体类型的数据所占内存的大小是该类型各成员大小之和。( ) 10、ANSI C中只能用缓冲型文件系统处理文件操作。( )

三、填空题(每空2分,共24分)

1、设i,j,k均为int型变量,则执行完下面的for循环后,k的值为_____ 。

for(i=0,j=10;i<=j;i++,j--) k=i+j; 2、设有以下定义的语句:

int a[3][2]={10,20,30,40,50,60}, (*p)[2]; p=a;

则 *(*(p+2)+1)值为_____。

3、要使a=1,b=2,使用输入函数scanf(\从键盘输入时,应输入

______。 4、int m;

int *p; p=&m; *p=8;

执行后,m的值是______。

5、执行程序时的输入为:1234567,请写出运行结果_____。

main( ) { int x,y

scanf(\printf(\ }

6、设有以下程序,执行时从键盘输入:what your name? main( )

{ char str[30]; scanf(\printf(\输出结果为:______。

7、以下程序的输出结果为:________。 #include main ( )

{char *p[ ]={\ int i;

for (i=4,i>=0;i--) printf(\ printf(\ }

8、设有如下定义: struct student

{ int num;

char name[10]; char sex; }

其结构体名为:__________。若变量 stu 为以上 student 结构类型 , 则为该变量中 的成员num赋值1001,应使用语句:_________。 9、运行以下程序结果为:_________。 main( )

{ int x=3,i;

for(i=0;i<3;i++) printf(\ }

int f(int a) {int b=0; static c=3; b++; c++;

return(a+b+c); }

10、运行以下程序结果为:_______。 main( ) {

int a[ ]={5,6,7,8},i; f(a);

for(i=0;i<4;i++) printf(\

}

f(int *b) { int j;

for (j=0;j<4;j++) *(b+j)=j; }

11、设有变量定义:

struct { int x,y;} s[2]={{1,2},{3,4}},*p=s; 则表达式 p->x 的值为________。

12、ennum color {red,green,yellow =5,white,black}定义了一个枚举类型。编译程序为

值表中各标识符分配的枚举值依次为______。

四、程序填空(每空2分,共26分)

1、函数fun的功能是:使一个字符串按逆序存放,请填空

void fun (char str[ ]) { char m; int i,j;

for(i=0,j=strlen(str);i<______ __;i++,j--) { m=str[i];

str[i]=__ _____ _; str[j-1]=m; }

printf(\}

2、以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该

字符串,请填空. #include\#include\main()

{ char str[81],*sptr; int i;

for(i=0;i<80;i++) { str[i]=getchar(); if(str[i]=='\\n') break; }

str[i]=__ ____ __; sptr=str;

while(*sptr) putchar(*sptr_______); }

3、以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不

相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。请填空。

#include main()

{ char str[100],str2[100],c; int i,s;

printf(\printf(\i=0;

while((strl[i]==str2[i]&&(str1[i]!=_______)) i++;

s=______ __;

printf(\}

4、以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字

母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。请填空。 #include main()

{ FILE *fp;

char str[100]; int i=0;

if((fp=fopen(\ ______ __))==NULL) { printf(\printf(\while (str[i])

{ if(str[i]>='a'&&str[i]<='z') str[i]=__ ______ __; fputc(str[i],fp); i++; }

fclose(fp);

fp=fopen(\__ _____ __); fgets(str,100,fp); printf(\fclose(fp); }

5、以下程序可以把从键盘上输入的十进制数(long型)以二到十六进制形式输出,请填空。

main()

{char b[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; int c[64],d,i=0,base; long n;

printf(\printf(\do

{ c[i]=__ ____ __; i++; n=n/base; } while(n!=0);

printf(\for(--i;i>=0;--i)

{ d=c[i];

printf(\

}

}

6、下面程序找出数组a中的最小元素。 main ( )

{ static int a [ ] = { 4 , 3 , 1 , -7 , 10 , 12 , -2 , 6 , 9 , 25 } int i , min ; min = _________ ;

for ( i = 1 ; i < 10 ; i + + ) if ( _________ ) min = a [ i ] ;

printf ( “ min data is %d \\n” , min ) ;

}

模拟试题二

一、选择题(每小题1分,共30分) 1. C程序中主函数( )。

A)必须在程序的开头 B)必须在程序的后面 C)可以在程序的任何地方 D)必须在其它函数中间 2. C语言源程序要变为可执行程序必须要经过( )。

A)编辑.解释 B)解释.汇编 C)编辑.连接 D)编译.连接 3. 已知字母A的ASCII码为65,以下程序段的输出结果为( )。 Char c1=’A’,c2=’Y’;

Printf(“%d, %d”, c1, c2);

A)65,90 B)A,Y C)65,89 D)输出格式不合法 4. 以下程序的输出结果是( )。

main()

{ int i = -1;

printf(“%d, %u\\n”, i, i); }

A)–1, –1 B)–1,32767 C)–1,32768 D)–1, 65535 5. 下列C常量中不合法的是( )。

A)”\\007” B)6abcd C)0123 D)0xfff 6. 下列变量赋初值不正确的是( )。

A)float a=”12.34”; B)int x=’1’; C)int x=0; D)char x=65; 7. 在C语言中,要求运算数必须是整型的运算符是( )

A) / B) ++ C) != D) % 8. 变量的有效范围与其定义位置有关,( ) ,其作用域在整个源程序文件中都有效。

A)在第一个函数中定义的变量 B)在定义第一个函数之前所定义的变量 C)在主函数中定义的变量 D)在函数中定义的静态变量 9. 在C语言中,复合语句( )。

A)必须使用{ }将有关语句括起来 B)必须包含多条语句 C)必须出现在循环或分支中 D)以上三种都对

10. 设s1,s2为C语言语句,下面四个条件语句中除( )之外,其余三个语句是等价的。

A)if(a) {if (b) s1;} else s2; B)if(!a) s2;else if(b) s1;

C)if(a&&b) s1; else s2; D)if(a*b) s1;else if(!a) s2; 11. C语言的函数体中,下面的描述中( )是正确的。

A) 可以定义和调用其它函数 B)可以调用但不能定义其它函数 C)不可调用但可以定义其它函数 D)不可调用和定义其它函数 12. 在C语言中,switch语句后一对园括号中表达式的类型为( )。

A)可以是任何类型 B)只能为int类型 C)可以是整型或字符型 D)只能是整型或实型

13. 若一个函数体中定义与全局量相同的名字的变量x,在函数体内对x赋值,修改的是( )。

A)局部量x B)全局量x C)局部量和全局量都被修改 D)不确定 14. 已知函数fun定义如下:

int fun(int n) {int x; x=n-3; return (x); } 则函数调用fun(fun(10)) 的值是( )。

A)10 B)7 C)4 D)1 15. 已知int i=10,*p=&i;下面描述错误的是( )。

A)p的值为10 B)p指向整型变量i C)*p表示变量i的值 D)p表示变量i的地址 16.若有以下定义,则对a数组元素的正确引用是( )。 int a[5]={ 1, 2, 3, 4, 5 } ; * p=a ;

A)*a[1] B)a[p+1] C)&(p+1) D)p[a[2]] 17.若有说明:

char *language[]={“FORTRAN”, “BASIC”, “PASCAL”, “JAVA”, “C” }; 则printf( “%s” , language[2] ) 的显示结果值是( )。

A) BASIC B)PASCAL C)R D)一个地址值 18. 若有函数定义:

int *max(int a[], int len)

{ int i, *p ; /* 寻找最大值a[i] */ ; p=&a[i]; return(p);}

并且在主函数中说明了变量 int x[10], m, *pm ; 调用该函数的正确方法是( )。 A)x=max(x,10); B)m=max(x,10); C)pm=max(x,10); D)*pm=max(x,10);

19. 设有定义语句:struct R { int x; int y; }; struct R a[2]={{2,4},{6,8}};则

printf(“%d\\n” ,a[1].y); 的输出为( )。

A)2 B)4 C)6 D)8 20. 设有以下函数的定义,则返回的函数值是( )。

main( ) int * fun(int * a) {int x, *y; { int * t; y=fun(&x); *a=99;

} t=a;

return t;}

A)无确切值 B)形参a的地址

C)主程序中变量x的地址 D)函数中变量t的地址 21. 有如下程序,该程序的输出结果是( )。

main( )

{ int x=1,a=0,b=0; switch(x)

{ case 0: b++; case 1: a++ case 2: a++;b++ }

printf(“a=%d,b=%d\\n”,a,b); }

A)a=2,b=1 B)a=1,b=1 C)a=1,b=0 D)a=2,b=2 22. 设有如下定义,则对data中的成员的正确引用是( )。

struct { int x ; float y; } data , *p = &data ;

A)(*p).data.x B)p->x C)p->data.x D)(*p).data 23. 以下叙述中不正确的是( )。

A)一个变量的作用域完全取决于变量说明语句的位置 B)外部变量可以在函数以外的任何位置定义

C)局部变量的生存期只限于本次函数调用,无法将局部变量的值保存至函数的下一次调用

D)用static说明的一个外部变量是为了限制其他编译单位的引用 24. 当调用函数时,实参是一个数组名,则向函数传送的是( )。

A)数组的长度 B)数组的首地址

C)数组每一个元素的地址 D)数组每个元素中的值 25. 设有以下说明语句

struct ex

{ int x ; float y; char z ;} example; 则下面的叙述中不正确的是( )。 A)struct结构体类型的关键字 B)example是结构体类型名 C)x,y,z都是结构体成员名 D)struct ex是结构体类型 26. 以下只有在使用时才为该类型变量分配内存的存储类说明是( )。

A)auto和register B)auto和static

C)register和static D)extern和register 27. 下面是对s的初始化,其中不正确的是( )。

A)char s[5]={“abc”}; B)char s[5]= {‘a’,’b’,’c’}; C)char s[5]=\; D)chars[5]=\; 28. 若有说明int(*p)[3];则以下( )是正确的叙述。

A)p是一个指针数组 B)(*p)[3] 与*p[3]等价

C)p是一个指针,它可以指向一个一维数组中任一元素

D)p是一个指针,它只能指向一个包含3个int类型元素的一维数组

29. 如有以下定义:int y[4][4]={1,2,3,4,5,6,7,8,9,10}, *py1=y[1], (*py2)[4]=y; 则

不能正确引用值为7的数组元素的表达式是( )。

A)*(y[1]+2) B)*(y+1)+2 C)py1[2] D)

py2[1][2]

30. 设有:char s[]=\则以下叙述中正确的是( )。

A) 数组s的内容与指针变量p中的内容相同 B) 数组s的长度与strlen(p)的值相等 C) p[5]的值等于s[5]的值 D) sizeof(s)等于sizeof(*p)

二.填空题。(每空1分,共16分)

1. C 程序可以由多个函数组成,其中必须有且只能有一个名字为 函数。

2. 用高级语言编写的源程序必须通过 程序翻译成二进制程序才能执行,这个二进程

序称为 程序。

3. 在程序中若要使用fabs( )必须使用文件包含命令为 。 4. 逻辑运算符两边的运算对象的数据类型可以是 的数据。 5. 若有定义:int a=3; 表达式(4*5,a=a*2),a+6的值是 ,变量a的值是 。 6. 自增自减运算符的运算对象只能为 ,不能为常量和表达式。 7. 在嵌套if语句中else 总是与 的if配对。

8. 定义文件型指针fp的语句是 ,文件类型在 头文件中定义。 9. 用数组名作为函数调用的实参,则传递给形参的是 。

10.在C语言中,变量的存储类别有四种,它们是 、 、 、_ 。

三、阅读程序,写出运行结果:(每题3分,共24分)0 1. main() 2. main ()

{ int i=3; { int a[]={1,2,3,4,5}, y; switch(i) y=sub(a,5) ;

{ case 4:i+=1; printf(\ case 5:i+=1; break; sub(int s[], int len) case 6:i+=1; break; { int i,sum=0;

default:i+=1; for (i=0; i

3. main ( ) 4. main()

{ int s = 0 , i ; { int f();int x=2,y=4;

for( i = 1; i<10; i++ ) printf(\ if (i%3) printf(\ continue ; int f(int *x,int y) else s+=i ; { *x=*x+y; y=*x+y;

printf (\ return y; }

5. main ( ) 6. main() { static int a[10]={15,2,4}; { union int i, c=0 ; { int a;

for(i=0; i<10; i++) unsigned char ch[2]; if( !a[i] ) c++ ; }au;

printf(\ au.ch[0]=0xfe; au.ch[1]=0xff; printf(\.a); } }

7. main() 8. main()

{ int i,j; { struct s char c,*a=\ { int a;

printf(\ int *b;

for(i=0;i<4;i++) } x[]={{100},{200}},*p=x; *(a+i)=*(a+i+4); int x0[]={110,120},x1[]={210,220};

printf(\ x[0].b=x0; x[1].b=x1;

} printf(\ }

四、程序填空题:(每空2分,共30分) 1. 假设90分以上为A等,80分到89分为B等,70分到79分为C等,60分到69分为D等,

60分以下为E等。下面是输入一个分数,输出相应的五分制成绩的程序。 void main() {float score;

printf(”score=”);scanf(”%f”,score); if(score>100||score<0)

printf(”Input Error!”);

else switch ( _________ ) {case 9:

case 10:printf(”A\\n”);break; case 8: printf(”B\\n”);break; case 7: printf(”C\\n”);break; case 6: printf(”D\\n”);break; default: _____________; }

} 2.下面的函数sum(int n)完成计算

?i ,请完善之。

i?1n sum(int n) { if (n<=0)

printf(\

if(n==1)

______________; else

______________; }

3.以下程序用来判断输入的数f是否为素数。当f为素数时,输出字符串YES,否则输出NO。

请填空。程序中,变量ok用来标志f是否是素数,ok的值为“真”表示是素数,否则不是素数。

#include main( )

{ int i,n,f; int ok;

printf(\ scanf(\ ok=1;i=2;n=f/2;

while(ok &&_______________ ) if(f%i)

i=________________ ; else ok=________________ ; printf(\%d\ if (ok)

printf( ________________ ); else printf( \ }

4. 下面的程序通过函数average()计算数组中各元素的平均值。 float average(int *p, int n) { int i;

float avg=0.0; for(i=0;i

avg=avg+______________; avg = ______________; return avg; } main()

{ int i, a[5]={2,4,6,8,10}; float mean;

mean = average(a,5);

printf(\ }

5. 下面程序的功能是打印100以内个位数为6且能被3整除的所有数。 main() { inti,j;

for ( i=0; ____________ ;i++) { j = i*10+6;

if(_____________) continue; printf(\ }

}

6. 下面程序用变量统计文件中字符的个数。 #include main()

{ FILE *fp;

long count = 0;

if ( (fp = fopen(\.c\ { printf(\ exit(0); }

while( !feof(fp) ) { ____________; ____________; }

printf(\ }

模拟试题三

一、选择题

1. 一个C程序的执行是从 。

(A) 本程序的main函数开始,到main函数结束;

(B)本程序文件的第1个函数开始,到本程序最后一个函数结束; (C)本程序的main函数开始,到本程序最后一个函数结束; (D)本程序文件的第1个函数开始,到本程序main函数结束。 2. 在C语言中,合法的字符常量是 。 (A)“C” (B)“hello!” (C)“\\\\” (D)‘W’ 3. 在C语言中,变量所分配的内存空间大小 。

(A) 均为一个字节 (B)由用户自己定义 (C)由变量的类型决定 (D)任意的 4. 在下面的标识符中,合法的用户标识符有 个。 abc,a3,a-1,3A,a$B,_short,int

(A)3 (B)4 (C)5 (D)6 5. 在C语言中,要求操作数必须是整型的运算符是 。 (A)/ (B)++ (C)!= (D)%

6. 设int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是 。 (A)2.500000 (B)2.750000 (C)3.500000 (D)0.000000 7. 要定义一个变量用来存放整数69000,该变量应定义成 。

(A)int (B)long int (C)unsigned (D)double 8. 选择出正确的赋值语句(设char b[5],*p=b) 。

(A) b=“abcd” (B)*b=“abcd” (C)p=“abcd” (D)*p=“abcd” 9. 在下面表达式中,值等于1的表达式是 。

(A)!b‖b (B)b>b (C)a!=a (D)3%4 10. 若有定义int(*p)[4],则标识符p是一个________。 (A)指向整型变量的指针变量 (B)指向函数的指针变量

(C)指向有四个整型元素的一维数组的指针变量

(D) 指针数组名,有四个元素,每个元素均为一个指向整型变量的指针

11. 以下程序的输出结果是 。

main( )

{int a=0,b=0,c=0; if(a=b+c)printf(“* * *\\n”) else printf(“$ $ $\\n”);}

(A)有语法错不能通过编译 (B)可以通过编译但不能通过连接 (C)输出* * * (D)输出$ $ $ 12. 设有以下程序段,则 。

int x=0,s=0;

while(!x!=0)s+=++x; printf(“%d”,s);

(A)程序段后输出0 (B)运行程序段后输出1 (C)程序段中的控制表达式是非法的 (D)程序段执行无数次 13. 设有变量定义static char str[ ]=“PROGRAM ”;则数组str的长度是 。

(A)7 (B)8 (C)9 (D)不确定 14. C语言中,整数 -8在内存中的存储形式是 。

(A) 1111,1111,1111,1000 (B)1000,0000,0000,1000 (C)0000,0000,0000,1000 (D)1111,1111,1111,0111 15. 执行以下程序段后,m的值为 。

int a[2][3]={{6,5,4},{3,2,1}}; int m,*p; p=&a[0][0];

m=(*p)*(*(p+2))*(*(p+4));

(A)15 (B)24 (C)48 (D)12 16. 设int a=1,b=2;能正确表示代数式1/(ab)的C语言表达式是 。

(A)1.0/(b*a) (B)1.0/b*a (C)1/a/b (D)1/(a*b) 17. 若有以下定义,则对b数组元素的正确引用是 。

int b[5]={1,2,3,4,5};*p=b;

(A)*b[1] (B)b[p+1] (C)&(p+1) (D) p[b[2]] 18. 设有:char S[ ]=“English”,*p=S;则下列叙述中正确的是 。

(A) 数组S的长度与static(p)的值相等 (B) p[5]的值等于s[5]的值

(C) 数组S的内容与指针变量p中内容相同 (D) sizeof(s)等于sizeof(*p)

19. 以下for循环的执行次数是 。

for(x=0,y=0;(y=123)&&(x<4);x++);

(A) 无限循环 (B)循环次数不定 (C)执行4次 (D)执行3次 20. 以下程序段的输出结果为 。

char str[ ]=“abcd”,*p=str;

printf(“%d\\n”,*(p+4);

(A)00 (B)0 (C)字符'd’的地址 (D)不确定 21. 建立函数的正确说法是 。

(A)程序的执行效率 (B)提高程序的可读性 (C)减少程序的篇幅 (D)减少程序文件所占内存

22. 若要用fopen函数打开一个新的二进制文件,该文件既能读也能写,则文件方式字符串应是 。

(A)“ab+” (B)“rb+” (C)“wb+” (D)“ab” 23. 选出K的正确值 。

enum{a,b=5,c,d=4,e}K;

K=e;

(A)3 (B)4 (C)5 (D)6 24. 下面函数的功能是 。

f(S1,S2)

char *S1,*S2;

{while(*S1++=*S2++); }

(A)求字符串的长度 (B)比较两个字符串的大小 (C)将字符串拷贝 (D)字符串连接 25. 设有如下变量说明:请选出正确的表达式 。

static student {char name[10] int age; float score; }stud;

(A)udent.age++; (B)gets(stud.name); (C)scanf(“%f”,stud.scroe); (D)scanf(“%S”,&stud.name); 26. 下面程序段的运行结果是 。

char *S=“abcde”; S+=2;printf(“%d”,s);

(A)cde (B)字符‘C’ (C)无确定的输出结果 (D)字符‘C’的地址 27. 若定义double t;则表达式t=1,t+5,++t的值为 。

(A)1.0 (B)2.0 (C)6.0 (D)7.0 28. 执行以下程序段后,变量i的值为 。 int i=5; switch(i)

{ case 4:i+=1; case 5:i+=1;

case 6:i+=1;break; default:i+=1;}

(A)5 (B)6 (C)7 (D)8 29.以下正确的函数定义形式是 。 (A) double fun(int x;int y) (B) double fun(int x,y);

(C) double fun(int x,int y); (D) double fun(int x,int y) 30. 以下叙述中不正确的是________。

(A) 在不同的函数中可以使用相同名字的变量。

(B) 程序中有调用关系的函数必须放在同一个源文件中。

(C) 在一个函数内定义的变量,其变量名只在本函数范围内有效。 (D) 函数中的形式参数是局部变量。

31. 在C语言程序中,以下正确的描述是 。

(A) 函数的定义可以嵌套,但函数的调用不可以嵌套。 (B) 函数的定义不可以嵌套,但函数的调用可以嵌套。 (C) 函数的定义和函数的调用均不可以嵌套。 (D) 函数的定义和函数的调用均可以嵌套。 32. 运行以下程序段,结果为 。

int x=0;while(!x)printf(“%d”,x--);

(A)显示0 (B)显示-1 (C)不显示 (D)无限循环 33. 若有说明:int a[ ][3]={1,2,3,4,5,6};则a数组第一维的大小是 。

(A)2 (B)3 (C)4 (D)无确定值 34. 若有以下面程序段, 则程序 。

int x=3; do {printf(“%d\\n”,x-=2);}while(!(--x));

(A)输出的是-2 (B)输出的是3和0 (C)输出的是1 (D)是死循环 35. 下面的程序输出为 。

#include main()

{ int m=7,n=4;

float a=38.4,b=6.4,x;

x=m/2+n*a/b+1/2; printf(“%f\\n”,x);}

(A)27.000000 (B)27.500000 (B)28.000000 (D)28.500000 36. 设有下面定义语句, 则printf(“%d\\n”,a[1].y);的输出为 。

struct R{int x,int y;};

struct R a[2]={{2,4},{6,8}};

(A)2 (B)4 (C)6 (D)8 37. 以下叙述中不正确的是 。

(A) 一个变量的作用域完全取决于变量说明语句的位量 (B) 外部变量可以在函数以外的任何位置定义 (C) 局部变量的生存期限于本次函数调用,无法将局部变量的值保存至函数的下一次调用

(D) 用static说明的一个外部变量是为了限制其它编译单位的引用

38. 在16位IBM-PC中使用C语言, 若有如下定义:则结构体变量b占用内存的字节数是 。

struct data { int i; char ch;

double f;}b;

(A)1 (B)2 (C)8 (D)11 39. 请选出以下程序段的输出结果 。

# include # define MIN(x,y)(x)<(y)?(x):(y) main( ) { int i,j,k; i=10;j=15; k=10*MIN(i,j); printf(“%d\\n”,k); }

(A)15 (B)100 (C)10 (D)150 40. strcat(strcpy(str1,str2),str3)的功能是 。

(A) 将str1复制到str2中,再连接至str3之后 (B) 将str1连接到str2之后,再复制至str3之后 (C)将str2复制到str1中,再将str3连接至str1之后 (E) 将str2连接到str1之后,再将str1复制至str3中

二、填空题

1. C语言的数据类型有:

1)基本类型( , , ,枚举类型); 2)构造类型( , , ); 3) ; 4)空类型。

2. 从作用域角度来区分,变量有 和 之分;从变量存在的时间来区分,有 和 两种类型。

3. 一个函数只能被文件中其它函数所调用,称为 ,在定义这类函数时,函数名和函数类型前面加关键字 。 4.要使a=1,b=2,使用输入函数scanf(“a,b=%d,%d”,&a,&b);从键盘输入时,应输入 。

5. 设int x=3 y=2,z=1;则表达式:

z+=(x<y?x++:y++=的值为 。

7<4&&2‖4>1-!0的值为 。

6. 若执行fopen函数时发生错误,则函数的返回值是 。 7. 设y为int型变量,表示“y是奇数”的表达式为 。

8. 若有以下定义int m=5,y=2;则计算表达式y+=y-=m*=y后的y值是 。 9. feof(fp)函数用来判断文件是否结束,如果遇到文件结束,函数值为 。

三、阅读程序,写出运行结果 1. main()

{ int a[ ]={5,6,7,8},i; f(a);

for(i=0;i<4;i++)printf(“%d”,*(a+i)); }

f(int *b) { int j;

for(j=0;j<4;j++)*(b+j)=j;)

}

2. #include main( )

{ static char a[ ]=“language”,b[ ]=“programe”; char *p1,*P2,int k; p1=a;p2=b;

for(k=0;k<=7;k++)

if(*(p1+k)==*(p2+k))printf(“%c”,*(p1+k)); }

3. main( )

{ int i,f[10];

f[0]=f[1]=1;

for(i=2;i<10;i++)

f[i]=f[i-2]+f[i-1];

for(i=0;i<10;i++= { if(i%4==0)printf(“\\n”); printf(“=”,f[i]);}

}

4. main()

{ char a[ ]=“morning”,t; int i,j=0;

for(i=1;i<7;i++)if(a[j] <a[i])j=i; t=a[j];a[j]=a[7];a[7]=a[j];puts(a);} 5. #define LEN 4 main( ) { int j,c;

static char n[2][LEN+1]={“8980”,“9198”}; for(j=LEN-1;j>=0;j--) { c=n[0][j]+n[1][j]-2*’0’; n[0][j]=c+’0’;}

for(j=0;j<=1;j++) puts(n[j]);

}

6. main( ) { int i,j=4;

for(i=j;i<=2*j;i++) switch(i/j)

{ case 0:

case 1:printf(“*”):break; case 2:printf(“#”); } }

7. f(int a[ ])

{ int i=0;

while(a[i]<=10) { printf(“%d”,a[i]);i++;}}

main( )

{ int a[ ]={1,5,10,9,11,7}; f(a+1);}

8. #include“stdio.h” main( ) { struct date

{ int year,month,day; }taday; printf(“%d\\n”,sizeof(struct date)); }

四、程序填空题

1. 程序读入20个整数,统计非负数个数并计算非负数之和。 #Include<stdio.h> main( )

{ int i,a[20],s,count; s=count=0;

for(i=0;i<20;i++ )

scanf(“%d”, ); for(i=0;i <20;i++ )

{ if (a[i] <0) ;

s+=a[i];count++;} printf(“s=%d\\t count=%d\\n”,s,count); } 2. 下面的函数Sum(int n)完成的

?i 计算。

i?1nsum(int n)

{ if(n<=0)printf(“Data error\\n”); if(n==1) ; else ; }

3. 编写一个函数reverse(char a[ ]),把字符串数组的内容逆置。(例如,如果调用该函数时实参为“abcdef”,则返回a[ ]的值为“fedcba”。)

#include <stdio.h> reverse(char a[ ]) { int c,i,j;

for(i=0, ;i<j; ) { c=a[i];

; a[j]=c;

} }

4. 以下函数的功能是求一个给定字符串的长度,在空缺处添入相应的语句。 int strleng(char *str) { int num=0;

while( )

num++;

return( );}

5. 以下程序用于统计磁盘二进制文件中字符的个数(磁盘文件名在程序执行时由命令行参数给出),在空缺处添入相应的语句。

main( ) { File *fp; long count=0; char ch;

if( )

{ printf(“can not open file ”;

exit (0);}

while( )count++; fclose(fp); printf(“%d”,count); }

参考答案

模拟试题一

一、选择题(从下列各题所列选项中选出正确答案。): 1、( c ) 11、( b ) 21、( a ) 2、( c ) 12、( d ) 22、( c ) 3、( a ) 13、( b ) 23、( b ) 4、( b )

14、( a )

24、( c ) 5、( a ) 15、( d ) 25、( d ) 6、( a ) 16、( a ) 26、( d ) 7、( c ) 17、( a ) 27、( a ) 8、( c ) 18、( b ) 28、( d ) 9、( c ) 19、( b ) 29、( d )10、( d )

20、( d )

30、( b )

二、判断题

1.(√) 2.(√) 3.(√) 4.(×) 5 6.(√) 7.(×) 8.(√) 9.(×) 10

三、填空题

31、( c ) 32、( a ) 33、( b )

34、( a )

35、( c ) 36、( a ) 37、( c ) 38、( a )

39、( c )

40.( b )

.( × ) .( √ )

1. 10 2. 60 7. cffpb

8. student stu.num=1001 3. a,b=1,2

9. 8910 4. 8 10. 0123 5. 17 11. 1 6. What

12. 0,1,5,6,7

四、程序填空

1. strlen(str )/2或strlen(str)/2.0或0.5*strlen(str)或j或j-1 str[j-1]或*(str+j-1) 2. '\\0' 或0 ++ ; 3. '\\0'或0 strl[i]-str2[i] ; 4.\或\或\或\或\

str[i]-32 或str[i]-('a'-'A')或str[i]-'a'+'A' \或\或\或\ 5.nose [d] ; 6. a[0] a[I]

模拟试题二

一、选择题:

1.C 6.A 11. B 16. D 21. A 26. A 2.D 7.D 12. C 17. B 22. B 27. D

3. A 8. B 13. A 18. C 23. C 28. D 4. D 9. A 14. C 19. D 24. B 29. B 5. B 10. C 15. A 20. C 25. B 30. C

二、填空题:

1.main(主) 6. 数值型变量 2.编译 目标 7. 它最近

3.#include “math.h” 8. FILE *FP; 4.任意类型 9. 地址

5.12 6 10. Auto register

三、阅读程序,写出运行结果:

1.i=4 5. Y=15 2.S=18 6. F=10,x=6,y=4

stdio.h extern static

3.C=17 7. -2 4.Computer->uteruter 8. 210

四、程序填空:

1.int (score/10) printf(“E\\n”);

2.return(1) return sum(n-1)+n ( (1+n)*n/2) 3.i<=n i+1 ok=0 “yes\\n” 4.*(p+i) avg/n 5.<10 j%3!=0 6.”r” fgetc(fp) count++

模拟试题三

一、选择题

1. A 9. A 17. D 25. B 33. A 2. D 10. C 18. B 26. D 34. A 3. C 11. D 19. C 27. B 35. A 4. A 12. B 20. B 28. C 36. D 5. D 13. B 21. B 29. D 37. C 6. A 14. A 22. C 30. B 38. D 7. B 15. C 23. C 31. B 39. A 8. C 16. A 24. D 32. A 40. C

二、填空题

1. 整型 、 实型 、 字符型 、 数组 、 结构体 、 共同体 、 指针 2. 全局变量 、 局部变量 、 静态变量 、 动态变量 3. 内部函数 、 static 4. a,b=1,2

5. 3 、 1 6. 0 7. y%2==1 8. -16 9. 非零值

三、阅读程序,写出运行结果

1. 0123 5. 70789198 2. gae 6. ****# 3. 1 1 2 3 7. 5109

5 8 13 21 34 55

4. mo 8. 6

四、程序填空

1. &a[i] continue

2. return (1) return((n+1)*n/2)

3. j=strlen(a) i++, j-- a[i]=a[j]

4. *(str++)!=’\\0’ num

5. int argc; char *argv[]; (fp=fopen(argv[1],”rb”))==NULL (ch=fgetc(fp)!=’\\0’&& (!feof(fp))

5 8 13 21 34 55

4. mo 8. 6

四、程序填空

1. &a[i] continue

2. return (1) return((n+1)*n/2)

3. j=strlen(a) i++, j-- a[i]=a[j]

4. *(str++)!=’\\0’ num

5. int argc; char *argv[]; (fp=fopen(argv[1],”rb”))==NULL (ch=fgetc(fp)!=’\\0’&& (!feof(fp))

本文来源:https://www.bwwdw.com/article/k473.html

Top