青海师范大学C语言测试卷

本试卷为青海师范大学C语言测试卷,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言测试卷

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

(  B  )
1、若变量已正确定义,有以下程序段
int i=0;
do
printf("%d,",i);
while(i++);
printf("%d",i) 其输出结果是________。
A、0,0
B、0,l
C、1,1
D、程序进入无限循环
(  B  )
2、若程序中有宏定义行:#define N 100,则以下叙述中正确的是________。
A、宏定义行中定义了标识符N的值为整数100
B、在编译程序对C源程序进行预处理时用100替换标识符N
C、对C源程序进行编译时用100替换标识符N
D、在运行时用100替换标识符N
(  C  )
3、有以下程序:
int f(int n);
main()
{
int a=3,s;
s=f(a);
s=s+f(a);
printf("%dkn",s);
}
int f(int n)
{
static int a=1;
n+=a++;
return n;
}
程序运行后的输出结果是________。
A、7
B、8
C、9
D、10
(  B  )
4、结构化程序所要求的基本结构不包括( )。
A、顺序结构
B、GOT0跳转
C、选择(分支)结构
D、重复(循环)结构
(  C  )
5、设有定义:"double x[10],*p=x; ",以下能给数组x下标为6的元素读人数据的正确语句是________。
A、scanf("%f",&x[6]);
B、scanf("%If",*(x+6));
C、scanf("%if",p+6);
D、scanf("%if",p[6]);
(  B  )
6、c语言对嵌套if语句的规定是:else总是与( ) 。
A、其之前最近的if配对
B、其之前最近的且尚未配对的if配对
C、缩进位置相同的if配对
D、第一个if配对
(  A  )
7、以下4组用户定义标识符中,全部合法的一组是________。
A、_main
enclude
sin
B、If
-max
turbo
C、txt
REAL
3COM
D、int
k_2
_001
(  A  )
8、有定义语句:int x, y; 若要通过scanf("%d,%d",&x,&y); 语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是________。
A、11 12<回车>
B、11, 12<回车>
C、11,12<回车>
D、11,<回车>
12<回车>
(  C  )
9、若有定义:int aa[ 8]; 则以下表达式中不能代表数组元aa[1]的地址的是________。
A、&aa[0]+1
B、&aa[1]
C、&aa[0]++
D、aa+1
(  B  )
10、若有以下定义 int x[10], *pt=x; 则对x数组元素的正确引用是________。
A、*&x[10]
B、*(x+3)
C、*(pt+10)
D、pt+3
(  B  )
11、语句int *p; 说明了 。
A、p是指向一维数组的指针
B、p是指向函数的指针,该函数返回一int型数据
C、p是指向int型数据的指针
D、p是函数名,该函数返回一指向int型数据的指针
(  C  )
12、以下正确的叙述是______。
A、C 语言允许 main 函数带形数,且形参个数和形参名均可由用户指定
B、C 语言允许 main 函数带形参,形参名只能是 argc 和 argv
C、当 main 函数带有形参时,传给形参的值只能从命令行中得到
D、有说明 : main ( int argc,char *argv ),则形参 argc 的值必须大于 1
(  A  )
13、如果 c 为字符型变量,判断 c 是否为空格不能使用 __________.( 假设已知空格 ascii 码为 32)
A、if(c=='32')
B、if(c==32)
C、if(c=='\40')
D、if(c==' ')
(  D  )
14、执行下列程序后的输出结果是 _________.
#include <stdio.h>
void main( )
{
int k=4,a=3,b=2,c=1;
printf("%d\n",k<a?k:c<b?c:a);
}
A、4
B、3
C、2
D、1
(  C  )
15、在定义 int a[5][4]; 之后 , 对 a 的引用正确的是__________。
A、a[2][4]
B、a[1,3]
C、a[4][3]
D、a[5][0]
(  B  )
16、设有以下函数:
#include <stdio.h>
int f(int a)
{
int b=0,c;
c=3;
b++ ;
c++;
return (a+b+c);
}
如果在下面的程序中调用该函数,则输出结果是 ______.
void main()
{
int i;
for(i=0;i<3;i++)
printf("%d\n",f(i));
}
A、5 6 7
B、5 7 9
C、3 4 5
D、3 3 3
(  D  )
17、c语言中下列叙述正确的是_______。
A、不能使用do...while语句构成的循环
B、do...while语句构成的循环,必须用break语句才能退出
C、do...while语句构成的循环,当while语句中的表达式值为非零时结束循环
D、do...while语句构成的循环,当while语句中的表达式值为零时结束循环
(  A  )
18、以下选项中,与k=n++完全等价的表达式是________。
A、k=n,n=n+1
B、n=n+1,k=n
C、k= ++n
D、k+=n+1
(  A  )
19、下面关于形参与实参的说法,正确的是________。
A、形参与实参的个数、类型、顺序都应一一对应
B、形参与实参的个数可以不必相同,少一个多一个程序一样执行
C、形参与实参的类型可以不同,不影响运算结果
D、形参与实参的类型个数相同,而顺序不同,计算机可以自动进行匹配,所以形参的顺序无所谓,只要各种形参类型的数量与实参相同即可
(  C  )
20、for(int x=0,y=0;!x&&y<=5;y++)语句执行循环的次数是________。
A、0
B、5
C、6
D、无数次
(  C  )
21、对于条件表达式(k)(i++):(i--)来说,其中的表达式k等价于( )
A、k==0
B、k==1
C、k!=0
D、k!=1
(  D  )
22、在下面语句中,其含义为"p为指向含n个元素的一维数组的指针变量"的定义语句是________。
A、int p [n]
B、int * p( );
C、int * p(n);
D、int( * p)[n]
(  D  )
23、在16位pc机上使用c语言,若有如下定义
struct data {
int i;
char ch;
double f;
} b;
则结构变量b占用内存的字节数是________。
A、1
B、2
C、7
D、11
(  A  )
24、表示关系x<=y<=z的c语言表达式为______。
A、(x<=y)&&(y<=z)
B、(x<=y)and(y<=z)
C、(x<=y<=z)
D、(x<=y)&(y<=z)
(  C  )
25、以下选项中属于c语言数据类型的是________。
A、复数型
B、逻辑型
C、双精度型
D、集合型
(  D  )
26、二维数组a的成员是6个字符组成的串,行下标i的范围从0到8,列下标j的范围从1到10,则存放a至少需要 (44) 个字节。
A、90
B、180
C、240
D、540
(  A  )
27、下列哪个是c语言的有效标识符
A、_Nol
B、No.1
C、12345
D、int
(  D  )
28、下列字符串中,不可以用作c标识符的是________。
A、y_2006
B、_FEST_H
C、Return
D、switch
(  A  )
29、以下程序的输出结果是 long fun(int n) {
long s;
if(n==1||n==2)s=2;
else s=n-fun(n-1);
return s;
}
main() {
printf("%ld\n",fun(3));
}
A、1
B、2
C、3
D、4
(  D  )
30、若有说明语句 char a[ ]="it is mine";
char *p="it is mine";
则以下不正确的叙述是________。
A、a+1表示的是字符t的地址
B、p指向另外的字符串时,字符串的长度不受限制
C、p变量中存放的地址值可以改变
D、a中只能存放10个字符
(  D  )
31、下列字符常量的写法中,正确的是________。
A、'abc'
B、'\5A'
C、A
D、'\73'
(  B  )
32、设有如下定义:
struct sk
{
int a;
float b;
}
data,*p;
若有p=&data;
则对data中成员a的引用正确的是________。
A、(*p).data.a
B、(*p).a
C、p->data.a
D、p.data.a
(  B  )
33、有以下程序
main()
{
unsigned char a=2,b=4,c=5,d;
d=a|b;
d&=c;
printf("%d\n",d);
}
程序运行后的输出结果是______。
A、3
B、4
C、5
D、6
(  C  )
34、执行语句for(i=1;i<4;i++ ); 后变量i的值是________。
A、3
B、5
C、4
D、不定
(  A  )
35、若变量已正确定义,对以下while循环结束条件的准确描述是________。
flag = 1;
denominator = 1;
item = 1.0;
pi = 0;
while(fabs(item) >= 0.0001)
{
item = flag * 1.0 / denominator;
pi = pi + item;
flag = -flag;
denominator = denominator + 2;
}
A、item的绝对值小于0.0001
B、item的绝对值大于0.0001
C、item的绝对值等于0.0001
D、item的绝对值不等于0.0001
(  B  )
36、以下对局部变量描述错误的是________。
A、在函数内部定义的变量
B、在程序的全部执行过程中一直占用存储单元。
C、在main函数中定义的变量是局部变量
D、形式参数也是局部变量。
(  A  )
37、以下求 n! 的函数可以正确计算21!,正确的选项是________。_______ fact(int n)
{
int i;
_______ product;
product = 1;
for (i = 1; i <= n; i++)
{
product = product * i;
}
return product;
}
A、double
B、int
C、float
D、void
(  B  )
38、下关于运算符优先顺序的描述中正确的是________。
A、"!" > "&&" > "/" > ">="
B、"!" > "/" > ">=" > "&&"
C、"!" > "/" > "&&" > ">="
D、"/" > "!" > "&&" > ">="
(  C  )
39、下列不正确的转义字符是________。
A、\\'
B、\"
C、074'
D、\0'
(  D  )
40、对于 if(表达式)语句,以下说法正确的是________。
A、“表达式”的值只能是整数值
B、在“表达式”中不能调用函数
C、在“表达式”中不能含有浮点类型的变量或常量
D、“表达式”可以是各种形式的算术表达式
(  C  )
41、设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是________。
A、if(x++);
B、if(x>y && y!=0);
C、if(x>0) x--
D、if(y<0) {;}
(  D  )
42、int i,j,a[2][3]; 按照数组a的元素在内存的排列次序,不能将数 1,2,3,4,5,6存入a数组的是________。
A、for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]=i*3+j+1;
B、for(i=0;i<3;i++)for(j=0;j<2;j++)a[j][i]=j*3+i+1;
C、for(i=0;i<6;i++)a[i/3][i%3]=i+1;
D、for(i=1;i<=6;i++)a[i][i]=i;
(  D  )
43、若char a[10]; 已正确定义,以下语句中不能从键盘上给a数组的 所有元素输入值的语句是________。
A、gets(a);
B、scanf("%s",a);
C、for(i=0;i<10;i++)a[i]=getchar();
D、a=getchar();
(  B  )
44、c语言源程序文件经过c编译程序编译后生成的目标文件的后缀为
A、.c
B、.obj
C、.exe
D、.bas
(  A  )
45、对于用"r"方式打开文件下列说法正确的是________。
A、用"r"方式打开的文件只输入不能输出
B、用"r"方式打开的文件只能输出,不能输入
C、用"r"方式可以打开任何文件
D、以上均不对
(  C  )
46、有以下程序
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;
int i;
float sum=0;
p=s+2;
for(i=0;i<3;i++)sum=sum+p->score[i];
printf("%6.2f\n",sum);
}
程序运行后的输出结果是________。
A、250.00
B、250
C、285.00
D、285
(  C  )
47、语句int (*ptr)();
的含义是______。
A、ptr 是指向一维数组的指针变量
B、ptr 是指向int 型数据的指针变量
C、ptr 是指向函数的指针,该函数返回一个int 型数据
D、ptr 是一个函数名,该函数的返回值是指向int 型数据的指针
(  C  )
48、下述标识符中, ( )是合法的用户标识符。
A、A&B
B、void
C、_student
D、ab*
(  D  )
49、以下不正确的说法是____
A、在不同的函数中可以使用相同名字的变量
B、形式参数是局部变量
C、在函数内定义的变量只在本函数范围内有效
D、在函数内的复合语句中定义的变量在本函数范围内有效
(  C  )
50、若有以下数组说明,则i=10;a[a[i]]元素数值是____。
int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};
A、10
B、9
C、6
D、5