中国民航大学C语言期末题目

本试卷为中国民航大学C语言期末题目,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言期末题目

一、单项选择题 (共50题,每题2分,共计100分)

(  B  )
1、下列说法不正确的是________。
A、调用函数时,实参可以是表达式
B、调用函数时,实参与形参可以共用内存单元
C、调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等
D、调用函数时,实参与形参的类型必须一致
(  A  )
2、下列叙述中正确的是________。
A、只能在循环体内和switch语句体内使用break语句
B、continue语句的作用是结束整个循环的执行
C、在循环体内使用break语句或continue语句的作用相同
D、从多层循环嵌套中退出时,只能使用got0语句
(  A  )
3、以下选项中不合法的用户标识符是________。
A、abC.C
B、file
C、Main
D、PRINTF
(  B  )
4、下列叙述中不正确的是________。
A、在c语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B、在c的函数中,最好使用全局变量
C、外部变量可以在函数之间传递数据
D、自动变量实质上是一个函数内部的局部变量
(  A  )
5、根据c语言的语法规则,下列________个是不合法标识符。
A、do
B、Name
C、R5
D、_exam
(  B  )
6、设有字符串a="he has 钱!",则该字符串的长度为( )。
A、9
B、10
C、11
D、8
(  C  )
7、下列程序执行后的输出结果是________。
main()
{
char x=0xffff;
printf("%d\n",x--);
}
A、-32767
B、FFFE
C、1
D、32768
(  B  )
8、以下叙述中错误的是________。
A、可以用typedef说明的新类型名来定义变量
B、typedef说明的新类型名必须使用大写字母,否则会出编译错误
C、用typedef可以为基本数据类型说明一个新名称
D、用typedef说明新类型的作用是用一个新的标识符来代表已存在的类型名
(  A  )
9、若有定义int a=12,n=5,则表达式a%=(n%2)运算后,a的值:
A、0
B、1
C、12
D、6
(  C  )
10、以下叙述中不正确的是________。
A、空字符串(即两个双引号连写)只占一个存储单元
B、字符型常量可以放在字符型变量中
C、字符型常量可以放在字符串变量中
D、字符型常量可以与整数混合运算,而字符串常量不可以
(  C  )
11、若有说明和语句 int a=5; a++; 此处表达式a++的值是________。
A、7
B、6
C、5
D、4
(  A  )
12、若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是________。
A、p=2*(int*)malloc(sizeof(int));
B、p=(int*)malloc(2*sizeof(int));
C、p=(int*)malloc(2*2);
D、p=(int*)calloc(2,sizeof(int));
(  C  )
13、下列四组选项中,正确的c语言标识符是________。
A、%x
B、a+b
C、a123
D、123
(  D  )
14、已知 short int 类型变量占用两个字节 , 若有定义 : short int x[10]={ 0,2,4 }; 则数组 x 在内存中所占字节数是 __________.
A、3
B、6
C、10
D、20
(  B  )
15、下列定义数组的语句,正确的是________。
A、int N=10; int x[N];
B、#define N 10; int x[N];
C、int x[0..10];
D、int x[];
(  D  )
16、设int a=0; 错误的语句是________。
A、++a;
B、a++;
C、a=-a;
D、(-++a);
(  C  )
17、有以下程序段
typedef struct node
{
int data;
struct node * next;
}
* node;
node p;
以下叙述中正确的是________。
A、p是指向struct node结构变量的指针的指针
B、NODEp;语句出错
C、p是指向struct node结构变量的指针
D、p是struct node结构变量
(  B  )
18、若变量已正确定义并赋值,以下符合c语言语法的表达式是________。
A、a:=b+1
B、a=b=c+2
C、int 18.5%3
D、a=a+7=c+b
(  D  )
19、下列关于函数参数的叙述中,正确的是________。
A、在函数原型中不必声明形参类型
B、函数的实参和形参共享内存空间
C、函数形参的生存期与整个程序的运行期相向
D、函数的形参在函数被调用时获得初始值
(  C  )
20、下列数中为八进制的是______。
A、27
B、0x25
C、026
D、028
(  A  )
21、for循环的循环次数________。
A、通常是确定的,但也可以不确定
B、通常不确定,但也可以确定
C、是不确定的
D、是确定的
(  C  )
22、下列各进制的整数中,______表示的值最大。
A、十进制数10
B、八进制数10
C、十六进制数10
D、进制数10
(  B  )
23、下列不属于简单数据类型的是________。
A、整数类型
B、类
C、浮点数类型
D、布尔类型
(  A  )
24、设有定义 double a[10],*s=a; 以下能够代表数组元素a[3]的是______。
A、*(s+3)
B、(*s)[3]
C、*s[3]
D、*s+3
(  D  )
25、以下程序的输出结果是______。
main()
{
char a[]="programming",b[]="language";
char *p1,*p2;
int i;
p1=a;
p2=b;
for(i=0;i<7;i++)
if(*(p1+i)==*(p2+i))
printf("%c",*(p1+i));
}
A、gm
B、rg
C、or
D、ga
(  B  )
26、有以下程序
#include<string.h>
main()
{
char p[20]={'a','b','c','d'},q[]="abc",r[]="abcde";
strcat(p,r);
strcpy(p+strlen(q),q);
printf("%d\n",strlen(p));
}
程序运行后的输出结果是________。
A、9
B、6
C、11
D、7
(  B  )
27、有下列程序:
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
(  B  )
28、有以下程序:
struct stu
{
char num[10];
float score[3];
};
main()
{
struct stu s[3]={{"20021",90,95,85}, {"20022",95,80,75}, {"20023",100,95,90}},*p=s;
int i;
float sum=0;
for(i=0;i<3;i++ ){
sum=sum+p->score[i];
}
printf("%6.2f\n",sum);
}
程序运行后的输出结果是________。
A、260
B、270
C、280
D、285
(  C  )
29、下面语句的输出结果是_______。 printf("%d\n",strlen("\t\"\065\xff\n"));
A、14
B、8
C、5
D、输出项不合怯,无正常输出
(  B  )
30、有以下程序
#include <stdio.h>
main ()
{
int a = 5, b = 4, c = 3, d = 2;
if (a > b > c)
printf ("%d\n", d);
else if ((c - 1 >= d) == 1)
printf ("%d\n", d + 1);
else
printf ("%d\n", d + 2);
}
执行后输出的结果是________。
A、2
B、3
C、4
D、编译时有错,无结果
(  A  )
31、下列语句中正确的是________。
A、char*myString="Hello-World!";
B、char myString="Hello-World!";
C、char myString[11]=”Hello-World!”;
D、char nlyString[12]="Hello-World!";
(  C  )
32、下面各语句行中,能正确进行给字符串赋值操作的语句行是______。
A、char st[4][5]={"ABCDE"};
B、char s[5]={'A','B','C','D','E'};
C、char *s="ABCDE";
D、char *s; scanf("%s",*s);
(  B  )
33、以下叙述中错误的是______。
A、C语言中对二进制文件的访问速度比文本文件快
B、C语言中,随机文件以二进制代码形式存储数据
C、语句FILE *fp;定义了一个名为fp的文件指针
D、C语言中的文本文件以ASCII码形式存储数据
(  C  )
34、设x为整型变量,和表达式"!(!x)"值完全相同的表达式是________。
A、A==0
B、x==1
C、x!=0
D、x!=1
(  C  )
35、使下列程序段输出"123,456,78",键盘输入数据,正确的输入是________ 。 int i,j,k scanf("%d,%3d%d",&i,&j,&k);
printf("%d,%d,%d\n",i,j,k);
A、12345678
B、123,456,78
C、123,45678
D、123,*45678
(  D  )
36、以下对一维数组c 进行正确的定义初始化的语句是________。
A、int c [10] =0;
B、int c [10] ={0}*10;
C、int c [1] ={0,0,0,0,0,0,0};
D、int c [10] ={0};
(  D  )
37、下列while 循环,将执行
int i=4;
while(--i) printf("%d",i);
A、3 次
B、4 次
C、0 次
D、无限次
(  C  )
38、设有如下定义:int ix=10,iy=3,iz;
则语句printf("%d\n",iz=(ix%iy,ix/iy));
的输出结果是________。
A、1
B、2
C、3
D、4
(  D  )
39、已定义以下函数int fun( int *p)
{
return *p;
}
则fun函数返回值足
A、不确定的值
B、一个整数
C、形参p中存放的值
D、形参p的地址值
(  A  )
40、以下叙述中错误的是________。
A、可以给指针变量赋一个整数作为地址值
B、函数可以返回地址值
C、改变函数形参的值,不会改变对应实参的值
D、当在程序的开头包含头文件 stdio.h 时可以给指针变量赋 NULL
(  B  )
41、有以下程序
main()
{
int a[3][2]={0},(*ptr)[2],i,j;
for(i=0;i<2;i++)
{
ptr=a+i;
scanf("%d",ptr);
ptr++;
}
for(i=0;i<3;i++)
{
for(j=0;j<2;j++) printf("%2d",a[i][j]);
printf("\n");
}
}
若运行时输入:1 2 3<回车>,则输出结果是______。
A、产生错误信息
B、10
C、12
D、1020 30 2000 00 30
(  B  )
42、c语言中,数组名代表________。
A、数组全部元素的值
B、数组首地址
C、数组第一个元素的值
D、数组元素的个数
(  B  )
43、以下对枚举类型名的定义中正确的是________。
A、enum a={sum,mon,tue};
B、enum a {sum=9,mon=-1,tue};
C、enum a={"sum","mon","tue"};
D、enum a {"sum","mon","tue"};
(  A  )
44、若变量均已正确定义并赋值,以下合法的c语言赋值语句是________。
A、x=n/2.5;
B、x==5;
C、x+n=I;
D、5=x=4+1;
(  A  )
45、c语言的if语句嵌套时,if与else的配对关系是________。
A、每个else总是与它上面的最近的并且尚未与其他else匹配的if配对
B、每个else总是与最外层的if配对
C、每个else与if的配对是任意的
D、每个else总是与它上面的if配对
(  C  )
46、关于return语句,下列正确的说法是________。
A、不能在主函数中出现且在其他函数中均可出现
B、必须在每个函数中出现
C、可以在同一个函数中出现多次
D、只能在除主函数之外的函数中出现一次
(  A  )
47、以下不是无限循环的语句为________。
A、for(y=0,x=1;x>++y;x=i++) i=x;
B、for(;;x++=i);
C、while1){x++;}
D、for(i=10;;i--) sum+=i;
(  D  )
48、static char str[10]="China";数组元素个数为()。
A、5
B、6
C、9
D、10
(  B  )
49、以下语句中,不能实现回车换行的是()。
A、printf("\n");
B、putchar("\n");
C、fprintf(stdout,"\n");
D、fwrite("\n",1,1,stdout);
(  A  )
50、若有如下定义和语句,且 0<=i<5,下面( )是对数值为 3 数组元素的引用
int a[]={1,2,3,4,5},*p,i;
p=a;
A、*(a+2)
B、a[p-3]
C、p+2
D、a+3