1、试卷编号:8229 所属语言:C语言 试卷方案:C语言期末模拟 试卷总分:100分 共有题型:5种 一、判断 共10题 (共计10分) 第1题 (1.0分) 题号:1265 假设所有变量均为整型,则表达式(a=2,b=3,b++,a+b)的值是5. 答案:N 第2题 (1.0分) 题号:1253 若有说明int c;则while(c=getchar());是正确的C语句. 答案:Y 第3题 (1.0分) 题号:25 如果想使一个数组中全部元素的值为0,可以写成 int a[10]={0*10}; 答案:N 第4题 (1
2、0分) 题号:1279 C语言的double类型数据一般占4个字节. 答案:N 第5题 (1.0分) 题号:1252 break语句可用于循环体内,它将退出该重循环. 答案:Y 第6题 (1.0分) 题号:30 若有 # define S(a,b) a*b 则语句 area=S(3,2); area的值为6。 答案:Y 第7题 (1.0分) 题号:1267 程序的基本结构中选择结构又叫分支结构,有单分支与多分支两种. 答案:Y 第8题 (1.0分) 题号:1472 C语言中的标识符以字母或下划线开头,可跟任何字符. 答
3、案:N 第9题 (1.0分) 题号:1246 在if语句中,else前一个语句可不加";". 答案:N 第10题 (1.0分) 题号:1245 在标准C中,"="是判断两个数是否相等. 答案:N 二、单项选择 共30题 (共计30分) 第1题 (1.0分) 题号:172 在C语言程序中()。 A:函数的定义可以嵌套,但函数的调用不可以嵌套 B:函数的定义不可以嵌套,但函数的调用可以嵌套 C:函数的定义和函数调用均可以嵌套 D:函数的定义和函数调用不可以嵌套 答案:B 第2题 (1.0分) 题号:3067 以下选项中合法
4、的实型常数是(). A:5E2.0 B:E-3 C:.2E0 D:1.3E 答案:C 第3题 (1.0分) 题号:606 已定义ch为字符型变量,以下赋值语句中错误的是()。 A:ch='\'; B:ch=62+3; C:ch=NULL; D:ch='\xaa'; 答案:A 第4题 (1.0分) 题号:3012 *以下程序段的输出结果为(). char c[]="abc"; int i=0; do ;while(c[i++]!='\0');printf("%d",i-1); A:abc B:ab C:2 D:3
5、 答案:D 第5题 (1.0分) 题号:110 C语言中,char类型数据占()。 A:1个字节 B:2个字节 C:4个字节 D:8个字节 答案:A 第6题 (1.0分) 题号:547 int (*p)[6]; 它的含义为()。 A:具有6个元素的一维数组 B:定义了一个指向具有6个元素的一维数组的指针变量 C:指向整型指针变量 D:指向6个整数中的一个的地址 答案:B 第7题 (1.0分) 题号:3181 若有定义:int *p[3];,则以下叙述中正确的是(). A:定义了一个基类型为int的指针变量p,该变量具
6、有三个指针 B:定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针 C:定义了一个名为*p的整型数组,该数组含有三个int类型元素 D:定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素 答案:B 第8题 (1.0分) 题号:523 函数的形式参数隐含的存储类型说明是()。 A:extern B:static C:register D:auto 答案:D 第9题 (1.0分) 题号:95 下列变量说明语句中,正确的是()。 A:char:a b c; B:char a;b;c; C:in
7、t x;z; D:int x,z; 答案:D 第10题 (1.0分) 题号:168 若输入ab,程序运行结果为()。 main() { static char a[2]; scanf("%s",a); printf("%c,%c",a[1],a[2]); } A:a,b B:a, C:b, D:程序出错 答案:C 第11题 (1.0分) 题号:2821 经下列语句定义后,sizeof(x),sizeof(y),sizeof(a),sizeof(b)在 微机上的值分别为(). char x=6
8、5; float y=7.3; int a=100; double b=4.5; A:2,2,2,4 B:1,2,4,4 C:1,4,4,8 D:2,4,4,8 答案:C 第12题 (1.0分) 题号:611 以下for循环的执行次数是 for(x=0,y=0;(y=123)&&(x<4);x++);()。 A:是无限循环 B:循环次数不定 C:4次 D:3次 答案:C 第13题 (1.0分) 题号:561 以下叙述中正确的是 ()。 A:C程序中注释部分可以出现在程序中任意合适的地方 B:花括号“{“和”}”只
9、能作为函数体的定界符 C:构成C程序的基本单位是函数,所有函数名都可以由用户命名 D:分号是C语句之间的分隔符,不是语句的一部分 答案:A 第14题 (1.0分) 题号:429 假定所有变量均已正确定义,下列程序段运行后x的值是()。 k1=1; k2=2; k3=3; x=15; if(!k1) x--; else if(k2) x=4; else x=3; A:14 B:4 C:15 D:3 答案:B 第15题 (1.0分) 题号:2782 以下数据中,不正确的数值或
10、字符常量是(). A:8.9e1.2 B:10 C:0xff00 D:82.5 答案:A 第16题 (1.0分) 题号:2374 以下说法正确的是 A:C语言程序总是从第一个的函数开始执行 B:在C语言程序中,要调用函数必须在main()函数中定义 C:C语言程序总是从main()函数开始执行 D:C语言程序中的main()函数必须放在程序的开始部分 答案:C 第17题 (1.0分) 题号:3159 在位运算中,操作数每左移一位,其结果相当于(). A:操作数乘以2 B:操作数除以2 C:操作数除以4 D:操作数乘以4
11、 答案:A 第18题 (1.0分) 题号:599 假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是()。 A:7 B:8 C:6 D:2 答案:B 第19题 (1.0分) 题号:3052 以下叙述正确的是(). A:在C程序中,main函数必须位于程序的最前面 B:C程序的每行中只能写一条语句 C:C语言本身没有输入输出语句 D:在对一个C程序进行编译的过程中,可发现注释中的拼写错误 答案:C 第20题 (1.0分) 题号:3168 若x=2,y=3则x&y的结果是().? A:0 B:2 C:3
12、 D:5 答案:B 第21题 (1.0分) 题号:3091 以下for循环的执行次数是 for(x=0,y=0;(y=123)&&(x<4);x++);(). A:是无限循环 B:循环次数不定 C:4次 D:3次 答案:C 第22题 (1.0分) 题号:160 C语言的if语句嵌套时,if与else的配对关系是()。 A:每个else总是与它上面的最近的if配对 B:每个else总是与最外层的if配对 C:每个else与if的配对是任意的 D:每个else总是与它上面的if配对 答案:A 第23题 (1.0分) 题
13、号:379 以下不正确的叙述是()。 A:在C程序中所用的变量必须先定义后使用 B:程序中,APH和aph是两个不同的变量 C:若a和b类型相同,在执行了赋值语句a=b;后b中的值将放入a中,b中的值不变 D:当输入数值数据时,对于整型变量只能输入整型值;对于实型变量只能输入实型值 答案:D 第24题 (1.0分) 题号:671 C语言规定:简单变量做实参时,它和对应形参之间的数据传递方式是()。 A:地址传递 B:单向值传递 C:由实参传给形参,再由形参传回给实参 D:由用户指定的传递方式 答案:B 第25题 (1.0分) 题号:307
14、3 能正确表示逻辑关系:"a≥10或a≤0"的C语言表达式是(). A:a>=10 or a<=0 B:a>=0|a<=10 C:a>=10&&a<=0 D:a>=10‖a<=0 答案:D 第26题 (1.0分) 题号:3100 下列运算符中优先级最高的是(). A:< B:+ C:&& D:!= 答案:B 第27题 (1.0分) 题号:130 以下程序段的执行结果是()。 double x;x=218.82631; printf("%-6.2e\n",x); A:输出格式描述符的域宽不够,不能输出 B:输出为21.38e+01
15、 C:输出为2.2e+02 D:输出为-2.14e2 答案:C 第28题 (1.0分) 题号:480 以下程序的输出结果是()。 main() { char s[]="123",*p; p=s; printf("%c%c%c\n",*p++,*p++,*p++); } A:123 B:321 C:213 D:312 答案:B 第29题 (1.0分) 题号:376 在C语言中,能代表逻辑值“真”的是()。 A:True B:大于0的数 C:非0整数 D:非0的数 答案:D
16、 第30题 (1.0分) 题号:2926 在C语言中,if语句后的一对原括号中,用以决定分支的流程的表达式(). A:只能用逻辑表达式 B:只能用关系表达式 C:只能用逻辑表达式或关系表达式 D:可用任意表达式 答案:D 三、程序填空 共2题 (共计24分) 第1题 (12.0分) 题号:3 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 题目:下面
17、的程序是求1!+3!+5!+……+n!的和,程序中有4个 空,填空使程序完整。 -------------------------------------------------------*/ main() { long int f,s; int i,j,n; /***********SPACE***********/ 【?】 scanf("%d",&n); /***********SPACE***********/ for(i=1;i<=n; 【?】) { f=1; /***
18、SPACE***********/ for(j=1; 【?】;j++) /***********SPACE***********/ 【?】 s=s+f; } printf("n=%d,s=%ld\n",n,s); } 答案: =======(答案1)======= s=0; =======(答案2)======= i+=2 =========或========= i=i+2 =======(答案3)======= j<=i =========或========= i
19、>=j =======(答案4)======= f= f * j ; 第2题 (12.0分) 题号:414 /*------------------------------------------------------- 【程序填空】 --------------------------------------------------------- 功能:通过函数的递归调用计算阶乘。 -------------------------------------------------------*/ long power(int n) {l
20、ong f; if(n>1) /***********SPACE***********/ f=【?】; else f=1; return(f); } main() {int n; long y; printf("input a inteager number:\n"); /***********SPACE***********/ scanf("%d",【?】); y=power(n); /***********SPACE***********/ printf(
21、"%d!=%ld\n",n,【?】); getch(); } 答案: =======(答案1)======= power(n-1)*n =========或========= power( n - 1 ) * n =======(答案2)======= &n =======(答案3)======= y 四、程序改错 共2题 (共计22分) 第1题 (11.0分) 题号:417 /*------------------------------------------------------ 【程序改错】
22、 题目:读取7个数(1-50)的整数值,每读取一个值, 程序打印出该值个数的*。 -------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程 序的结构。 ------------------------------------------------------*/ #include "stdio.h" main() {int i,a,n=
23、1; /**********FOUND**********/ while(n<7) { do { scanf("%d",&a); } /**********FOUND**********/ while(a<1&&a>50); /**********FOUND**********/ for(i=0;i<=a;i++) printf("*"); printf("\n"); n++;} getch(); } 答案: =======(答案1)======= while(n<=7) =========或=========
24、while(n<8) =======(答案2)======= while(a<1||a>50); =========或========= while(a>50||a<1); =======(答案3)======= for(i=1;i<=a;i++) 第2题 (11.0分) 题号:19 /*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 题目:函数f
25、un的功能是:计算正整数num的各位上的数字之积。 例如,输入252,则输出应该是20。 请改正程序中的错误,使它能得出正确的结果。 -------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/ long fun (long num) { /**********FOUND**********/ long k; do
26、 { k*=num%10; /**********FOUND**********/ num\=10; }while (num); return k; } main() { long n; printf("\nPlease enter a number:"); /**********FOUND**********/ scanf("%ld", n); /**********FOUND**********/ printf("\n%ld\n",fun(long n)); } 答案: =======(答案1)==
27、 long k=1; =======(答案2)======= num/=10; =========或========= num=num/10; =======(答案3)======= scanf("%ld",&n); =======(答案4)======= printf("\n%ld\n",fun(n)); 五、程序设计 共1题 (共计14分) 第1题 (14.0分) 题号:22 /*------------------------------------------------ 【程序设计】 ------------------
28、 题目:从键盘为一维整型数组输入10个整数,调用fun 函数找出其中最小的数,并在main函数中输出。 请编写fun函数。(用for循环) -------------------------------------------------- 注意:部分源程序给出如下。请勿改动主函数main和其 它函数中的任何内容,仅在函数fun的花括号中填 入所编写的若干语句。 ------------------------------------------------*
29、/ #include "stdio.h" int fun(int x[],int n) { /**********Program**********/ /********** End **********/ } main() { int a[10],i,min; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) printf("%3d",a[i]); printf("\n"); min=fun(a,10);
30、 printf("%d\n",min); yzj(); } yzj() { FILE *IN,*OUT; int iIN[10],i; int iOUT,iCOUNT; IN=fopen("4.in","r"); if(IN==NULL) {printf("Please Verify The Currernt Dir..It May Be Changed"); } OUT=fopen("4.out","w"); if(OUT==NULL) {printf("Please Verify The Current Dir.. It May Be Changed")
31、
}
for(i=0;i<10;i++)
{ for(iCOUNT=0;iCOUNT<10;iCOUNT++)
fscanf(IN,"%d",&iIN[iCOUNT]);
iOUT=fun(iIN,10);
fprintf(OUT,"%d\n",iOUT);
}
fclose(IN);
fclose(OUT);
}
答案:----------------------
int min,i;
min=x[0];
for(i=1;i 32、
试卷编号:8230
所属语言:C语言
试卷方案:C语言期末模拟
试卷总分:100分
共有题型:5种
一、判断 共10题 (共计10分)
第1题 (1.0分) 题号:1488
函数即可以嵌套定义,又可以嵌套调用.
答案:N
第2题 (1.0分) 题号:1256
unsigned 和void 在C中都是保留字.
答案:Y
第3题 (1.0分) 题号:1280
表达式 ++i表示对变量i自加1.
答案:Y
第4题 (1.0分) 题号:1282
C语言源程序的基本结构单位是mai 33、n函数.
答案:N
第5题 (1.0分) 题号:1276
字符常量的长度肯定为1.
答案:Y
第6题 (1.0分) 题号:1469
char a[]={'a','b','c'};char b[]={"abc"};数组a和数组b占用的内存空间大小不一样.
答案:Y
第7题 (1.0分) 题号:1249
若有int i=10,j=2; 则执行完i*=j+8;后i的值为28.
答案:N
第8题 (1.0分) 题号:33
int i,*p=&i;是正确的C说明。
答案:Y
第9题 (1.0分) 题号:1250
While循 34、环语句的循环体至少执行一次.
答案:N
第10题 (1.0分) 题号:1510
有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为0.
答案:Y
二、单项选择 共30题 (共计30分)
第1题 (1.0分) 题号:456
执行下面程序后,输出结果是()。
main()
{ a=45,b=27,c=0;
c=max(a,b);
printf("%d\n",c);
}
int max(x,y)
int x,y;
{ int z;
if(x 35、>y) z=x;
else z=y;
return(z);
}
A:45
B:27
C:18
D:72
答案:A
第2题 (1.0分) 题号:437
下列数组说明中,正确的是()。
A:int array[][4];
B:int array[][];
C:int array[][][5];
D:int array[3][];
答案:A
第3题 (1.0分) 题号:2396
下面有关for循环的正确描述是 ()
A:for循环只能用于循环次数已经确定的情况
B:for循环是先执行循环体 36、语句,后判断表达式
C:在for循环中,不能用break语句跳出循环体
D:for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
答案:D
第4题 (1.0分) 题号:2817
以下程序的输出结果是().
main()
{int i,j,k,a=3,b=2;
i=(--a==b++)?--a:++b;
j=a++;k=b;
printf("i=%d,j=%d,k=%d\n",i,j,k);
}
A:i=2,j=1,k=3
B:i=1,j=1,k=2
C:i=4,j=2,k=4
D:i=1,j=1,k=3
答案:D
第 37、5题 (1.0分) 题号:2866
若有下列定义,则对a数组元素地址的正确引用是().
int a[5],*p=a;
A:*(p+5)
B:*p+2
C:*(a+2)
D:*&a[5]
答案:C
第6题 (1.0分) 题号:711
下列选项中正确的语句组是()。
A:char s[8]; s={"Beijing"};
B:char *s; s={"Beijing"};
C:char s[8]; s="Beijing";
D:char *s; s="Beijing";
答案:D
第7题 (1.0分) 题号:3191
若变量a,i已正 38、确定义,且i已正确赋值,合法的语句是()
A:a=int(i);
B:a==1
C:++i;
D:a=a++=5;
答案:C
第8题 (1.0分) 题号:490
以下字符中不是转义字符的是()。
A:\a'
B:\b'
C:\c'
D:'\\'
答案:C
第9题 (1.0分) 题号:184
下列定义不正确的是()。
A:#define PI 3.141592
B:#define S345
C:int max(x,y); int x,y; { }
D:static char c;
答案:C
第10题 (1.0分) 39、 题号:3028
char h,*s=&h;可将字符H通过指针存入变量h中的语句是().
A:*s=H;
B:*s='H';
C:s=H;
D:s='H'
答案:B
第11题 (1.0分) 题号:690
设char型变量x中的值为10100111,则表达式(2+x)^(~3)的值是()。
A:10101001
B:10101000
C:11111101
D:01010101
答案:D
第12题 (1.0分) 题号:2381
设以下变量均为int类型,表达式的值不为7的是()
A:x=y=6,x+y,x+1
B:x=y=6,x+y, 40、y+1
C:x=6,x+1,y=6,x+y
D:y=6,y+1,x=y,x+1
答案:C
第13题 (1.0分) 题号:3124
若有说明 int a[3][4];则对a数组元素的正确引用是().
A:a[2][4]
B:a[1,3]
C:a[1+1][0]
D:a(2)(1)
答案:C
第14题 (1.0分) 题号:679
在C语言中,形参的缺省存储类是()。
A:auto
B:register
C:static
D:extern
答案:A
第15题 (1.0分) 题号:1343
C语言源程序的基本单位是().
41、
A:过程
B:函数
C:子程序
D:标识符
答案:B
第16题 (1.0分) 题号:3023
C语言程序中必须有的函数是().
A:#include "stdio.h"
B:main
C:printf
D:scanf
答案:B
第17题 (1.0分) 题号:3228
有定义:int a=8,b=5,c;,执行语句c=a/b+0.4;后,c的值为 ()
A:1.4
B:1
C:2.0
D:2
答案:B
第18题 (1.0分) 题号:640
以下对二维数组a的正确说明是()。
A:int a[3][]
B:fl 42、oat a(3,4)
C:double a[1][4]
D:float a(3)(4)
答案:C
第19题 (1.0分) 题号:2884
以下标识符中,不能作为合法的C用户定义标识符的是().
A:answer
B:to
C:signed
D:_if
答案:C
第20题 (1.0分) 题号:652
在C语言中,引用数组元素时,其数组下标的数据类型允许是()。
A:整型常量
B:整型表达式
C:整型常量或整型表达式
D:任何类型的表达式
答案:C
第21题 (1.0分) 题号:381
以下标识符中,不能作为合法的C用 43、户定义标识符的是()。
A:answer
B:to
C:signed
D:_if
答案:C
第22题 (1.0分) 题号:2898
已知year为整型变量,不能使表达式(year%4==0&&year%100!=0)||
year%400==0的值为"真"的数据是().
A:1990
B:1992
C:1996
D:2000
答案:A
第23题 (1.0分) 题号:177
以下描述中,正确的是()。
A:预处理是指完成宏替换和文件包含中指定的文件的调用
B:预处理指令只能位于C源文件的开始
C:C源程序中凡是行首以#标识的控制行都 44、是预处理指令
D:预处理就是完成C编译程序对C源程序第一遍扫描,为编译词法和语法分析作准备
答案:C
第24题 (1.0分) 题号:156
执行下列语句后的输出为()。
int j=-1;
if(j<=1) printf("****\n");
else printf("%%%%\n");
A:****
B:%%%%
C:%%%%c
D:有错,执行不正确
答案:A
第25题 (1.0分) 题号:2850
以下函数调用语句中实参的个数是().
exce((v1,v2),(v3,v4,v5),v6);
A:3
B:4
45、C:5
D:6
答案:A
第26题 (1.0分) 题号:506
以下程序段的输出结果为()。
for(i=4;i>1;i--)
for(j=1;j 46、 case 0:a++;break;
case 1:b++;break;
}
case 2:a++;b++;break;
case 3:a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
}
A:a=1,b=0
B:a=2,b=1
C:a=1,b=1
D:a=2,b=2
答案:B
第28题 (1.0分) 题号:573
C语言中运算对 47、象必须是整型的运算符是()。
A:%=
B:/
C:=
D:〈=
答案:A
第29题 (1.0分) 题号:647
以下能对二维数组a进行正确初始化的语句是()。
A:int a[2][]={{1,0,1},{5,2,3}};
B:int a[][3]={{1,2,3},{4,5,6}};
C:int a[2][4]={{1,2,3},{4,5},{6}};
D:int a[][3]={{1,0,1}{},{1,1}};
答案:B
第30题 (1.0分) 题号:3135
以下数组定义中不正确的是().
A:int a[2][3];
B: 48、int b[][3]={0,1,2,3};
C:int c[100][100]={0};
D:int d[3][]={{1,2},{1,2,3},{1,2,3,4}};
答案:D
三、程序填空 共2题 (共计24分)
第1题 (12.0分) 题号:417
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:利用全局变量计算长方体的体积及三个面的面积。
-- 49、/
int s1,s2,s3;
int vs(int a,int b,int c)
{int v;
/***********SPACE***********/
v=【?】;
s1=a*b;
/***********SPACE***********/
s2=【?】;
s3=a*c;
return v;
}
main()
{int v,l,w,h;
clrscr();
print 50、f("\ninput length,width and height: ");
/***********SPACE***********/
scanf("%d%d%d",【?】,&w,&h);
/***********SPACE***********/
v=【?】;
printf("v=%d s1=%d s2=%d s3=%d\n",v,s1,s2,s3);
getch();
}
答案:
=======(答案1)=======
a*b*c
=========或=========
a * b * c
=






