河南中医药大学C语言专升本

本试卷为河南中医药大学C语言专升本,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言专升本

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

(  A  )
1、设有以下定义和语句: char str[20]一"program",*p; p=str: 则以下叙述中正确的是________。
A、*P与str[0]的值相等
B、str与P的类型完全相同
C、str数组长度和P所指向的字符串长度相等
D、数组str中存放的内容和指针变量P中存放的内容相同
(  A  )
2、有以下程序:
main()
{
int c=0,k;
for(k=1;k<3;k++)
switch(k)
{
default:c+=k;
case2:c++;
break;
case4:c+=2;
break;
}
printf("%d\n",c);
}
程序运行后的输出结果是________。
A、3
B、5
C、7
D、9
(  B  )
3、c语言允许函数值类型缺省定义,此时该函数值隐含的类型是________.
A、float
B、int
C、long
D、double
(  D  )
4、阅读下面的程序
main()
{
int i,j;
scanf("%3d%2d",&i,&j);
printf("i=%d,j=%d\n",i,j);
}
如果从键盘上输入1234567<回车>,则程序的运行结果是________。
A、i=123,j=4567
B、i=1234,j=567
C、i=1,j=2
D、i=123,j=45
(  D  )
5、有以下程序
main()
{
int x=3, y=2, z=1;
printf("%d\n",x/y&~z);
}
程序运行后的输出结果是________。
A、3
B、2
C、1
D、0
(  D  )
6、有以下程序
#include <stdio.h>
void fun(int *a, int n)/*fun函数的功能是将a所指数组元数从大到小排序*/
{
int t,i,j;
for(i=o;i<n-1;j++) for(j=j+1;j<n;j++) if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
main()
{
int c[10]={1,2,3,4,5,6,7,8,9,0} ,i;
fun(c+4,6);
for(i=0;i<10,i++) printf("%d,",c[i]);
}
程序的运行结果是________。
A、1,2,3,4,5,6,7,8,9,0,
B、0,9,8,7,6,5,1,2,3,4,
C、0,9,8,7,6,5,4,3,2,1,
D、1,2,3,4,9,8,7,6,5,0,
(  C  )
7、设有定义:char s[81]; int i=0; 以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是________。
A、gets(s);
B、while((s[i++]=getchar())!=‘\n’);s[i]=‘\0’;
C、scanf(“%s”,s);
D、do{ scanf(“%c”,&s[i]); } while(s[i++]!=‘\n’); s[i]=‘\0;
(  A  )
8、下列数据中属于"字符串常量"的是________。
A、“a”
B、{
ABC}
C、‘abc\0’
D、‘a’
(  B  )
9、下列引用的定义中,( )是错误的。
A、int i;
int &j=i;
B、int i;
int &j;
j=i;
C、float i;
float &j=i;
D、char d;
char &k=d;
(  D  )
10、下列四个叙述中,正确的是______。
A、C程序中的所有字母必须小写
B、C程序中的关键字必须小写,其他标识符不区分大小写
C、C程序中的所有字母都不区分大小写
D、C程序中的所有关键字必须小写
(  B  )
11、下列四个叙述中,错误的是_______。
A、C语言中的关键字必须小写
B、C语言中的标识符必须全部由字母组成
C、C语言不提供输入输出语句
D、C语言中的注释行可以出现在程序的任何位置
(  A  )
12、若有定义语句:int a=3,b=2,c=1; 以下选项中错误的赋值表达式是______。
A、a=(b=4)=3;
B、a=b=c+1;
C、a=(b=4)+c;
D、a=1+(b=c=4);
(  B  )
13、c语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是________。
A、void
B、int
C、float
D、double
(  C  )
14、下列关于变量作用域的描述中,不正确的是________。
A、变量属性是用来描述变量作用域的
B、局部变量作用域只能是它所在方法的代码段
C、类变量能在类的方法中声明
D、类变量的作用域是整个类
(  A  )
15、以下程序段中与语句k=a>b ? (b>c ? 1:0):0; 功能等价的是________。
A、if((a>b)&&(b>c))
k=1;
B、if((a>b)||(b>c)) k=1;
else k=0;
else k=0;
C、if(a<=b) k=0;
D、if(a>b) k=1;
else if(b<=c) k=1;
else if(b>c) k=1;
else k=0;
(  B  )
16、以下函数调用语句中含有_______个实参。 func((exp1,exp2),(exp3,exp4,exp5));
A、1
B、2
C、4
D、5
(  D  )
17、已有定义:int i,a[10],*p; 则合法的赋值语句是________。
A、p=100;
B、p=a[5]
C、p=a[2]+2
D、p=a+2;
(  D  )
18、能正确表示逻辑关系"a>=10或a<=0"的c语言表达式是________。
A、a>=10ora=10
B、a>=0|a<=10
C、a>=10&&a<=0
D、a>=10||a<=0
(  A  )
19、下列叙述中正确的是________。
A、程序执行的效率与数据的存储结构密切相关
B、程序执行的效率只取决于程序的控制结构
C、程序执行的效率只取决于所处理的数据量
D、以上三种说法都不对
(  A  )
20、根据数制的基本概念,下列各进制的整数中,值最大的一个是______。
A、十六进制数10
B、十进制数10
C、八进制数10
D、二进制数10
(  C  )
21、下列哪个语句是声明一个含有10个string对象的数组 ( )
A、char str[];
B、char str[][];
C、String str[]=new String[10];
D、String str[10];
(  B  )
22、下列赋值语句错误的是________。
A、A
B、i==0;
C、i=i+1:
D、i+=1:
(  A  )
23、下列不属于c语言关键字的选项是________。
A、printf
B、sizeof
C、extern
D、long
(  B  )
24、有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是________。
struct node
{
char data;
struct node *next;
}
a,b,*p=&a,*q=&b;
A、3 4 7 5
B、3 5 7 4
C、1 2 3 4
D、1 2 3 5
(  B  )
25、下列选项中c语言中不合法的字符串常量的是________。
A、"\121"
B、'y'
C、"\n\n"
D、"ABCD\x6d\
(  A  )
26、下列程序的输出结果是________。
#include <stdio.h>
int f(int a,int b);
main()
{
int i=2,p,j,k;
j=i;
k=++i;
p=f(j,k);
printf("%d",p);
}
int f(int a,int b)
{
int c;
if(a>b)c=1;
else if(a==b) c=0;
else c=-1;
return(c);
}
A、-1
B、1
C、2
D、编译出错,无法运行
(  C  )
27、有以下程序:
main()
{
char str[]="xyz", *ps=str;
while(*ps) ps++;
for(ps--;ps-str>=o;ps--) puts(ps);
}
执行后的输出结果是________。
A、yz
xyz
B、z
yz
C、z
yz
xyz
D、x
xy
xyz
(  D  )
28、若有说明语句 char a[ ]="it is mine";
char *p="it is mine";
则以下不正确的叙述是________。
A、a+1表示的是字符t的地址
B、p指向另外的字符串时,字符串的长度不受限制
C、p变量中存放的地址值可以改变
D、a中只能存放10个字符
(  D  )
29、程序设计语言中________。
A、while 循环语句的执行效率比do-while 循环语句的执行效率高
B、while 循环语句的循环体执行次数比循环条件的判断次数多1,而do-while 语句的循环体执行次数比循环条件的判断次数少1
C、while 语句的循环体执行次数比循环条件的判断次数少1,而do-while 语句的循环体执行次数比循环条件的判断次数多1
D、while 语句的循环体执行次数比循环条件的判断次数少1,而do-while 语句的循环体执行次数等于循环条件的判断次数
(  C  )
30、已有文本文件t.txt,其中的内容为:student!。以下程序中,文件t.txt已正确为"读"而打开,由文件指针fr指向该文件,则程序的输出结果是___________。
#include <stdio.h>
main()
{
file *fr;
char s[80];
……fgets(s,5,fr);
printf("%s\n",s);
fclose(fr);
}
A、student
B、stude
C、stud
D、student!
(  B  )
31、若有说明:inta,b=2,*p=&a; 则能完成a=b赋值功能的语句是______。
A、a=*p;
B、*p=*&b;
C、a=&b;
D、a=**p;
(  D  )
32、若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是______。
A、int *i=NULL;scanf("%d",i);
B、float *f=NULL;*f=10.5;
C、char t='m',*c=&t;*c=&t;
D、long *L;L='\0';
(  D  )
33、有以下程序
#include <stdio.h>
main()
{
struct stu
{
char name[9];
char sex;
double score[2];
}
;
struct stu a={"zhao",'m',85.0,90.0},b={"qian",'f',95.0,92.0};
b=a;
printf("%s,%c,%2.0f,%2.0f\n",b.name,b.sex,b.score[0],b.score[1]);
}
程序的运行结果是______。
A、Qian,f,95,92
B、Qian,m,85,90
C、Zhao,f,95,92
D、Zhao,m,85,90
(  D  )
34、设int x=10, a=0, b=25; 条件表达式x<1?a+10︰b的值是________。
A、0
B、1
C、10
D、25
(  D  )
35、对于64位系统,int类型能够表示的数的范围为
A、0~2的32次方
B、0~2的32次方-1
C、-2的31次方~2的31次方
D、-2的31次方~2的31次方-1
(  B  )
36、若变量已正确定义:for(x=0,y=0;(y!=99&&x<4);x++) 则以上 for 循环()
A、执行 3 次
B、执行 4 次
C、执行无限次
D、执行次数不定
(  A  )
37、以下叙述中正确的是________。
A、字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组
B、char ca[3][4]={"A","BB","CCC"};是不合语法的
C、char ca[][5]={"A","BB","CCC"};是不合语法的
D、char *ca[3]= {"A","BB","CCC"};是不合语法的
(  B  )
38、设有如下函数定义:若执行调用语句:n=fun(3); 则函数 fun 总被调用次数为________。
A、2
B、3
C、4
D、5
(  B  )
39、以下说法正确的是________。
A、C 语言只接受十进制的数
B、C 语言只接受八进制、十进制、十六进制的数
C、C 语言接受除二进制之外任何进制的数
D、C 语言接受任何进制的数
(  C  )
40、以下叙述中正确的是________。
A、转义字符要用双引号括起来,以便与普通的字符常量区分开
B、字符常量在内存中占 2 个字节
C、字符常量需要用单引号括起来
D、字符常量是不能进行关系运算的
(  D  )
41、有以下程序
main()
{
int k=5,n=0;
while(k>0)
{
switch(k)
{
default : break;
case 1 : n+=k;
case 2 :
case 3 : n+=k;
}
k--;
}
printf("%d\n",n);
}
程序运行后的输出结果是________。
A、4
B、5
C、6
D、7
(  C  )
42、以下程序段的执行结果是________。 double x; x=218.82631; printf("%-6.2e\n",x);
A、输出格式描述符的域宽不够,不能输出
B、输出为21.38e+01
C、输出为2.2e+02
D、输出为-2.14e2
(  A  )
43、若有int *p=(int *)malloc(sizeof(int)); 则向内存申请到内存 空间存入整数123的语句为________。
A、scanf("%d",p);
B、scanf("%d",&p);
C、scanf("%d",*p);
D、scanf("%d",**p);
(  C  )
44、以下程序的执行结果是_______.
main()
{
int num = 0;
while( num <= 2 )
{
num++;
printf( "%d,",num );
}
}
A、0,1,2
B、1,2,
C、1,2,3,
D、1,2,3,4,
(  B  )
45、有以下程序
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;
for(i=0;i<3;i++)sum=sum+p->score[i];
printf("%.2f\n",sum);
}
程序运行后的输出结果是________。
A、270
B、270.00
C、285.00
D、285
(  B  )
46、以下程序的输出结果是________。 。
main()
{
int x=1,y=0,a=1,b=1;
switch(x)
{
case 1:switch(y)
{
case 0:a++;
break;
case 1:b++;
break;
}
case 2:a++;
b++;
break;
}
printf("%d,%d\n",a,b);
}
A、2,1
B、3,2
C、2,3
D、3 2
(  B  )
47、执行下面的程序段int x=5;
char z='a';
int b;
b=((x&15)&&(z<'a') );
后,b的值为________。
A、0
B、1
C、2
D、3
(  A  )
48、main()
{int x=1,a=0,b=0;
switch (x)
{ case 0: b++;
case 1: a++;
case 2: a++;b++;}
printf("a=%d,b=%d",a,b);}
该程序的输出结果是( )
A、2,1
B、1,1
C、1,0
D、2,2
(  D  )
49、若调用 fputc 函数输出字符成功,则其返回值是()。
A、EOF
B、1
C、0
D、输出的字符
(  A  )
50、以下叙述中错误的是
A、用户所定义的标识符允许使用关键字
B、用户所定义的标识符应尽量做到"见名知意"
C、用户所定义的标识符必须以字母或下划线开头
D、用户定义的标识符中,大、小写字母代表不同标识