中央美术学院历年计算机C语言期末预测卷

本试卷为中央美术学院历年计算机C语言期末预测卷,题目包括:单项选择题,判断题,编程题。

覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,程序题,结构体,文件。

计算机C语言期末预测卷

一、单项选择题 (共20题,每题2分,共计40分)

(  D  )
1、在位运算中,操作数每左移两位,其结果相当于________。
A、操作数乘以2
B、操作数除以2
C、操作数除以4
D、操作数乘以4
(  B  )
2、break语句的正确的用法是________。
A、无论在任何情况下,都中断程序的执行,退出到系统下一层。
B、在多重循环中,只能退出最靠近的那一层循环语句。
C、跳出多重循环。
D、只能修改控制变量。
(  B  )
3、有以下程序
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=&a[3], *q=p+2;
printf("%d\n", *p + *q);
}
程序运行后的输出结果是________。
A、16
B、10
C、8
D、6
(  D  )
4、下列选项中,能够正确定义数组的语句是________。
A、int num[0..2008];
B、int num[];
C、int N=2008;
D、#define N 2008
int num[N]; int num[N]
(  A  )
5、下列四组字符串中都可以用作c语言程序中的标识符的是________。
A、print _3d db8 aBc
B、I\am one_half start$it 3pai
C、str_1 Cpp pow while
D、Pxq My->book line# His.age
(  C  )
6、设有以下说明语句:
typedef struct stu
{
int a;
float b;
} stutype;
则下面叙述中错误的是________。
A、struct是结构类型的关键字
B、struct stu是用户定义的结构类型
C、a和b都是结构成员名
D、stutype是用户定义的结构体变量名
(  D  )
7、有如下程序
#include<stdio.h>
void main()
{
char ch[80]="123abcdefg*&";
int j;
long s=0;
puts(ch);
for(j=0;ch[j]>'\0';j++) if(ch[j]>='a'&&ch[j]<='z') ch[j]=ch[j]+'e'-'e';
puts(ch);
}
该程序的功能是 __________.
A、测字符数组 ch 的长度
B、将数字字符串 ch 转换成十进制数
C、将字符数组 ch 中的小写字母转换成大写
D、将字符数组 ch 中的大写字母转换成小写
(  C  )
8、以下关于c语言数据类型的叙述中正确的是________。
A、C基本数据类型包括:分为整型、实型、浮点型、字符型四种
B、实型常量的表达方式包括十进制形式、十六进制形式、二进制形式、八进制形式、指数形式
C、若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型
D、若只处理“真”和“假”两种逻辑值,应使用逻辑类型
(  D  )
9、是不正确的c语言赋值语句。
A、x=1, y=2
B、x ++
C、x=y=5
D、y=int(x);
(  D  )
10、下列各进制的整数中,值最大的一个是________。
A、十六进制数78
B、十进制数125
C、八进制数202
D、二进制数10010110
(  A  )
11、十六进制数100转换为十进制数为
A、256
B、512
C、1024
D、64
(  D  )
12、有以下程序
main()
{
char a,b,c,*d;
a='\';
b='\xbc';
c='\0xab';
d="\0127";
printf("%c%c%c%c\n",a,b,c,*d);
}
编译时出现错误,以下叙述中正确的是________。
A、程序中只有a='\';语句不正确
B、b='\xbc';语句不正确
C、d="\0127";语句不正确
D、a='\';和 c='\0xab';语句都不正确
(  D  )
13、请阅读程序:
#include<math.h>
#include<stdio.h>
main()
{
float a,b,c;
scanf("%f%f",&a,&b);
c=a/b;
while(1) {
if(fabs(c)>1.6) {
a=b;
b=c;
c=a/b;
}
else break;
}
printf("%f\n",b);
}
若运行时从键盘上输入3.6 2.4<回车>,则输出结果是______。
A、1.500000
B、1.600000
C、2.000000
D、2.400000
(  B  )
14、有如下程序段int *p,a=5,b=1; p=&a; a=*p+b; 执行该程序段后,a的值为______。
A、5
B、6
C、7
D、编译出错
(  D  )
15、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=3则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为______。
A、0
B、1
C、2
D、3
(  C  )
16、以下( )循环并非重复5次?
A、int i; for (i=1; i<6; i++) {}
B、int i; for (i=0; i<5; i++) {}
C、int i; for (i=0; i<=5; i++) {}
D、int i; for (i=1; i<=5; i++) {}
(  A  )
17、若有数组名作为函数调用的实参,传递给形参的是________。
A、数组的首地址
B、数组第一个元素的值
C、数组中全部元素的值
D、数组元素的个数
(  A  )
18、若调用一个函数,且此函数中没有return语句,则正确的说法是: 该函数________。
A、没有返回值
B、返回若干个系统默认值
C、能返回一个用户所希望的值
D、返回一个不确定的值
(  A  )
19、下面叙述中错误的是________。
A、主函数中定义的变量在整个程序中都是有效的
B、在其它函数中定义的变量在主函数中也不能使用
C、形式参数也是局部变量
D、复合语句中定义的函数只在该复合语句中有效
(  C  )
20、以下的选择中,正确的赋值语句是()。
A、a=1,b=2
B、j++
C、a=b=5;
D、y=int(x)

二、判断题 (共10题,每题2分,共计20分)

(   T  )
1、宏定义在行末不加分号。 
(   T  )
2、对于已正确定义的二维数组a, *(a[i]+j)与a[i][j]的含义相同。 
(   T  )
3、c语言中switch语句可以用if语句完全代替.( ) 
(   F  )
4、循环语句不能嵌套使用。 
(   T  )
5、数组名是该数组的首地址。 
(   F  )
6、在标准c语言中,字符串是以‘ 0’结束的,故字符串的长度也包括‘ 0’。 
(   T  )
7、宏定义和文件包含都是c语言中的编译预处理命令,对它们的处理是在编译前完成的 
(   T  )
8、在定义函数时,若函数类型为" void",则表示该函数 没有返回值 ; 若函数参数为" void",则表示该函数 没有参数 。( ) 
(   F  )
9、c语言中函数可以递归调用,也允许嵌套定义。 
(   T  )
10、局部变量如果没有指定初值,则其初值不确定 

三、编程题 (共3题,每题0分,共计40分)

1、编写程序:在第一个循环中从键盘上给a数组的前m(m<100)个数组元素依次赋值;
在第二个循环中使a数组前m个元素中的值对称折叠;
在最后一个循环中输出折叠以后的a数组的前m个元素
例如:当m为5时,如果从键盘上输入的5个数分别为:1.2.3.4.5时,输出应为:1 2 3 2 1 当m为10时,如果从键盘上输入的10个数分别为:1.2.3.4.5.6.7.8.9.10时,输出应为:1 2 3 4 5 5 4 3 2 1
2、有以下定义:
struct student{
int num; //学生序号
char name[20]; //学生姓名
int math; //数学成绩
}stu[4];
请从键盘输入4条学生信息存入结构体数组stu,之后在屏幕上依
次输出这些学生信息,并计算出数学平均成绩,结果保留2位小数。
【输入形式】每条记录的3个数据都使用空格分隔
【输出形式】分四行输出学生信息,每行数据均使用1个空格分隔;
最后一行显示数学平均成绩,保留2位小数
【输入样例】
1 aa 45
2 bb 67
3 dd 77
4 qq 88
【输出样例】
1 aa 45
2 bb 67
3 dd 77
4 qq 88
avg = 69.25
3、从键盘上输入一个字符串, 计算字符串里有多少个空格、小写字母、大写字母、数字。