C语言 模拟试题+答案
更新时间:2023-03-08 07:37:13 阅读量: 综合文库 文档下载
- c语言推荐度:
- 相关推荐
附录四 模拟试题
模拟试题一
一、选择题(从下列各题所列选项中选出正确答案。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
{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
{ 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
{ 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 { 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 { 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 { 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 (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 { 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))
正在阅读:
C语言 模拟试题+答案03-08
2022年青岛理工大学经贸学院计量经济学(同等学力加试)复试笔试仿04-19
春(影评)04-11
学生文明校园倡议书优选范本04-03
第六章《一元一次方程》复习题03-11
零件订单供应管理系统数据库04-15
浅谈博物馆的数字化建设与文物管理03-15
单一来源询价通知书05-13
无领导小组讨论题库、流程、评分标准04-08
本科毕业设计(论文)09-23
- 《江苏省环境水质(地表水)自动监测预警系统运行管理办法(试行)》
- 安乐死合法化辩论赛立论稿(浙大新生赛)
- 公共科目模拟试卷公务员考试资料
- 我国固定资产投资FAI对GDP的影响
- 大学生创新创业训练计划项目申请书大创项目申报表
- 完美版—单片机控制步进电机
- 2013资阳中考化学试题
- 18.两位数减一位数退位(397道)
- 工程量计算规则
- 二年级操行评语(下)
- 第3章 流程控制语句
- 浅基桥墩加固技术
- 课题研究的主要方法
- 5100软件说明书 - 图文
- 车间技术员年终总结
- 关于印发《中铁建工集团开展项目管理实验室活动方案》的通知
- 经典诵读结题报告
- 地下水动力学习题答案
- 2018年全国各地高考数学模拟试题平面解析几何试题汇编(含答案解
- 街道办事处主任2018年度述职述廉报告
- 模拟试题
- 答案
- 语言