华北水利水电大学C语言期末

本试卷为华北水利水电大学C语言期末,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言期末

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

(  C  )
1、设有数组定义:char array[]="student"; 则数组所占的存贮空间为________。
A、6个字节
B、7个字节
C、8个字节
D、9个字节
(  A  )
2、下列叙述中错误的是________。
A、在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值
B、在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容
C、在C语言中,外部变量的隐含类型是自动存储类别
D、在C语言中,函数形参的存储类型是自动(auto)类型的变量
(  C  )
3、以下叙述正确的是 。
A、在对一个C程序进行编译的过程中,可发现注释中的拼写错误
B、在C程序中,main函数必须位于程序的最前面
C、C语言本身没有输入输出语句
D、C程序的每行中只能写一条语句
(  C  )
4、执行下面程序时,欲将25和2.5分别赋给a和b,正确的输入方法是________。 int a; float b; scanf("a=%d,b=%f",&a,&b);
A、25□2.5
B、25,2.5
C、a=25,b=2.5
D、a=25□b=2.5
(  C  )
5、有以下程序
main( )
{
char a[]="abcdefg",b[10]="abcdefg";
printf("%d %d\n",sizeof(a),sizeof(b));
}
执行后输出结果是________。
A、7 7
B、8 8
C、8 10
D、10 10
(  B  )
6、设有条件表达式:(exp)? i++ ; j—,则以下表达式中与(exp)完全等价的是________。
A、(EXP=0)
B、(EXP!=0)
C、(EXP=1)
D、(EXP!=1)
(  B  )
7、下面函数的功能是______。 sss ( char *s , char *t )
{
while (( *s ) && ( *t ) && ( *t++== *s++ )) ;
return ( *s-*t ) ;
}
A、求字符串的长度
B、比较两个字符串的大小
C、将字符串 s 复制到字符串 t 中
D、将字符串 s 接续到字符串 t 中
(  C  )
8、如有说明 : char s1[5],s2[7]; 要给数组 s1 和 s2 整体赋值 , 下列语句中正确的是 __________.
A、s1=getchar(); s2=getchar();
B、scanf("%s%s",s1,s2);
C、scanf("%c%c",s1,s2);
D、gets(s1,s2);
(  D  )
9、已知 short int 类型变量占用两个字节 , 若有定义 : short int x[10]={ 0,2,4 }; 则数组 x 在内存中所占字节数是 __________.
A、3
B、6
C、10
D、20
(  B  )
10、在"先判断后工作"的循环程序结构中,循环体执行的次数最少是________次。
A、1
B、0
C、2
D、不定
(  C  )
11、下列程序段执行后,k的值是________。 int i=6,j=8,k=10,m=7; if(i>||m<k--) k++; else k--;
A、12
B、11
C、10
D、9
(  C  )
12、表达式sizeof(double)是________。
A、函数调用
B、double型表达式
C、int型表达式
D、非法表达式
(  D  )
13、给定下面的代码: int i=1,j=10;
do
{
if(i++>--j) continue;
}
while(i<5) 执行完之后,i与j的值分别是多少 ( )
A、i=6,j=5
B、i=5,j=5
C、i=6,j=4
D、i=5,j=6
(  D  )
14、下列描述正确的是________。
A、表示m>n为true或m<n为true的表达式为m>n&&m<n
B、switch语句结构中必须有default语句
C、if语句结构中必须有else语句
D、如果至少有一个操作数为true,则包含||运算符的表达式为true
(  C  )
15、在下列选项中,没有构成死循环的程序是________。
A、int i=100;
while(i) {
i=i%100+1;
if(i>100) break;
}
B、for(;;);
C、int k=1000;
do
++k ;
while(k>=1000);
D、int s=36;
while(s);
--s;
(  C  )
16、计算机中的数有浮点和定点两种表示,浮点表示的数,通常由两部分组成,即________。
A、指数和基数
B、尾数和小数
C、阶码和尾数
D、整数和小数
(  C  )
17、有以下程序
int add(int a,int b)
{
return(a+b);
}
main()
{
int k,(*f)(),a=5,b=10;
f=add;
…
}
则以下函数调用语句错误的是______。
A、k=(*f)(a,b);
B、k=add(a,;
C、k=*f(a,b);
D、k=f(a,b);
(  B  )
18、关于过程、自定义函数的调用,正确的叙述是________。
A、实参的数量必须等于形参的数量,它们是一对应的关系
B、实参的数量可以少于形参的数量,多余的形参取逻辑假
C、实参的数量可以多于形参的数量,多余的实参被忽略
D、实参的数量可以多于形参的数量,多余的实参取逻辑假
(  B  )
19、微机中的32指的是________。
A、微机型号码
B、机器字长
C、内存容量
D、存储单位
(  A  )
20、下列哪个是c语言的有效标识符
A、_Nol
B、No.1
C、12345
D、int
(  B  )
21、与十六进制数cd等值的十进制数是________。
A、204
B、205
C、206
D、203
(  D  )
22、对两个数组a和b进行如下初始化: char a[]="abcdef"; char b[]= {'a','b','c','d','e','f' } 则以下叙述正确的是________。
A、数组a与数组b完全相同
B、数组a与数组b长度相同
C、数组a与数组b中都存放字符串
D、数组a比数组b长度长
(  D  )
23、数字字符0的ascii值为48,若有以下程序
main() {
char a=’1’,b=’2’;
printf("%c,b++);
printf("%d\n",b-a);
}
程序运行后的输出结果是______。
A、3,2
B、3,1
C、2,1
D、2,2
(  C  )
24、有以下程序:
#include <stdio.h>
main()
{
int i, j, m=1;
for(i=1; i<3; i++)
{
for(j=3; j>0; j--)
{
if(i*j>3)break;
m*=i*j;
}
}
printf("m=%d\n", m);
}
程序运行后的输出结果是______。
A、m=4
B、m=2
C、m=6
D、m=5
(  A  )
25、以下不能将s所指字符串正确复制到t所指存储空间的是______。
A、do*t++=*s++;while(*s);
B、for(i=0;t[i]=s[i];i++);
C、while(*t=*s)t++;s++;
D、for(i=0,j=0;t[i++]=s[j++];);
(  B  )
26、设有以下程序段 int x=0,s=0;
while(!x!=0)s+=++x;
printf("%d",s);
则
A、运行程序段后输出0
B、运行程序段后输出1
C、程序段中的控制表达式是非法的
D、程序段执行无限次
(  A  )
27、设有以下函数
f(int a) {
int b=0;
static int c=3;
b++;
c++;
return(a+b+c);
}
如果在下面的程序中调用该函数,则输出结果是______。
main() {
int a=2,i;
for(i=0;i<3;i++)printf("%d\n"f(a));
}
A、7
8
9
B、7
9
11
C、7
10
13
D、7
7
7
(  A  )
28、选择出合法的if语句(设int x,a,b,c;)________。
A、if(a=b) x++;
B、if(a=<b) x++;
C、if(a<>b) x++;
D、if(a=>b) x++;
(  A  )
29、c 语言中的基本数据类型包括
A、整型、实型、字符型
B、整型、字符型、数组
C、整型、实型、逻辑型
D、整型、实型、结构体
(  B  )
30、下列选项中,哪一项不是c语言中的位运算符________。
A、&
B、||
C、~
D、^
(  B  )
31、下列关于八进制与十六进制的描述中,错误的是________。
A、八进制是一种逢八进一的机制
B、八进制由0-8这此符号来描述
C、十六进制是一种逢十六进一的机制
D、十六进制由0-9、A-F这些符号来描述
(  D  )
32、以下定义语句中,错误的是______。
A、int a[]={
1,2};
B、char a[3];
C、char s[10]="test";
D、int n=5,a[n];
(  B  )
33、以下程序的输出结果是______。
main()
{
int a=5,b=4,c=6,d;
printf("%d\n",d=a>c?(a>c?a:c):(b));
}
A、5
B、4
C、6
D、不确定
(  C  )
34、设有数据定义语句"int a[200]; ",下列数组元素引用中下标不越界的是________。
A、a[-1]
B、a[201]
C、a[0]
D、a[200]
(  C  )
35、有以下程序段:
int x=3;
do
{
printf(”%3d”,x-=2);
}
while(!(--x));
程序段的输出结果是________。
A、1
B、3 0
C、1-2
D、死循环
(  A  )
36、以下关于逻辑运算符两侧运算对象的叙述中正确的是________。
A、可以是任意合法的表达式
B、只能是整数 0 或非 0 整数
C、可以是结构体类型的数据
D、只能是整数 0 或 1
(  C  )
37、位字段数据的单位是_______位。
A、十六进制
B、八进制
C、二进制
D、十进制
(  C  )
38、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]
(  C  )
39、以下叙述中不正确的是________。
A、预处理命令行都必须以#号开始
B、在程序中凡是以#号开始的语句行都是预处理命令行
C、C程序在执行过程中对预处理命令行进行处理
D、以下是正确的宏定义 #define IBM_PC
(  D  )
40、若有以下的定义:int t[3][2];
能正确表示t数组元素地址的表达式是________。
A、&t[3][2]
B、t[3]
C、&t[1]
D、t[2]
(  C  )
41、下面程序的输出结果是________。
main( )
{
extern int m;
m-=2;
f( );
printf("%d\n",m);
}
int m=7;
f( )
{
printf("%d&",m*m);
m+=m;
}
A、2510
B、25&25
C、25&10
D、10&25
(  D  )
42、若有代数式|x3+lgx|,则正确的c 语言表达式是________。
A、fabs(x*3+log 10(x))
B、abs(pow(x,3)+log10(x))
C、abs(pow(x,3)0)+log10(x))
D、fabs(pow(x,3)0)+log 10(x))
(  D  )
43、有字符数组a[80]和b[80],则正确的输出语句是________。
A、puts(a,b);
B、printf("%s,%s",a[],b[]);
C、putchar(a, b);
D、puts(a),puts(b);
(  D  )
44、判断字符串a 和b 是否相等,应当使用。
A、if(a==b)
B、if(a=b)
C、if(strcmp(a,b))
D、if(strcmp(a,b)==0)
(  D  )
45、在对文件进行操作时,若要求文件的位置指针回到文件的开头,则应当调用的库函数是________。
A、fopen()
B、fseek()
C、fclose()
D、rewind()
(  B  )
46、C语言程序是由____组成
A、一个主程序和若干子程序
B、函数
C、若干过程
D、若干子程序
(  D  )
47、C语言函数的隐含存储类别是________.
A、extern
B、static
C、register
D、auto
(  A  )
48、char a[]="This is a program.";输出前 5 个字符的语句是()。
A、printf("%.5s",a);
B、puts(a);
C、printf("%s",a);
D、a[5*2]=0;puts(a);
(  C  )
49、以下叙述中正确的是 ()。
A、C语言比其他语言高级
B、C语言可以不用编译就能被计算机识别执行
C、C语言以接近英语国家的自然语言和数学语言作为语言的表达形式
D、C语言出现的最晚,具有其他语言的一切优点
(  A  )
50、设有以下语句, 若 0
A、strp
B、str[k]
C、strp[k]
D、*strp