重庆师范大学C语言程序设计测试卷

本试卷为重庆师范大学C语言程序设计测试卷,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言程序设计测试卷

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

(  B  )
1、已有定义:char c; ,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是________。
A、isupper(c)
B、’A’<=c<=’Z’
C、’A’<=c&&c<=’Z’
D、c<=(‘2’-32)&&(‘a’-32)<=c
(  C  )
2、对两个数组a和b进行下列初始化: char m[]="1234567"; char n[]={'1','2’,'3','4','5','6','7'};则下列叙述正确的是________。
A、数组in与数组n完全相同
B、数组m与数组n长度相同
C、数组m比数组n长1
D、数组m与数组n中都存放字符串
(  D  )
3、c语言允许将一条语句写在两行上,下列语句不正确是________。
A、int a,
b;
B、int a
,b;
C、int
a,b;
D、int a,b
;
(  C  )
4、计算机内部运算使用的数是________。
A、十进制数
B、十六进制数
C、二进制数
D、八进制数
(  C  )
5、当从键盘上输入字符"12134211"下面程序的 输出结果是________。
main( )
{
char s;
int v1=0,v2=0,v3=0,v4=0,k;
for(k=0;k<=7;k++)
{
scanf("%c",&s);
switch(s)
{
default: v4++;
case '1': v1++;
case '3': v3++;
case '2': v2++;
}
}
printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);
}
A、v1=4,v2=2,v3=1,v4=1
B、v1=4,v2=9,v3=3,v4=1
C、v1=5,v2=8,v3=6,v4=1
D、v1=8,v2=8,v3=8,v4=8
(  B  )
6、有以下程序
main()
{
char p[]={'a', 'b', 'c'} , q[10]={'a', 'b', 'c'} ;
printf("%d %d\n", strlen(p), strlen(q));
}
以下叙述中正确的是________。
A、在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3
B、由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3
C、由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3
D、由于p和q数组中都没有字符串结束符,故长度都不能确定
(  D  )
7、有以下程序
#include <stdio.h>
void fun(char *t, char *s)
{
while(*t!=0) t++;
while((*t++=*s++)!=0);
}
min()
{
char ss[10]="acc",aa[10]="bbxxyy";
fun(ss,aa);
printf("%s,%s﹨n",ss,aa);
}
程序的运行结果是________。
A、accxyy, bbxxyy
B、axx, bbxxyy
C、accxxyy, bbxxyy
D、accbbxxyy, bbxxyy
(  D  )
8、下面程序段的运行结果是 _____________.
for(i=1;i<=5;)
printf("%d",i);
i++;
A、12345
B、1234
C、15
D、无限循环
(  C  )
9、下列初始化语句中,正确且与语句 char c[ ]="string"; 等价的是 __________.
A、char c[ ]={'s','t','r','i','n','g'};
B、char c[ ]='string';
C、char c[7]={'s','t','r','i','n','g','\0'};
D、char c[7]={'string'};
(  B  )
10、c语言的跳转语句中,对于break和continue说法正确的是________。
A、break语句只应用于循环体中
B、continue语句只应用于循环体中
C、break 是无条件跳转语句,continue不是________。
D、break和continue的跳转范围不够明确,容易产生问题
(  D  )
11、设有二维数组a(12,10),其每个元素占4个字节,数据按列优先顺序存储,第一个元素的存储地址为100。则元素a(5,5)的存储地址为________。
A、176
B、276
C、208
D、308
(  C  )
12、下面函数的功能是
char* fun(char* strl,char* str2) {
while((*strl)&&(*str2++=*strl++));
return str2;
}
A、求字符串的长度
B、比较两个字符串的大小
C、将字符串str1复制到字符串str2中
D、将字符串str1接续到字符串str2中
(  C  )
13、下列数中为八进制的是______。
A、27
B、0x25
C、026
D、028
(  A  )
14、若整型变量a、b、c、d中的值依次为:1、4、3、2,则条件表达式a<b a:c<d c:d的值是________。
A、1
B、2
C、3
D、4
(  C  )
15、程序的基本控制结构是______。
A、顺序结构,多分支结构和单分支结构
B、顺序结构,支结构和循环结构
C、顺序结构,选择结构和循环结构。
D、单行结构和多行结构。
(  B  )
16、c语言中的基本数据类型是________。
A、整型、浮点型、逻辑型、无值型和类类型
B、整型、字符型、浮点型、无值型和逻辑型
C、整型、浮点型、字符型、逻辑型和枚举型
D、整型、浮点型、逻辑型、无值型和指针型
(  C  )
17、c语言中,可用于说明函数的是________。
A、auto或static
B、extern或auto
C、static或extern
D、auto或register
(  B  )
18、一个字长为8位的无符号二进制整数能表示的十进制数值范围是________。
A、0~256
B、0~255
C、1~256
D、1~255
(  C  )
19、设有如下说明
typedef struct st
{
long a;
int b;
char c[2];
}
new;
则下面叙述中正确的是______。
A、以上的说明形式非法
B、ST 是一个结构体类型
C、NEW 是一个结构体类型
D、NEW 是一个结构体变量
(  C  )
20、若有说明语句:char ch='\x41'; 则ch中______。
A、包含4个字符
B、包含2个字符
C、包含1个字符
D、字符个数不确定,说明不正确
(  D  )
21、合法的数组定义是________。
A、int a[ ]="string";
B、int a[5]=0,1,2,3,4,5;
C、char a="string";
D、char a=0,1,2,3,4,5;
(  A  )
22、以下不合法的字符常量是________。
A、'\018'
B、'\'"
C、'\\'
D、'\xcc'
(  A  )
23、下列程序的执行结果是 ______。
#include<stdio.h>
union un {
int i;
char c[2];
}
void main() {
union un x;
x.c[0]=10;
x.c[1]==1;
printf("\n%d",x.i);
}
A、266
B、11
C、265
D、138
(  D  )
24、有以下函数:fun(char *a,char *b)
{
while((*a!='\0')&&(*b!='\0')&&(*a==*b))
{
a++;
b++;
}
return(*a-*b);
}
该函数的功能是______。
A、计算 a 和 b 所指字符串的长度之差
B、将 b 所指字符串连接到 a 所指字符串中
C、将 b 所指字符串连接到 a 所指字符串后面
D、比较 a 和 b 所指字符串的大小
(  C  )
25、以下能将字符串,you are luck!正确读入的语句组是________。
A、char s[80]; scanf("%s",s);
B、char *s: scanf("%s",s);
C、char s[80]; gets(s);
D、char *s; gets(3);
(  C  )
26、下列表达式中,类型可以作为int型的是________。
A、"abe"+"efg"
B、"abc"+"efg"
C、'a'+'b'
D、3+"4"
(  D  )
27、以下程序结果为:______。
void add( )
{
static int y=4;
y--;
printf("%d",y);
}
main( )
{
int m;
for(m=0;m<4;m++)add( );
}
A、4444
B、4321
C、3333
D、3210
(  C  )
28、设有以下语句:char str1[]="string",str2[8],*str3,*str4="string"; 则下列选项中,______不是对库函数strcpy的正确调用,此库函数用来复制字符串。
A、strcpy(str1,"HELLO1");
B、strcpy(str2,"HELLO2");
C、strcpy(str3,"HELLO3");
D、strcpy(str4,"HELLO4");
(  B  )
29、以下叙述中错误的是______。
A、用户定义的函数中可以没有return语句
B、用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值
C、用户定义的函数中若没有return语句,则应当定义函数为void类型
D、函数的return语句中可以没有表达式
(  D  )
30、有以下程序______。
#include <stdio.h>
main()
{
file *fp;
int k,n,a[6]={1,2,3,4,5,6};
fp=fopen("d2.dat","w");
fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);
fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]);
fclose(fp);
fp=fopen("d2.dat","r");
fscanf(fp,"%d%d",&k,&n);
printf("%d%d\n",k,n);
close(fp);
}
程序运行后的输出结果是______。
A、1 2
B、1 4
C、123 4
D、123 456
(  C  )
31、已知int x=10,y=20,z=30; 以下语句:if(x<y) z=x; x=y; y=z; 执行后x,y,z的值是________。
A、x=10, y=20, z=30
B、x=20, y=30, z=30
C、x=20, y=10, z=10
D、x=20, y=30, z=10
(  D  )
32、c语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是________。
A、地址传递
B、由用户指定传递方式
C、双向值传递
D、单向值传递:实参的值传给形参
(  B  )
33、int a=10; 下列哪个选项的值不是20?
A、a<<1
B、a>>1
C、a*2
D、a+10
(  B  )
34、c语言中,关系表达式和逻辑表达式的值是________。
A、0
B、0或1
C、1
D、'T'或'F'
(  D  )
35、以下对一维数组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};
(  C  )
36、c 语言中的标识符第一个字符。
A、必须为字母
B、必须为下划线
C、必须为字母或下划线
D、可以是字母, 数字和下划线中任一种字符
(  B  )
37、有以下程序
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
(  A  )
38、下列对字符串的定义中,错误的是________。
A、char str[7] = "FORTRAN";
B、char str[] = "FORTRAN";
C、char *str = "FORTRAN";
D、char str[] = {'F','O','R','T','R','A','N',0};
(  D  )
39、以下合法的常量是________。
A、-80.0e
B、-080
C、-8e1.0
D、-80.
(  D  )
40、非法的字符常量是________。
A、' \101 '
B、' \65 '
C、' \xff '
D、' \019 '
(  A  )
41、以下关于 c 语言数据类型使用的叙述中错误的是________。
A、若只处理“真”和“假”两种逻辑值,应使用逻辑类型
B、若要保存带有多位小数的数据,可使用双精度类型
C、整数类型表示的自然数是准确无误差的
D、若要处理“人员信息”等含有不同类型的相关数据,应自定义结构体类型
(  A  )
42、指针变量p进行自加运算(即 执行p++;)后,地址偏移值为4,则其 数据类型为________。
A、int
B、float
C、double
D、char
(  C  )
43、以下运算符中优先级最低的是________。
A、&&
B、&
C、||
D、|
(  D  )
44、以下叙述正确的是________。
A、在C程序中,每行中只能写一条语句
B、若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C、C程序中,无论是整数还是实数,都能被准确无误地表示
D、在C程序中,%是只能用于整数运算的运算符
(  B  )
45、有语句char str1[10],str2[10]={"china"};
则能将字符串china赋给数组str1的正确语句是________。
A、str1={"china"};
B、strcpy(str1,str2);
C、str1=str2;
D、strcpy(str2,str1);
(  C  )
46、以下程序的运行结果是________。
main()
{
int m=5;
if(m++>5) printf("%d",--m);
else printf("%d",m++);
}
A、4
B、5
C、6
D、7
(  C  )
47、以下描述正确的是________。
A、goto 语句只能用于退出多层循环。
B、switch 语句中不能出现continue 语句。
C、只能用continue 语句来中止本次循环。
D、在循环中break 语句不能独立出现。
(  C  )
48、与下面程序段等价的是________。
for(n=100;n<=200;n++)
{
if(n%3==0) continue;
printf("%4d",n);
}
A、for(n=100;(n%3)&&n<=200;n++) printf("%4d",n);
B、for(n=100;(n%3)||n<=200;n++) printf("%4d",n);
C、for(n=100;n<=200;n++) if(n%3!=0) printf("%4d",n);
D、for(n=100;n<=200;n++){
if(n%3) printf("%4d",n);Else continue;Break;}
(  D  )
49、判断字符串a 和b 是否相等,应当使用。
A、if(a==b)
B、if(a=b)
C、if(strcmp(a,b))
D、if(strcmp(a,b)==0)
(  B  )
50、以下程序的输出结果是()。
main()
{ char s[]="123",*p;
p=s;
printf("%c%c%c\n",*p++,*p++,*p++);
}
A、123
B、321
C、213
D、312