武汉轻工大学计算机C语言期末

本试卷为武汉轻工大学计算机C语言期末,题目包括:单项选择题,填空题,编程题。

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

计算机C语言期末

一、单项选择题 (共20题,每题2分,共计40分)

(  A  )
1、以下程序段给数组所有元素输入数据:
main()
{
int a[10],i=0;
while(i<10)scanf("%d",);
}
应在下划线处填入的是________。
A、a+(i++)
B、&a[i+1]
C、a+i
D、&a[++i]
(  C  )
2、avg功能是求整形数组中的前若干个元素的平均值,设数组元素个数最多不超过则下列函数说明语句错误的是________。
A、int avg(int*a,int n);
B、int avg(int a[lO],int n);
C、int avg(int a,int n);
D、int avg(int a[],int n);
(  D  )
3、以下c语言用户标识符中,不合法的是________。
A、_1
B、AaBc
C、a b
D、a--b
(  D  )
4、以下选项中能表示合法常量的是________。
A、整数:1,200
B、实数:1.5E2.0
C、字符斜杠:"\"
D、字符串:"\007"
(  B  )
5、以下条件表达式中能完全等价于条件表达式 x 的是 _________.
A、(x==0)
B、(x!=0)
C、(x==1)
D、(x!=1)
(  D  )
6、下面程序段的运行结果是 _____________.
for(i=1;i<=5;)
printf("%d",i);
i++;
A、12345
B、1234
C、15
D、无限循环
(  B  )
7、请读程序 :
#include <stdio.h>
f(int b[ ], int n)
{
int i, r=1;
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、720
B、120
C、24
D、6
(  D  )
8、在下面的函数声明中,存在着语法错误的是________。
A、void BC(int a,in
B、void BD(int,in
C、void BE(int,int t=5)
D、int BF(int x;int
(  B  )
9、若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是________。
struct stu {
int i;
int name;
} st,*p; p=&st;
A、st.i
B、*p.i
C、(*p).i
D、p->i
(  C  )
10、设
struct data
{
int a;
float b;
} c,*p=&c;
,引用正确的是________。
A、*p.a
B、p.b
C、p->a
D、*p->b
(  B  )
11、条件语句________。
A、不可以嵌套使用
B、可以嵌套使用
C、在一条件下可以嵌套使用
D、嵌套语句中不能使用else子句
(  B  )
12、下面函数的功能是________。 a(s1,s2) char s1[],s2[]; while(s2++=s1++);
A、字符串比较
B、字符串复制
C、字符串链接
D、字符串反向
(  C  )
13、设有以下语句:
typedef struct tt { char c; int a[4]; } cin; 则下面叙述中正确的是________。
A、可以用TT定义结构体变量
B、TT是struct类型的变量
C、可以用CIN定义结构体变量
D、CIN是struct TT类型的变量
(  D  )
14、以下程序的输出结果是______。
main() {
int a=3;
printf("%d\n",(a+=a-+a*a) )
}
A、-6
B、1
C、2
D、-12
(  B  )
15、下列关于字符串的说法中错误的是________。
A、在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符'\0'作为字符串结束标志
B、'\0'作为标志占用存储空间,计入串的实际长度
C、在表示字符串常量的时候不需要人为在其末尾加入'\0'
D、在C语言中,字符串常量隐含处理成以'\0'结尾
(  C  )
16、已知英文字母m的ascii码值为6dh,那么ascii码值为70h的英文字母是________。
A、P
B、Q
C、p
D、j
(  B  )
17、以下对局部变量描述错误的是________。
A、在函数内部定义的变量
B、在程序的全部执行过程中一直占用存储单元。
C、在main函数中定义的变量是局部变量
D、形式参数也是局部变量。
(  C  )
18、执行下列程序后,i的值是________。
int i,x;
for(i=1,x=1;i<20; i++) {
if (x>=10) break;
if(x%2==1) {
x+=5;
continue;
}
x-=3;
}
A、4
B、5
C、6
D、7
(  A  )
19、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
(  B  )
20、下列四个选项中,均是 C语言关键字的选项是()。
A、auto enum include
B、switch typedef continue
C、signed union scanf
D、if struct type

二、填空题 (共10题,每题2分,共计20分)

1、有一输入函数scanf("%d",k);
则不能使用float变量k得到正确数值的原因是__________和____________。scanf语句的正确形式应该是:_____________。
2、在c语言中,用转义字符 \\ 表示______________。答题提示:双引号/单引号/反斜线/横向跳格/回车换行
3、下列程序段的运行结果是_____。intb=20,*q;
q=&b; printf("%d",*q);
4、已知a=5,则表达式"a+=a*=3"的值是________。
5、有以下程序
#include <string.h>
main()
{
char a[]={'d','e','f','g','h','\0'};
int j;
j=strlen(a);
printf("%d\n",j);
}
程序运行后的输出结果是________。
6、下列程序段的运行结果是________。
main()
{
int a=5,b=6,c;
int min(int,int);
c=min(a,b);
printf("%d\n",c);
}
int min( int x , int y )
{
int z;
if(x<y) z=x;
else z=y;
return z ;
}
7、在c语言中,若确实不要求返回函数值,则应将函数定义为( )类型。
8、执行下列的程序段后,正确的结果是_____________。
int i=5;
while( i = 1)i -- ;
printf("%d", i );
9、若要定义一个单精度实型变量f,则应该使用的定义语句为________。
10、在c语言中,'\n'表示________。

三、编程题 (共3题,每题0分,共计40分)

1、编写程序求解约瑟夫问题,有n个小孩围成一圈,给他们从1开始编号。现指定从第w个小孩开始报数,报到s时出列然后从下个小孩开始重新报数,报到s时出列如此重复下去直到所有的小孩都出列。求小孩出列的顺序,使用结构体实现。
2、古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
3、从键盘上输入一个字符串, 计算字符串里有多少个空格、小写字母、大写字母、数字。