哈工大学年秋季学期C语言试题包括答案Word格式文档下载.docx
《哈工大学年秋季学期C语言试题包括答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《哈工大学年秋季学期C语言试题包括答案Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。
6.指向不同类型数组的两个指针不能进行有意义的比较。
7.unionch
{
inta[3];
floatm;
};
这样的一个数据类型共占用内存数为6字节。
8.设有定义:
chara[2][3]={1,2,3,4};
则数组元素a[1][1]的值为0。
二、单项选择题:
(10分,每题2分)
1.下列对字符串的定义中,错误的是:
。
A)charstr[7]="
FORTRAN"
;
B)charstr[]="
C)char*str="
D)charstr[]={'
F'
'
O'
R'
T'
A'
N'
0};
2.设有声明语句:
inta=1,b=0;
则执行以下语句后输出:
switch(a)
{
case1:
switch(b)
{
case0:
printf("
**0**"
);
break;
case1:
**1**"
}
case2:
**2**"
}
A)**0**B)**0****2**
C)**0****1****2**D)有语法错误
3.在while(x)语句中的x与下面条件表达式等价的是:
A)x!
=0B)x==1C)x!
=1D)x==0
4.已知
structsk
inta;
floatb;
}data,*p;
若有p=&
data则对data中成员a的正确引用是________。
A)(*p).dataB)(*p).a
C)p->
data.aD)p.data.a
5.C语言中形参的缺省存储类别是:
A)自动(auto)B)静态(static)
C)寄存器(register)D)外部(extern)
三、写出下列程序的运行结果。
1.
#include<
stdio.h>
main()
intx=8,y=12;
%d%d\n"
x++,++y);
x,y);
运行结果是:
2.
intx,y;
scanf("
%2d%*3s%2d"
&
x,&
y);
%d"
x+y);
程序执行时从键盘输入:
123456789↙
3.
voidFunc(intb[])
intj;
for(j=0;
j<
4;
j++)
{
b[j]=j;
staticinta[]={5,6,7,8},i;
Func(a);
for(i=0;
i<
i++)
printf("
%d\n"
a[i]);
4.
#include<
intcube(inty);
intx;
for(x=1;
x<
=5;
x++)
printf(“%d”,cube(x));
intcube(inty)
return2*y;
5.
voidFunc(void);
inti;
for(i=0;
i<
2;
Func();
voidFunc(void)
staticinttimes=1;
Func()wascalled%dtime(s).\n"
times++);
四、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。
(12分,每空2分)
1.下面这个程序用于读入5个整数,当程序读入的数据为正整数时,则显示该数,否则,不显示。
读入5个数据后,程序结束运行。
inti,n;
for(i=1;
printf("
Pleaseentern:
"
scanf("
);
if(n<
=0)_____________;
n=%d\n"
n);
Programisover!
\n"
2.下面函数实现strcmp的功能,将两个字符串s和t进行比较,然后将两个字符串中第一个不相同字符的ASCII码值之差作为函数值返回。
intMyStrcmp(chars[],chart[])
s[i]==t[i];
i++)
if(s[i]==)return0;
return();
3.下面程序模拟了鹘子的6000次投掷,用rand函数产生1到6之间的随机数face,然后统计1到6每一面出现的机会存到数组frequency中。
intface,roll,frequency[7]={0};
strand(time(NULL));
for(roll=1;
roll<
=6000;
roll++)
face=;
++;
for(face=1;
face<
=6;
face++)
printf(“%d,%d”,face,frequency[face]);
五、在下面给出的程序中,有9处错误(包括语法错误和逻辑错误),请找出其中的错误,并改正之。
(18分,每找对1个错误,加1分,每修改正确1个错误,再加1分。
)
1.输入一行字符,统计其中的英文字符、数字字符、空格字符,以及其他字符的个数。
string.h>
#defineARR_SIZE=80;
charstr[ARR_SIZE];
intlen,i;
intletter=0,digit=0,space=0,other=0;
请输入一个字符串:
gets(str);
len=strlen(str);
for(i=0;
len;
i++);
{
if(a=<
str[i]<
=z||A=<
=Z)
{
letter++;
}
elseif(0=<
=9)
digit++;
}
elseif(str[i]='
'
)
{
space++;
else
other++;
英文字符数:
letter);
数字字符数:
digit);
空格数:
space);
其他字符数:
other);
2.任意输入英文的星期几,在查找星期表后输出其对应的数字。
inti,pos;
intfindFlag=0;
charx[10];
charweekDay[7][]={"
Sunday"
"
Monday"
Tuesday"
Wednesday"
Thursday"
Friday"
Saturday"
};
%s"
x);
7&
&
!
findFlag;
if(x=weekDay[i])
pos=i;
findFlag=1;
}
if(findFlag=1)
%s是%d\n"
x,pos);
else
没有找到!
六、编程(42分,每小题14分)
1.编程计算a+aa+aaa+……+aa…a(n个a)的值,要求n和a由用户从键盘输入。
2.给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。
90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69为‘D’,60分以下为‘E’。
3.从键盘任意输入某班10个学生的成绩,计算总成绩并统计成绩不及格的学生人数,要求用一维数组做函数参数,在函数中实现输出总成绩及不及格的学生人数。
参考答案
(×
(√)
)
5.一个数组能够存储不同类型的数据(×
)。
A。
B。
switch(a