北京石油化工学院C语言程序设计专升本

本试卷为北京石油化工学院C语言程序设计专升本,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言程序设计专升本

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

(  C  )
1、以下叙述错误的是________。
A、一个C程序可以包含多个不同名的函数
B、一个C程序只能有一个主函数
C、C程序在书写时,有严格的缩进要求,否则不能编译通过
D、C程序的主函数必须用main作为函数名
(  D  )
2、以下选项中能表示合法常量的是________。
A、整数:1,200
B、实数:1.5E2.0
C、字符斜杠:"\"
D、字符串:"\007"
(  C  )
3、有以下程序:
main()
{
int s=0.n;
for(n=0;n <3;n++)
{
switch(s)
{
case 0;
case1:s+=1;
case 2:s+=2;
break;
case 3:s+=3;
default:s+=4;
}
printf("%d,"s);
}
}
程序运行后的输出结果是________。
A、1,2,4,
B、1,3,6,
C、3,10,14,
D、3,6,10,
(  C  )
4、以下正确的函数定义形式是________.
A、double fun(int x,int y)
B、double fun(int x; int y)
C、double fun(int x, int y);
D、double fun(int x,y);
(  B  )
5、下面实现换行功能的格式符为________。
A、\t
B、\n
C、\a
D、\k
(  D  )
6、若有定义:int a[10],则对数组a元素的正确引用是________。
A、a[10]
B、a[3.5]
C、a(5)
D、a[0]
(  C  )
7、若以下选项中的变量已正确定义,则正确的赋值语句是________。
A、x1=26.8%3;
B、1+2=x2;
C、x3=0x12;
D、x4=1+2=3;
(  C  )
8、有以下程序
main()
{
int a=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a<b);
//短路问题 printf("%d,%d\n",k,m);
}
程序运行后的输出结果是________。
A、0,0
B、0,1
C、1,0
D、1,1
(  B  )
9、一个 c 语言程序总是从 开始执行。
A、主过程
B、主函数
C、子程序
D、主程序
(  D  )
10、运行下面程序后 , 输出是 ________.
#include <stdio.h>
void main( )
{
int k=-3;
if (k<=0) printf("****\n");
else printf("####\n")
}
A、####
B、****
C、####****
D、有语法错误不能通过编译
(  C  )
11、在定义 int a[5][4]; 之后 , 对 a 的引用正确的是__________。
A、a[2][4]
B、a[1,3]
C、a[4][3]
D、a[5][0]
(  B  )
12、下面程序段的功能是________。
…… int a[]= {4,0,2,3,1},i,j,t;
for(i=0;<5;i++)
{
t=a[i];
j=i;
j--;
}
while(j>=0&&t>a[j])
{
a[j+1]=a[j];
j--;
a[j+1] =t;
}
……
A、对数组a进行插入排序(升序)
B、对数组a进行插入排序(降序)
C、对数组a进行选择排序(升序)
D、对数组a进行选择排序(降序)
(  D  )
13、设有语句:"int a=1,b=2,*p1=&a,*p2=&b; ",则使指针p1指向变量b的赋值语句是______。
A、p1=*p2
B、*p1=p2
C、p1=p2
D、*p1=*p2
(  A  )
14、若定义static int a[2][2]={1,2,3,4 },则a数组的各数组元素分别为______。
A、a[0][0]=1、a[0][1]=2、at[1][0]=3、a[1][1]=4
B、a[0][0]=1、a[0][1]=3、a[1][0]=2、a[1][1]=4
C、a[0][0]=4、a[0][1]=3、a[1][0]=2、s[1][1]=1
D、a[0][0]=4、a[0][1]=2、a[1][0]=3、a[1][1]=1
(  C  )
15、设
struct data
{
int a;
float b;
} c,*p=&c;
,引用正确的是________。
A、*p.a
B、p.b
C、p->a
D、*p->b
(  A  )
16、与十进制数96等值的二进制是________。
A、01100000
B、10010110
C、01100001
D、01100011
(  D  )
17、下列说法正确的是________。
A、main函数必须放在C程序的最后面
B、main函数必须放在C程序的最前面
C、main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执行的
D、main函数可以放在C程序的中间部分,但在执行C程序时是从main函数开始的
(  A  )
18、以下函数不能用于向文件写入数据的是________。
A、ftell
B、fwrite
C、fputc
D、fprintf
(  D  )
19、下面赋值语句中正确的是________。
A、a=7+b+c=a+7;
B、a=7+b++=a+7;
C、a=7+b,b++,a+7;
D、a=7+b,C=a+7;
(  C  )
20、若所用变量都已正确定义,则在以下选项中,非法的表达式是________。
A、a!=4||b==1
B、'a'%3
C、'a'=1/2
D、'a'+32
(  A  )
21、按照数的进位制概念,下列各个数中正确的八进制数是______。
A、1101
B、7081
C、1109
D、B03A
(  D  )
22、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是________。
A、函数调用可以作为独立的语句存在
B、函数调用可以无返回值
C、函数调用可以出现在表达式中
D、函数调用可以作为一个函数的形参
(  D  )
23、已知大写字母a的ascii码是65,小写字母a的ascii码是97,以下不能将变量c中的大写字母转换为对应小写字母的语句是______。
A、c=(c-'A')%26+'a'
B、c=c+32
C、c=c-'A'+'a'
D、c=('A'+c)%26-'a'
(  B  )
24、有一个数值152,它与十六进制数6a相等,那么该数值是________。
A、二进制数
B、八进制
C、十进制数
D、四进制数
(  B  )
25、以下选项中与if(a==1)a++; else a=b; 语句功能不同的语句是________。
A、switch(a)
ease 0:a=b;break;
default:a++;
B、switch(a==1)
case 0:a++:
default:a=b;
C、switch(a)
default:a=b;break;
case 1:a++;
D、a=(a==1)(a++):b
(  B  )
26、有以下程序:
main()
{
int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},ij;
for(i=0;i<4;i++)
{
for(j=0;j<=i;j++) printf("%4c",’);
for(j=______;j<4;j++) printf("%4d",num[i][j]);
printf("\n");
}
}
若要按以下形式输出数组右上半三角 1 2 3 4 6 7 8 11 12 16 则在程序下划线处应填入的是 ______ 。
A、i-1
B、i
C、i+1
D、4-i
(  B  )
27、有以下程序: fun(int x,int y)
{
static int m=0, i=2;
i+=m+1;
m=i+x+y;
return m;
}
main()
{
int j=1,m=1,k;
k=fun(j,m);
printf("%d,"k);
k=fun(j,m);
printf("%d\n",k);
}
执行后的输出结果是________。
A、5,5
B、5,11
C、11,11
D、11,5
(  C  )
28、下面程序的输出结果是______。
main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int(*p)[4]=a,i,j,k=0;
for(i=0;i<3;i++) for(j=0;j<2;j++) k=p[i][j];
printf("%d\n",k);
}
A、17
B、18
C、19
D、23
(  C  )
29、运行下面程序时,从键盘输入字母h,则输出结果是
#include<stdio.h>
main()
{
char ch;
ch=getchar();
switch(ch) {
case ’h’: printf("hello!\n");
case ’g’: printf("good morning!\n");
default : printf("bye_bye!\n");
}
}
A、Hello!
B、Hello!
GoodMoring!
C、Hello!
Goodmorning!
Bye_Bye!
D、Hello!
Bye_Bye!
(  C  )
30、以下程序段的输出结果是________。 int a=1234; float b=123.456; double c=12345.54321; printf("%2d,%2.1f,%2.1f",a,b,c);
A、无输出
B、12,123.5,12345.5
C、1234,123.5,12345.5
D、1234,123.4,1234.5
(  A  )
31、以下选项中,合法的数值型常量是________。
A、3.2
B、'X'
C、099
D、0xEH
(  A  )
32、以下选项中,合法的实数是________。
A、1.5E2
B、E1.1
C、2.10E
D、1.9E1.4
(  D  )
33、下面程序的输出结果是_______。
m1(int x)
{
int y;
y=x+x;
return(y);
}
m2(int a ,int b)
{
int z;
z=m1(a*b);
return(z);
}
main( )
{
int a=3,b=6,c;
c=m2(a ,b);
printf("%d",c);
}
A、26
B、18
C、9
D、36
(  A  )
34、以下程序的输出结果是 _______ 。
main()
{
int x=1,y=0,a=0,b=0;
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、2,2
C、1,1
D、2 1
(  D  )
35、可以作为自定义标识符的是________。
A、2x
B、while
C、s&1
D、_2x
(  C  )
36、定义float a=8.735,那么printf("%7.2f",a); 的输出结果为
A、7.2
B、8.73
C、【空格】【空格】【空格】8.73
D、【空格】【空格】8.73
(  C  )
37、printf 函数中用到格式符%5s ,其中数字5 表示输出的字符串占用5 列。如果字符串长度小于5,则输出按方式。
A、从左起输出该字串,右补空格
B、按原字符长从左向右全部输出
C、右对齐输出该字串, 左补空格
D、输出错误信息
(  D  )
38、下列while 循环,将执行
int i=4;
while(--i) printf("%d",i);
A、3 次
B、4 次
C、0 次
D、无限次
(  B  )
39、下面赋值表达式不正确的是__________________.
struct student
{
long num;
char name[20];
} st1, st2={101, "tom"}, *p=&st1;
A、st1 = st2
B、p->name = st2.name
C、p->num = st2.num
D、*p=st2
(  A  )
40、以下叙述中错误的是________。
A、c语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
B、c程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
C、用c语言编写的程序称为源程序,它以ASCIl代码形式存放在一个文本文件中
D、c语言源程序经编译后生成后缀为.obj的目标程序
(  C  )
41、如果用数组元素作为函数调用时的实参,则该实参向函数的形参传送的是________。
A、数组元素的地址
B、数组的首地址
C、数组元素的值
D、数组名
(  D  )
42、宏定义是最常用的预处理功能之一,它用于将一个标识符定义为一个______
A、单精度数
B、双精度数
C、常量
D、字符串
(  A  )
43、以下关于 c 语言数据类型使用的叙述中错误的是________。
A、若只处理“真”和“假”两种逻辑值,应使用逻辑类型
B、若要保存带有多位小数的数据,可使用双精度类型
C、整数类型表示的自然数是准确无误差的
D、若要处理“人员信息”等含有不同类型的相关数据,应自定义结构体类型
(  D  )
44、以下程序段中,变量 c 的二进制值是________ char a=2,b=4,c;
c=a+b<<2;
A、00000011
B、00010100
C、00011100
D、00011000
(  A  )
45、c语言的if语句嵌套时,if与else的配对关系是________。
A、每个else总是与它上面的最近的并且尚未与其他else匹配的if配对
B、每个else总是与最外层的if配对
C、每个else与if的配对是任意的
D、每个else总是与它上面的if配对
(  B  )
46、下面程序的功能是将从键盘输入的一对数,由小到大排序输出。当输入一对相等数时结束循环,请选择填空。
#include <stdio.h>
main()
{
int a, b, t;
scanf("%d%d", &a, &b);
while (_________)
{
if (a > b)
{
t = a;
a = b;
b = t;
}
printf("%d,%d\n", a, b);
scanf("%d%d", &a, &b);
}
}
A、!a=b
B、a!=b
C、a==b
D、a=b
(  D  )
47、判断字符串a 和b 是否相等,应当使用。
A、if(a==b)
B、if(a=b)
C、if(strcmp(a,b))
D、if(strcmp(a,b)==0)
(  C  )
48、若有定义: int (*p)[4];
则标识符p 。
A、是一个指向整型变量的指针
B、是一个指针数组名
C、是一个指针,它指向一个含有四个整型元素的一维数组
D、定义不合法
(  C  )
49、下列说法正确的是________ 。
A、在执行C 程序时不是从main 函数开始的
B、C 程序书写格式严格限制,一行内必须写一个语句
C、C 程序书写格式自由,一个语句可以分写在多行上
D、C 程序书写格式严格限制,一行内必须写一个语句,并要有行号
(  C  )
50、以下叙述中正确的是()。
A、在程序的一行上可以出现多个有效的预处理命令行
B、使用带参的宏时,参数的类型应与宏定义时的一致
C、宏替换不占用运行时间,只占编译时间
D、在以下定义中 C R 是称为"宏名"的标识符 #define C R 045