湖北经济学院C语言期末预测卷

本试卷为湖北经济学院C语言期末预测卷,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。

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

C语言期末预测卷

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

(  C  )
1、以下程序的输出结果是________。
#define f(x) x*x
main()
{
int a=6,b=2,c;
c=f(a)/f(b);
printf("%d\n",c);
}
A、9
B、6
C、36
D、18
(  C  )
2、有以下程序
struct stu
{
char name[10];
int num;
int score;
}
;
main( )
{
struct stu s[5]={{"yangsan",20041,703} , {"lisiguo",20042,580 , {"wangyin",20043,680}, {"sundan",20044,550}, {"penghua",20045,537}},*p[5],*t;
int i,j;
for(i=0;i<5;i++) p[i]=&s[i];
for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(p[i]->score>p[j]->score)
{
t=p[i];
p[i]=p[j];
p[j]=t;
}
printf("5d %d\n",s[1].score,p[1]->score);
}
执行后输出结果是________。
A、550 550
B、680 680
C、580 550
D、580 680
(  C  )
3、设x、y、t均为int型变量,则执行语句x=y=3; t=++x||++y; 后,y的值为______。
A、不定值
B、4
C、3
D、1
(  C  )
4、在下列各项中,运算级别最低的为________。
A、算术运算符
B、关系运算符
C、逻辑运算符
D、圆括号( )
(  C  )
5、若调用一个函数,且此函数中没有return语句,则正确的说法是该函数________。
A、没有返回值
B、返回若干个系统默认值
C、有返回值,但返回一个不确定的值
D、能返回一个用户所希望的函数值
(  B  )
6、若要定义a为3×4的二维数组,正确的定义语句是________。
A、float a(3,4);
B、float a[3][4];
C、float a(3)(4);
D、float a[3,4];
(  D  )
7、已有定义:int i,a[10],*p; 则合法的赋值语句是________。
A、p=100;
B、p=a[5]
C、p=a[2]+2
D、p=a+2;
(  B  )
8、有下列程序:
main()
{
int i,j;
for(i=1;i<4;i++)
{
for(j=i;j<4;j++) printf("%d*%d=%d",i,j,i*j);
printf("\n");
}
}
程序运行后的输出结果是________。
A、1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 3*1=3
B、1*1=1 1*2=2 1*3=3 2*2=4 2*3=6 3*3=9
C、1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9
D、1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9
(  A  )
9、有以下程序:
main()
{
int m=12,n=34;
printf("%d%d",m++,++n);
printf("%d%d\n",n++,++m);
}
程序运行后的输出结果是______。
A、12353514
B、12353513
C、12343514
D、12343513
(  B  )
10、下列关于字符串的说法中错误的是________。
A、在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符'\0'作为字符串结束标志
B、'\0'作为标志占用存储空间,计入串的实际长度
C、在表示字符串常量的时候不需要人为在其末尾加入'\0'
D、在C语言中,字符串常量隐含处理成以'\0'结尾
(  A  )
11、把十六进制数baf转换成二进制数________。
A、101110101111
B、110110101111
C、101110111111
D、111011011111
(  A  )
12、若有下面的说明和定义:
struct test
{
int m1;
char m2;
float m3;
union uu
{
char u1[5];
int u2[2];
}
ua;
}
myaa;
则sizeof(struct test)的值是________。
A、20
B、16
C、14
D、9
(  A  )
13、以下程序的输出结果是 _______ 。
main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:switch(y)
{
case 0:a++;
break;
case 1:b++;
break;
}
case 2:a++;
b++;
break;
}
printf("%d,%d\n",a,b);
}
A、2,1
B、2,2
C、1,1
D、2 1
(  C  )
14、若有以下语句,则正确的描述是char a[] ="toyou";
char b[] ={′ t′ ,′o′ ,′ y′,′o′ ,′u′ };
A、a 数组和b 数组的长度相同
B、a 数组长度小于b 数组长度
C、a 数组长度大于b 数组长度
D、a 数组等价于b 数组
(  D  )
15、若char a[10]; 已正确定义,以下语句中不能从键盘上给a数组的 所有元素输入值的语句是________。
A、gets(a);
B、scanf("%s",a);
C、for(i=0;i<10;i++)a[i]=getchar();
D、a=getchar();
(  A  )
16、已知字母a的ascii码为十进制数65,且c2为字符型,则执行语句c2=‘a’+‘6’-‘3’后,c2中的值为________。
A、D
B、68
C、不确定的值
D、C
(  C  )
17、下列符号中,可以作为变量名的是________。
A、+c
B、*X
C、_DAY
D、next-day
(  D  )
18、在c 的if 语句中,可用作条件的表达式是________。
A、关系表达式
B、逻辑表达式
C、算术表达式
D、任意表达式
(  D  )
19、若int a=3, 则执行完表达式a-=a+=a*a 后,a 的值是________。
A、-15
B、-9
C、-3
D、0
(  C  )
20、以下叙述中正确的是()。
A、在程序的一行上可以出现多个有效的预处理命令行
B、使用带参的宏时,参数的类型应与宏定义时的一致
C、宏替换不占用运行时间,只占编译时间
D、在以下定义中 C R 是称为"宏名"的标识符 #define C R 045

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

