中国青年政治学院历年C语言程序设计期末相关题目

本试卷为中国青年政治学院历年C语言程序设计期末相关题目,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言程序设计期末相关题目

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

(  B  )
1、c语言源程序名的后缀是________。
A、.exe
B、.C
C、.obj
D、.cp
(  D  )
2、下列叙述中正确的是________。
A、每个C程序文件中都必须有一个main()函数
B、在C程序中main()函数的位置是固定的
C、C程序可以由一个或多个函数组成
D、在C程序的函数中不能定义另一个函数
(  C  )
3、以下叙述中错误的是________。
A、对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B、数组名代表的是数组所占存储区的首地址,其值不可改变
C、当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D、可以通过赋初值的方式确定数组元素的个数
(  A  )
4、设x=011050,则x=x801252的值是________。
A、0000001000101000
B、11111101000l1001
C、0000001011100010
D、1100000000101000
(  D  )
5、若有定义和语句: int **pp,*p, a=20, b=10;
pp=8p;
p=&a;
p=&b;
printf("%d,%d\n",*p,**pp);
则输出结果是________。
A、20,10
B、20,20
C、10,20
D、10,10
(  D  )
6、若有说明"char s1[30]="abc",s2[]="defghi", 则在使用函数strcat(s1,s2)后,结果是________。
A、sl的内容更新为abcdefghi
B、sl的内容更新为defghi\O
C、sl的内容更新为defghiabc\O
D、sl的内容更新为abcdefghi\O
(  B  )
7、以下正确的描述是________.
A、continue语句的作用是结束整个循环的执行
B、只能在循环体内和switch语句体内使用break语句
C、在循环体内使用break语句或continue语句的作用相同
D、从多层循环嵌套中退出时,只能使用goto语句
(  A  )
8、下面程序段执行结果是________。 int i=5; printf("%d,%d,%d", i,(++i)+(++i)+(i++),i);
A、8,20,5
B、8,21,5
C、5,20,8
D、5,21,8
(  B  )
9、已知char x[]="hello", y[]={ 'h','e','a','b','e' }; 则关于两个数组长度的正确描述是________。
A、相同
B、x大于y
C、x小于y
D、以上答案都不对
(  D  )
10、程序段如下:则以下说法中不正确的是: 。
#include <stdio.h>
main()
{
int k=2,;
while(k<7)
{
if(k%2)
{
k=k+3;
printf( " k=%d\n " ,k);
continue;
}
k=k+1;
printf( " k=%d\n " ,k);
}
}
A、k=k+3; 执行一次
B、k=k+1; 执行 2 次
C、执行后 k 值为 7
D、循环体只执行一次
(  A  )
11、在执行 int a[][3]={ 1,2,3,4,5,6};语句后, a[1][0] 的值是______。
A、4
B、1
C、2
D、5
(  B  )
12、设 p1 和 p2 是指向同一个 int 型一维数组的指针变量, k 为 int 型变量,则不能正 确执行的语句是______。
A、k=*P1+*P2;
B、p2=k;
C、P1=P2;
D、k=*P1 * ( *P2 ) ;
(  C  )
13、下面各语句行中,能正确进行字符串赋值操作的语句是______。
A、char ST[5]={"ABCDE"} ;
B、char S[5]={'A' , 'B' , 'C' , 'D' , 'E'} ;
C、char *S ; S="ABCDE" ;
D、char *S ; scanf ( "%S" , S );
(  D  )
14、下面程序的输出是______。
main ()
{
struct cmplx
{
int x ;
int y ;
}
cnum[2]={1 , 3 , 2 , 7};
printf ( "%d\n" , cnum[0].y/cnum[0].x*cnum[1].x );
}
A、0
B、1
C、3
D、6
(  A  )
15、若 x 和 y 都是 int 型变量 ,x=100,y=200, 且有下面的程序片段 : printf("%d",(x,y)); 上面程序片段的输出结果是 _________.
A、200
B、100
C、100 200
D、输出格式符不够 , 输出不确定的值
(  A  )
16、若运行下面程序时 , 给变量 a 输入 15, 则输出结果是 ________.
#include <stdio.h>
void main( )
{
int a,b;
scanf("%d",&a);
b=a>15?a+10:a-10;
printf("%d\n",b) ;
}
A、5
B、25
C、15
D、10
(  D  )
17、下面程序段的运行结果是 __________.
int x=0,y=0;
while (x<15)
y++,x+=++y;
printf("%d,%d",y,x);
A、20,7
B、6, 12
C、20,8
D、8,20
(  D  )
18、以下函数 func() 的功能是:使具有 n 个元素的一维数组 b 的每个元素的值都增加 2 ,划线处应填入 _____.
func(int b[ ],int n)
{
int ;
for(i=0;i<n;i++) __________;
}
A、b[i++]
B、b[i]++
C、b[i+=2]
D、b[i]+=2
(  C  )
19、在c语言中,以下一组运算符中,优先级最高的运算符是______。
A、<=
B、=
C、%
D、&&
(  C  )
20、若变量c为char类型,则能正确判断出c为大写字母的表达式是________。
A、(c>= ’A’)||(c
B、’A’
C、(c>= ’A’)&&(c
D、(’A’=c)
(  B  )
21、二维数组m[i,j]的元素是4个字符(每个字符占一个存储单元)组成的串,行下标i范围从0到4,列下标,i的范围从0到5。m按行存储时元素m[3,5]的起始地址与m按列存储时元素( )的起始地址相同。
A、M[2,4)
B、M[3,4)
C、M[3,5]
D、M[4,4)
(  A  )
22、c程序的执行是从( )开始执行的
A、main函数
B、程序的第一行
C、<iostream.h>
D、<stdio.h>
(  C  )
23、变量a所占的内存字节数是______。
union u{
char st[4];
int i;
long l;
};
struct A {
int c;
union u;
} a;
A、4
B、5
C、6
D、8
(  B  )
24、以下合法的赋值语句是______。
A、X=Y=100
B、D-;
C、X+Y;
D、C=int(A+B)
(  C  )
25、设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是________。
A、if(x++);
B、if(x>y&&y!=0);
C、if(x>0)x- else y++;
D、if(y<0){;} else x++;
(  B  )
26、下列形式的常数中,不符合c语言语法规范的是______。
A、.45
B、±123
C、25.6e-2
D、4e3
(  B  )
27、请读程序段:char str[]="abcd",*p=str; printf("%d\n",*(p+4));
程序段的输出结果是 ______。
A、68
B、0
C、字符D的地址
D、不确定的值
(  B  )
28、以下程序的功能是计算s=1+12+123+1234+12345。
#include <stdio.h>
main()
{
int t=0,s=0,i;
for(i=1;i<=5;i++) {
t=i+_____;
s=s+t;
}
printf("s=%d\n",s);
}
则______部分是________。
A、t
B、t*10
C、t*100
D、t+10
(  C  )
29、有以下程序
main()
{
char s[]="\n123\\";
printf("%d,%d\n",strlen(s),sizeof(s));
}
执行后输出结果是________。
A、赋初值的字符串有错
B、6,7
C、5,6
D、6,6
(  D  )
30、若已定义:int a[9],*p=a; 并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是________。
A、p+1
B、a+1
C、&a[1]
D、*p[1]
(  A  )
31、以下叙述正确的是________。
A、C 程序总是以 main()作为程序执行的起始行
B、main()函数若不带参数,其后面的一对圆括号可省略
C、函数体内的定义语句和可执行语句允许任意交替出现
D、C 语言中的语句之间必须用分号作为分隔符
(  B  )
32、关于fgets()函数,下列描述中正确的是________。
A、从文件fp中读取长度为n的字符串存入str指向的内存
B、从文件fp中读取长度不超过n-1的字符串存入str指向的内存
C、从文件fp中读取n个字符存入str指向的内存
D、从str读取至多n个字符到文件fp中
(  B  )
33、设a=5、b=6、c=10、d=8、m=2、n=5,执行(m=a>b)&&(n=c>d)后n的值为______。
A、1
B、5
C、3
D、4
(  A  )
34、对于以下递归函数f,调用f(4),其返回值为()
int f(int n)
{
if (n) return f(n - 1) + n;
else return n;
}
A、10
B、4
C、0
D、以上均不是________。
(  C  )
35、以下scanf函数调用语句中不正确的是__。
struct pupil
{
char name[20];
int age;
int sex;
}
pup[5], *p=pup;
A、scanf("%s", pup[0].name);
B、scanf("%d", &pup[0].age);
C、scanf("%d", p->age);
D、scanf("%d", &(p->sex));
(  D  )
36、循环语句"for(i=1;i<0;i++) i++; "的循环次数是________。
A、无限循环
B、2次
C、1次
D、0 次
(  B  )
37、二维数组a有m行n列,则在a[i][j]之前的元素个数为________。
A、j*n+i
B、i*n+j
C、i*n+j-1
D、i*n+j+1
(  C  )
38、下列不正确的转义字符是________。
A、\\'
B、\"
C、074'
D、\0'
(  B  )
39、以下叙述中错误的是________。
A、main()是 C 语言主函数的起始
B、main()作为主函数必须位于源程序的起始位置行
C、main()是 C 程序执行的起始行
D、main 是不可替代的主函数名
(  C  )
40、调试程序是指对程序进行
A、编辑
B、编译
C、查错和排错
D、连接
(  B  )
41、c 语言 double 中类型数据占字节数为________。
A、4
B、8
C、12
D、16
(  A  )
42、以下叙述中正确的是________。
A、int*p1;int**p2;int*p3 都是合法的定义指针变量的语句
B、指针变量只能通过求地址运算符(&)来获得地址值
C、语句 p=NULL;与 p=\0;是等价的语句
D、语句 p=NULL;执行后,指针 p 指向地址为 0 的存储单元
(  B  )
43、有以下程序段若要给 c1、c2、c3 分别输入字母a,b,c,则以下对输入形式的描述正确的是________。
A、字母A,B,C 之间可以用空格分隔
B、字母A,B,C 之间不能有分隔符
C、字母A,B,C 之间可以用回车符分隔
D、字母A,B,C 之间可以用 Tab 键分隔
(  B  )
44、若有下列定义,则对a数组元素地址的正确引用是________。 int a[5],*p=a;
A、&a[5]
B、p+2
C、a++
D、&a
(  C  )
45、以下运算符中优先级最低的是________。
A、&&
B、&
C、||
D、|
(  D  )
46、在c 的if 语句中,可用作条件的表达式是________。
A、关系表达式
B、逻辑表达式
C、算术表达式
D、任意表达式
(  C  )
47、以下常量中, 能够代表逻辑" 真" 值的常量是________。
A、\0'
B、0
C、'0'
D、NULL
(  A  )
48、下面程序段输出两个字符串中对应相等的字符。请分析程序填空。
char x[]="programming";
char y[]="fortran";
int i=0;
while (x[i]!='\0'&&y[i]!='\0')
if (x[i]==y[i]) printf("%c", _____);
else i++;
A、x[i++]
B、y[++i]
C、x[i]
D、y[i]
(  B  )
49、C语言中 while 和 do—while 循环的主要区别是
A、While 的循环控制条件比 do—while 的循环控制条件严格
B、do—while 的循环体至少无条件执行一次
C、do—while 允许从外部转到循环体内
D、do—while 循环体不能是复合语句
(  A  )
50、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);