衡阳师范学院历年C语言期末

本试卷为衡阳师范学院历年C语言期末,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言期末

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

(  B  )
1、若i、j已定义成int型,则下列程序段中内循环体的总执行次数是________。
for(i=6;i>0;i--) for(j=0;j<4;j++)
{
…
}
A、20
B、24
C、25
D、30
(  C  )
2、设变量a、b、e、d和y都已正确定义并赋值。若有以下if语句: if(a<b) if(c==d) y=0; else y=1; 该语句所表示的含义是________。
A、y=0,a
B、y=0,a
y=1,a≥b y一1,a≥b且c≠d
C、y=0,a
D、y=0,a
y=1,a<B且C≠D y="1,c≠d
(  D  )
3、以下c语言用户标识符中,不合法的是________。
A、_1
B、AaBc
C、a b
D、a--b
(  A  )
4、下述程序用来输出两个字符串前7个字符中对应相等的字符及其位置号,则程序空白上应该填写的是________。
main()
{
char s1[]="chinese",s2[]="japanese";
int i;
for(i=0;s1[i]='\0'&&s2[i]!='\0';i++) if(s1[i]==s2[i]&&i<7) ________;
}
A、putchar(s2[i]);putchar(i)
B、puts(s1[i],i)
C、printf("%c%d\n",s2[i]。i)
D、printf("%C",s1[]);printf("%d\n",i)
(  D  )
5、下列选项中不是字符常量的是________。
A、'\v'
B、'\x2a'
C、'a'
D、"\0"
(  C  )
6、以下程序段的输出结果是________。 int k,n,m;
n=10;
m=1;
k=1;
while (k<=n)
{
m*=2;
k+=4;
}
printf("%d\n",m);
A、4
B、16
C、8
D、32
(  C  )
7、有以下程序
main( )
{
char k;
int i;
for(i=1;i<3;i++)
{
scanf("%c",&k);
switch(k)
{
case ‘0’: printf("another\n");
case ‘1’: printf("number\n");
}
}
}
程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是________。
A、another
number
B、another
number
another
C、another
number
number
D、number
number
(  B  )
8、以下选项中不能正确把cl定义成结构体变量的是________。
A、typedef struct
{
int red;
int green;
int blue;
} COLOR;
COLOR cl;
B、struct color cl
{
int red;
int green;
int blue;
};
C、struct color
{
int red;
int green;
int blue;
} cl;
D、struct
{
int red;
int green;
int blue;
} cl;
(  B  )
9、设有如下的程序段: char str[]="hello" ; char *ptr ; ptr=str; 执行上面的程序段后 , * ( ptr+5 )的值为 。
A、'o'
B、'\0'
C、不确定的值
D、'o' 的地址
(  B  )
10、请读程序 :
#include <stdio.h>
f(int b[ ], int n)
{
int i, r=0;
for(i=0; i<=n; i++) r=r+b[i];
return r;
}
void main()
{
int x, a[]={2,3,4,5,6,7,8,9};
x=f(a, 3);
printf("%d\n",x);
}
上面程序的输出结果是 __________.
A、20
B、14
C、9
D、5
(  D  )
11、对以下程序,正确的说法是 __________. sub (char x,char y)
{
int z;
z=x%y;
return z;
}
void main( )
{
int g=5,h=3,k;
k=sub(g,h);
printf("%d\n",k);
}
A、实参与其对应的形参类型不一致,程序不能运行
B、被调函数缺少数据类型说明,程序不能运行
C、主函数中缺少对被调函数的说明语句,程序不能运行
D、程序中没有错误,可以正常运行
(  D  )
12、以下函数 fun 形参的类型是 __________.
fun( float x)
{
float y;
y=3*x-4;
return y;
}
A、int
B、不确定
C、void
D、float
(  C  )
13、若有以下说明: int a[10]={1,2,3,4,5,6,7,8,9,10 },*p=a; 则值为6的表达式是_______。
A、*p+6
B、*(p+6)
C、*p+=5
D、p+5
(  C  )
14、下面对do-while结构的描述中,不正确的是________。
A、循环体至少执行一次
B、属于“直到型”循环
C、与while语句执行情况相同
D、先执行循环体,再计算终止条件,若结果为true,重复执行循环体,直到布尔表达式的值为false。
(  C  )
15、若有以下定义:int t[3][2]; 能正确表示t数组元素地址的表达式是______。
A、&t[3][2]
B、t[3]
C、t[1]
D、*t[2]
(  A  )
16、设int a[10],*p=a; 数组元素a[4]的正确引用是________。
A、*(p+4)
B、p+4
C、*p+4
D、a+4
(  A  )
17、以下选项中可作为c语言合法常量的是________。
A、-80
B、-080
C、-8e1.0
D、-80.0e
(  C  )
18、各种运算符间的优先顺序从高到低是________。
A、比较运算符→算术运算符→逻辑运算符
B、比较运算符→逻辑运算符→算术运算符
C、算术运算符→比较运算符→逻辑运算符
D、算术运算符→逻辑运算符→比较运算符
(  D  )
19、下列字符串中不能作为c标识符使用的是________。
A、WHILE
B、user
C、_lvar
D、9stars
(  A  )
20、下列选项中,合法的c语言关键字是________。
A、default
B、get
C、integer
D、VAR
(  B  )
21、设
void f1 (int *m,long & n);
int a; long b;
则以下调用合法的是______ 。
A、f1 (a,b);
B、f1(&a,b);
C、f1(a,&b);
D、f1(&a,&b);
(  B  )
22、下列二维数组初始化语句中,正确且与语句int a[][3]= { 1,2,3,4,5 }等价的是________。
A、int a[2][]={{1,2,3},{4,5}};
B、int a[][3]={1,2,3,4,5,0};
C、int a[][3]={{1,0},{2,0},{3,0}};
D、int a[2][]={{1,2,3},{4,5,6}};
(  B  )
23、若有函数 char*func(char *p) … return p; 则该函数的返回值是 ______。
A、无确切的值
B、形参p中存放的地址
C、一个临时存储单元的地址
D、形参p自身的地址
(  B  )
24、有以下程序:
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  )
25、有下列程序:
main()
{
int i,j;
for(i=1;i<4;i++)
{
for(j=i;j<4;j++) printf("%d*%d=%d",i,j,i*j);
printf("\n");
}
}
程序运行后的输出结果是________。
A、1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 3*1=3
B、1*1=1 1*2=2 1*3=3 2*2=4 2*3=6 3*3=9
C、1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9
D、1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9
(  C  )
26、有以下程序
main()
{
int i;
for(i=1;i<=40;i++)
{
if(i++%5==0) if(++i%8==0) pfintf("%d",i);
}
printf("\n");
}
执行后的输出结果是________。
A、5
B、24
C、32
D、40
(  D  )
27、char型常量在内存中存放的是________。
A、二进制代码值
B、十进制代码值
C、十六进制代码值
D、ASCⅡ代码值
(  C  )
28、下列错误的是________。
A、char s[]="China";
B、char s[10]={"China"};
C、char s[10];s="China";
D、char s[10]={'c','h','i','n','a'};
(  C  )
29、下列选项中,表示字符串末尾的结束标志是________。
A、'\n'
B、'\r'
C、'\0'
D、NULL
(  B  )
30、关于字符型变量的定义,下列选项正确的是________。
A、char ch = a;
B、char ch = 'a';
C、char ch = "a";
D、char ch = \a;
(  B  )
31、有如下定义
struct person
{
char name[9];
int age;
}
;
struct person class[10] = {"john",17, "paul",19, "mary",18, "adam",16};
根据上述定义,能输出字母a的语句是______。
A、printf("%c\n",class[3].name);
B、printf("%c\n",class[3].name[0]);
C、printf("%c\n",class[4].name[1]);
D、printf("%c\n",class[4].name[0]);
(  D  )
32、下面程序的输出结果是______。
main()
{
int a[]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%d\n",*(p+8));
}
A、0
B、8
C、10
D、9
(  B  )
33、以下叙述中错误的是______。
A、用户定义的函数中可以没有return语句
B、用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值
C、用户定义的函数中若没有return语句,则应当定义函数为void类型
D、函数的return语句中可以没有表达式
(  B  )
34、若fp是指向某文件的指针,且未读到此文件末尾,则库函数feof(fp)的返回值是______。
A、EOF
B、0
C、非零值
D、1
(  D  )
35、有以下程序
main(int argc,char *argv[])
{
int n=0,i;
for(i=1;i<argc;i++) n=n*10+*argv[i]-'0';
printf("%d\n",n);
}
编译连接后生成可执行文件tt.exe。若运行时输入以下命令行tt 12 345 678程序运行后的输出结果是______。
A、12
B、12345
C、12345678
D、136
(  A  )
36、有说明语句int a[4][5]; 则a[2]+3表示__。
A、a数组行下标为2、列下标为3的元素的地址
B、a数组行下标为2、列下标为3的元素的值
C、a数组第2行的首地址
D、a数组第3行的首地址
(  B  )
37、以下叙述中正确的是______。
A、程序必须包含所有三种基本结构才能成为一种算法
B、当用我们所写的每条 C 语句,经过编译最终都将转换成二进制的机器指令
C、如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确表达
D、只有简单算法才能在有限的操作步骤之后结束
(  C  )
38、设有数据定义语句"int a[200]; ",下列数组元素引用中下标不越界的是________。
A、a[-1]
B、a[201]
C、a[0]
D、a[200]
(  D  )
39、下列运算符结合性不同的是________。
A、+
B、%
C、/
D、=
(  A  )
40、printf函数中用到格式符%-6s,其中数字6表示输出的字符串占用6列。如果字符串长度小于6,则输出按方式 ________。
A、从左起输出该字符串,右补空格
B、从右起输出该字符串,左补空格
C、0
D、输出错误信息
(  B  )
41、下列语句合法的是________。
A、4+c=b=0 ;
B、a=++c;
C、a=2=b=6;
D、a=4++;
(  D  )
42、下列程序的输出结果是________。
main()
{
int i,s=0;
for(i=1;i<10;i++)
if(!(i%2)&&!(i%3)) s+=i;
printf(”%d ”,s);
}
A、4
B、39
C、45
D、6
(  B  )
43、c语言中,数组名代表________。
A、数组全部元素的值
B、数组首地址
C、数组第一个元素的值
D、数组元素的个数
(  D  )
44、以下选项中,合法的 c 语言常量是________。
A、2XY
B、HELLO'
C、"\0.\0
D、1.0
(  C  )
45、以下for语句构成的循环执行了______次。
#include <stdio.h>
#define N 2
#define M N+1
#define NUM (M+1)*M/2
main()
{
int i,n=0;
for(i=1;i<=NUM;i++)
{
N++;
printf("%d",n);
}
printf("\n");
}
A、5
B、6
C、8
D、9
(  B  )
46、若有定义语句:double x[5]= {1.0,2.0,3.0,4.0,5.0 }, *p=x;
则错误引用x数组元素的是______。
A、*p
B、x[5]
C、*(p+1)
D、*x
(  C  )
47、在c语言中,只有在使用时才占用内存单元的变量,其存储类型是________。
A、auto和static
B、extern和register
C、auto和register
D、static和register
(  A  )
48、以下选项中不合法的标识是________。
A、&a
B、FOR
C、print
D、_00
(  D  )
49、c语言中,switch后的括号内表达式的值可以是________。
A、只能为整型
B、只能为整型,字符型,枚举型
C、只能为整型和字符型
D、任何类型
(  A  )
50、下列两条语句"
int c1=1,c2=2,c3;
c3=1.0/c2*c1;
"执行后变量c3的值是________。
A、0
B、0.5
C、1
D、2