(   T  )
1、循环体如果包含一个以上语句,应该用花括弧括起来,以复合语句的形式出现。 
(   F  )
2、c语言中浮点型常量指数表示形式中,字母e或e之前不必有数字。 
(   T  )
3、c 语言程序中可以有多个函数, 但只能有一个主函数。 
(   T  )
4、省略else的if语句的一般形式如下,若表达式的值为"真",则执行语句1;
否则,就什么也不做。if (表达式) 语句1 
(   T  )
5、函数的实参和形参可以是相同的名字 
(   F  )
6、字符串可以存储在字符数组中,也可以存储在字符型指针变量中 
(   F  )
7、以"a"方式打开一个文件时,文件指针指向文件首。 
(   F  )
8、在标准c语言中,字符串是以‘ 0’结束的,故字符串的长度也包括‘ 0’。 
(   T  )
9、在c程序中,不同函数中所定义的变量允许同名 
(   T  )
10、表达式都有运算结果 

三、填空题 (共5题,每题4分,共计20分)

1、定义4行3列的整型二维数组a的语句是________。
2、字符串函数________用于从指定的磁盘文件中读出一个字符串。
3、下面程序段中循环体的执行次数是________。
a=10;
b=0;
do
{
b+=2;
a-=2+b;
}
while(a>=0);
4、定义一个指针p,它指向一个有6个整型元素的一维数组,定义语句为 ______。
5、如果一个函数无返回值,定义它时函数类型应是______。

四、程序分析题 (共4题,每题5分,共计20分)

1、以下程序运行后的输出结果是 ________ 。
main()
{
int x=0210;
printf("%x\n",x);
}
2、以下程序的执行结果是____。
#include<stdio.h>
void main()
{
char c='a'+10;
printf("c=%c\n",c);
}
3、执行下列程序段后,输出的a的值是_____________。
main( )
{
int a = 2;
switch(a)
{
case 0: a--;
break;
case 1: a++;
break;
case 2: a=a+5;
break
}
printf("%d",a);
}
4、下面程序的功能是用―辗转相除法‖求两个正整数的最大公约数。请分析程序填空。
#include <stdio.h>
main()
{
int r, m, n;
scanf("%d%d", &m, &n);
if (m < n) ____1___;
r = m % n;
while (r)
{
m = n;
n = r;
r = ____2___;
}
printf("%d\n", n);
}

五、编程题 (共3题,每题0分,共计50分)

1、编写程序:输出fabonacci数列:1,1,2,3,5,8,……的前20项的项值,要求每行输出5个数
2、编写程序:将字符数组a中下标值为奇数的元素从小到大排列,其它元素不变
例如:当a数组中的字符串为:"clanguage"时,程序的输出结果为:cgalgnaue()
3、说明一个枚举类型enummonth它的枚举元素为Jan、Feb、…、Dec。编写能显示上个月名称的函数last_month。例如,输入Jan时能显示Dec。再编写另一个函数printmon用于打印枚举变量的值枚举元素。最后编写主函数调用上述函数生成一张12个月份及其前一个月份的对照表,使用结构体实现