南华大学C语言程序设计期末

本试卷为南华大学C语言程序设计期末,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言程序设计期末

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

(  A  )
1、以下程序的输出结果是
main()
{
int a=4,b=5,c=0,d;
d=!a&&!b||!c;
printf("%d\n",d);
}
A、1
B、0
C、非0的数
D、-1
(  D  )
2、以下叙述中错误的是________。
A、C语言的可执行程序是由一系列机器指令构成的
B、用C语言编写的源程序不能直接在计算机上运行
C、通过编译得到的二进制目标程序需要连接才可以运行
D、在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件
(  B  )
3、以下关于c语言的叙述中正确的是________。
A、C语言中的注释不可以夹在变量名或关键字的中间
B、C语言中的变量可以再使用之前的任何位置进行定义
C、在C语言算术的书写中,运算符两侧的运算数类型必须一致
D、C语言的数值常量中夹带空格不影响常量值的正确表示
(  A  )
4、以下关于typedef的叙述错误的是________。
A、用typedef可以增加新类型
B、typedef只是将已存在的类型用一个新的名字来代表
C、用typede{可以为各种类型说明一个新名,但不能用来为变量说明一个新名
D、用typedef为类型说明一个新名,通常可以增加程序的可读性
(  B  )
5、结构化程序所要求的基本结构不包括( )。
A、顺序结构
B、GOT0跳转
C、选择(分支)结构
D、重复(循环)结构
(  D  )
6、若有如下定义,则________是对数组元素的正确的引用 int a[10], *p ; p=a;
A、*&a[10]
B、a[11]
C、*(p+11)
D、*p
(  C  )
7、已知i,j,k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1,j的值为2,k的值为3,以下选项中正确的输入语句是________。
A、scanf(“%2d%2d%2d”,&i,&j,&k);
B、scanf(“%d_%d_%d”,&i,&j,&k);
C、scanf(“%d,%d,%d”,&i,&j,&k);
D、scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);
(  B  )
8、设有以下程序
main( )
{
int n1,n2;
scanf("%d",&n2);
while (n2!=0)
{
n1=n2%10;
n2=n2/10;
printf("%d",n1);
}
}
程序运行后,如果从键盘上输入1298,则输出结果为________。
A、892
B、8921
C、89
D、921
(  A  )
9、若有定义:int a=7; float x=2.5, y=4.7; 则表达式: x+a%3*(int)(x+y)%2/4的值是________。
A、2.500000
B、2.7500000
C、3.500000
D、0.000000
(  C  )
10、有以下定义语句,编译时会出现编译错误的是________。
A、char a='a';
B、char a='\n';
C、char a='aa';
D、char a='\x2d';
(  D  )
11、以下选项中正确的语句组是________。
A、char s[ ];s=“BOOK!”;
B、char *s;s={“BOOK!”};
C、char s[10];s=“BOOK!”;
D、char *s;s=“BOOK!”;
(  D  )
12、若有以下说明语句:
struct student
{
int num;
char name[ ];
float score;
} stu;
则下面的叙述不正确的是: ( )
A、struct是结构体类型的关键字
B、struct student 是用户定义的结构体类型
C、num, score都是结构体成员名
D、stu是用户定义的结构体类型名
(  A  )
13、下列数据中属于"字符串常量"的是________。
A、“a”
B、{
ABC}
C、‘abc\0’
D、‘a’
(  A  )
14、当接受用户输入的含有空格的字符串时,应使用 __________ 函数 .
A、gets( )
B、getchar( )
C、scanf( )
D、printf( )
(  D  )
15、下列关于do…while语句的叙述中正确的是________。
A、do…while语句所构成的循环不能用其他语句构成的循环来代替
B、do…while语句所构成的循环只能用break语句跳出
C、do…while语句所构成的循环只有在while后面的表达式非零时才结束
D、do…while语句所构成的循环只有在while后面的表达式为零时才结束
(  D  )
16、设有以下定义: int a[3][3]= { 1,2,3,4,5,6,7,8,9 }; int(*ptr)[3]=a; 则下列能正确表示数组元素a[1][2]的表达式是______。
A、*((*ptr+1)[2])
B、a[2][3]
C、(*ptr+1)+2
D、*(*(a+1)+2)
(  B  )
17、若有定义int a=2; 则执行完语句a/=a*a; 后,a的值是________。
A、0.5
B、0
C、1/2
D、1/4
(  A  )
18、对于一个正常运行的c程序,以下叙述中正确的是________。
A、程序的执行总是从main函数开始,在main函数结束
B、程序的执行总是从程序的第一个函数开始,在main函数结束
C、程序的执行总是从main函数开始,在程序的最后一个函数中结束
D、程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束
(  C  )
19、流程图里面的开始和结束用( )表示。
A、矩形
B、圆
C、椭圆
D、菱形
(  B  )
20、设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是________。
A、k=* p1+ * p2
B、p2=k;
C、p1=p2;
D、k=* p1 * (* p2);
(  D  )
21、要定义整型数组x,使之包括初值为0的三个元素,下列语句中错误的是________。
A、int x[3]=0,0,0;
B、int x[]=0;
C、static int x[3]=0;
D、int x[]=
(  A  )
22、二维数组a[8][9]按行优先顺序存储,若数组元素a[2][3]的存储地址为1087,a[4][7]的存储地址为1153,则数组元素a[6][7]的存储地址为 ( )
A、1207
B、1209
C、1211
D、1213
(  B  )
23、下列赋值语句错误的是________。
A、A
B、i==0;
C、i=i+1:
D、i+=1:
(  B  )
24、下列选项中,值为1的表达式是________。
A、1-'0'
B、1-'\0'
C、'1'-0
D、'\0','0'
(  B  )
25、有以下程序
#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
(  A  )
26、以下程序的运行结果是________。
#include <stdio.h>
main()
{
int a[]={1,2,3,4,5,6,7,8,9,10,11,12};
int *p=a+5,*q=null;
*q=8(p+5);
printf("%d %d\n", *p,*q);
}
A、运行后报错
B、6 6
C、6 11
D、5 5
(  A  )
27、有以下程序:
main()
{
int a=3,b=4,c=5,d=2;
if(a>b) if(b>c) printf("%d",d+++ 1);
else printf("%d",++d+1);
printf("%d\n",d);
}
程序运行后的输出结果是 ______。
A、2
B、3
C、43
D、44
(  D  )
28、有以下程序:
#include<stdio.h>
main()
{
int x=8;
for(;x>0;x--)
{
if(x%3)
{
printf("%d,",x--);
continue;
}
printf("%d,",--x);
}
}
程序的运行结果是______。
A、7,4,2
B、8,7,5,2
C、9,7,6,4
D、8,5,4,2
(  B  )
29、字符串"xyz"在内存占用的字节数是______。
A、3
B、4
C、6
D、8
(  A  )
30、以下叙述正确的是________。
A、每个 C 程序都只能有一个 main 函数
B、每个 C 程序文件中的 main 函数都应当放在最前面
C、每个 C 程序文件都应当包含一个 main 函数
D、C 程序由函数组成,可以不包含 main 函数
(  A  )
31、下面程序的输出结果是_______。
f1(int x)
{
int y;
y=x+x;
return(y);
}
f2(int a ,int b)
{
int z;
z=f1(a*b);
return(z);
}
main( )
{
int a=2,b=5,c;
c=f2(a,b);
printf("%d",c);
}
A、20
B、7
C、4
D、10
(  B  )
32、以下叙述中错误的是______。
A、用户定义的函数中可以没有return语句
B、用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值
C、用户定义的函数中若没有return语句,则应当定义函数为void类型
D、函数的return语句中可以没有表达式
(  B  )
33、一个字节代表几位二进制数():
A、1
B、8
C、16
D、根据计算机的位数决定
(  C  )
34、对c语言程序,以下说法正确的是________。
A、main 函数是主函数,一定要写在最前面。
B、所有的自定义函数,都必须先声明。
C、程序总是从main 函数开始执行的。
D、程序中只能调用库函数,不能自己定义函数。
(  D  )
35、若a是基本整型变量,c是单精度实型变量,输入语句____是错误的。
A、scanf("%d,%f”, &a, &c);
B、scanf("d=%d, c=%f”, &a, &c);
C、scanf("%d%f”, &a, &c);
D、scanf("%d%f”,A, c);
(  D  )
36、下面定义结构变量的语句中错误的是________。
A、struct student{
int num; char name[20];
} s;
B、struct {
int num; char name[20];
} s;
C、struct student{
int num; char name[20];
};
struct student s;
D、struct student{
int num; char name[20];
};
student s;
(  A  )
37、设有以下代码其中,循环体 a 与循环体 b 相同,以下叙述正确的是________。
A、循环体 A 与循环体 B 的执行次数相同
B、循环体 A 比循环体 B 的执行次数多一次
C、循环体 A 比循环体 B 的执行次数少一次
D、循环体 A 与循环体 B 的执行次数不确定
(  A  )
38、用在switch语句的关键字没有哪个?
A、continue
B、break
C、default
D、if
(  B  )
39、以下叙述中正确的是________。
A、在 C 语言中,逻辑真值和假值分别对应 1 和 0
B、关系运算符两边的运算对象可以是语言中任意合法的表达式
C、对于浮点变量 x 和 y,表达式:x==y 是非法的,会出编译错误
D、分支结构是根据算术表达式的结果来判断流程走向的
(  C  )
40、static struct
{
int a1;
float a2;
char a3;
}
a[10]={1,3.5,'a'};
说明数组a是地址常量,它有10个结构体型的下标变量,采用静态存 储方式,其中被初始化的下标变量是________。
A、a[1]
B、a[-1]
C、a[0]
D、a[10]
(  A  )
41、以下正确的说法是:在c语言中________。
A、实参和与其对应的形参各占用独立的存储单元
B、实参和与其对应的形参共占用一个存储单元
C、只有当实参和与其对应的形参同名时才共占用存储单元
D、形参是虚拟的,不占用存储单元
(  D  )
42、若有以下定义和语句: int a[10]={1,2,3,4,5,6,7,8,9,10}
, *p=a;
不能表示a数组元素的表达式是________。
A、*p
B、a[9]
C、*p++
D、a[*p-a]
(  B  )
43、对for( 表达式1; ;表达式3)可理解为________。
A、for (表达式1;0;表达式3)
B、for (表达式1;1;表达式3)
C、for ( 表达式1;null; 表达式3)
D、缺少一个表达式
(  A  )
44、如果在一个复合语句中定义了一个变量,则有关该变量正确的说法是________。
A、只在该复合语句中有效
B、只在该函数中有效
C、在本程序范围内均有效
D、为非法变量
(  B  )
45、在c 语言中, 要求运算数必须是整型的运算符是________。
A、^
B、%
C、!
D、>
(  A  )
46、以下程序的输出结果是________。
main( )
{
int i=010, j=10, k=ox10;
printf(''%d,%d,%d\n'',i,j,k);
}
A、8,10,16
B、8,10,10
C、10,10,10
D、10,10,16
(  B  )
47、putchar()函数可以向终端输出一个________。
A、整型变量表达式值
B、字符
C、字符串
D、实型变量值
(  B  )
48、在C语言中,合法的字符常量是________.
A、'\084'
B、'\x43'
C、'ab'
D、″\0″
(  D  )
49、若有char s1[]="abc",s2[20],*t=s2;gets(t);则下列语句中能够实现当字符串 s1 大于字符串 s2 时,输出 s2 的语句是()。
A、if(strcmp(s1,s1)>0)puts(s2);
B、if(strcmp(s2,s1)>0)puts(s2);
C、if(strcmp(s2,t)>0)puts(s2);
D、if(strcmp(s1,t)>0)puts(s2);
(  D  )
50、指针变量 p 进行自加运算(即 执行 p++;)后,地址偏移值为 1,则其数据类型为()。
A、int
B、float
C、double
D、char