哈尔滨工业大学2003-2006年C语言 考试题答案Word文件下载.doc
《哈尔滨工业大学2003-2006年C语言 考试题答案Word文件下载.doc》由会员分享,可在线阅读,更多相关《哈尔滨工业大学2003-2006年C语言 考试题答案Word文件下载.doc(54页珍藏版)》请在冰点文库上搜索。
}
max=a[0][0];
m=n=0;
i++)
for(j=0
if(max<
a[i][j])
{
max=a[i][j];
m=i
n=j
}
}
printf("
max=%d\n"
max);
m=%d\tn=%d\n"
m,n);
2、#include<
stdio.h>
main()
{intx,n,tt,f1(intint);
scanf(“%d,%d”,&
n);
tt=f1(x,n);
printf(“%d”,tt);
}
intf1(intx,inty)
{inttemp=1,I;
for(I=1;
I<
=y;
I++)
temp*=x;
return(tmp);
哈工大2002/2003学年秋季学期C语言试题答案
一、选择题
1、D,2、B,3、A,4、B,5、A,6、A,7、D,8、D,9、B,10、B
二、给出下列程序的运行结果
1、17,102
2、13.700000
3、d=20
4、13
5、s=1234
6、10
三、阅读程序,在标有下滑线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。
1、(year%4==0&
&
year%100!
=0)||year%400==0)
leap
2、continue
3、break
4、max=a[0][0]
row=i+1
colum=j+1
5、s++
*t
return(p)
四、编程
1、
#include<
main()
inti;
floatsum,sign;
i=1;
sum=0;
sign=1.0;
while((1.0/i)>
=1e-4)
sum+=sign/i;
i++;
sign=-sign;
printf("
sum=%.4f"
sum);
2、
charstr[81];
inti;
intletter,space,num,other;
charc;
printf("
Pleaseenterastring:
"
);
gets(str);
letter=space=num=other=0;
for(i=0;
str[i]!
='
\0'
c=str[i];
if((c>
='
A'
c<
Z'
)||(c>
a'
c<
z'
))
letter++;
elseif(c>
0'
&
9'
)
num++;
elseif(c=='
'
space++;
elseother++;
Inthisstring:
letter=%d,space=%d,num=%d,other=%d"
letter,space,num,other);
3、
{
intnum[10];
inti,j,k;
inttemp;
Pleaseenter10numbers:
\n"
for(i=0;
i<
10;
i++)
scanf("
num[i]);
for(i=0;
9;
k=i;
for(j=i+1;
{
if(num[k]>
num[j])
k=j;
if(k!
=i)
{
temp=num[i];
num[i]=num[k];
num[k]=temp;
}
printf("
Aftersorted:
for(i=0;
printf("
%5d"
num[i]);
哈工大2003秋季学期C语言程序设计试题参考答案
一、判断题:
(12分)
1、错2、对3、错4、错5、错6、错
二、选择题:
(共20分,每题2分)
1、C2、C3、B4、C
5、D6、A7、A8、D
9、D10、B
三、填空题:
(共24分,每空2分)
1、num=0,word=0 2、c=str[I]3、word==0 4、num++;
5、intI,j,k,t;
6、k=I;
7、k!
=I8、sort(b,10);
9、k=sqrt(m);
10、break11、s[i]<
=200 12、y[i]++;
四、读程序,写出程序的运行结果(共24分,每题4分)
1、1010912、m=13、852
4、2.5000006.0000005、sum=256、817
(20分)略
1、#include<
{inta,b,*pa,*pb;
scanf(“%d%d”,&
a,&
b);
pa=&
a;
pb=&
b;
if(*pa>
*pb)printf(“%d\t%d”,*pa,*pb);
elseprintf(“%d\t%d”,*pb,*pa);
#include<
string.h>
voidMyStrcat(chars1[],chart1[]);
chars[80],t[40];
gets(s);
gets(t);
MyStrcat(s,t);
puts(s);
voidMyStrcat(chars1[],chart1[])
inti,j;
i=strlen(s1);
for(j=0;
j<
=strlen(t1);
j++,i++)
{
s1[i]=t1[j];
}
哈工大2004年秋季学期C语言考试题参考答案
说明:
考试成绩分为三部分:
实验成绩占10分,卷面笔试成绩占45分,机考成绩占45分,满分为100分。
本试卷为卷面笔试部分,卷面满分为45分。
一、填空题(6分,每题2分)
1.C语言中基本数据类型包括整型、实型、字符型、枚举类型。
2.已知能被4整除而不能被100整除的或者能被400整除的年份是闰年,则判断某一年year是否是闰年的表达式为:
year%4==0&
year%100!
=0||year%400==0。
3.设有下列登记表,采用最佳方式对它进行类型定义。
姓名
性别
出生年月
家庭收入状况
家庭收入状况标记
年
月
日
低收入
中等收入
高收入
姓名用name表示,性别用sex表示,出生年月用birthDay表示,年用year表示,月用month表示,日用date表示,家庭收入状况用salary表示,低收入用low表示,中等收入用middle表示,高收入用high表示,家庭收入状况标记用salaryMark表示。
struct
charname[10];
charsex;
struct
intday;
intmonth;
}birthDay;
union
intlow;
intmiddle;
inthigh;
}salary;
intsalaryMark;
};
二、判断下列问题描述正确与否,正确的打“√”,错误的打“×
”。
(3分,每题1分)
1.#definePI=3.14159;
不是C语句。
(√)
2.在C语言中,可以用typedef定义一种新的类型。
(×
)
3.共用体所占的内存空间大小取决于占空间最多的那个成员变量。
(√)
三、选择题:
(10分,每题1分)
1.以下不正确的C语言标识符是(D)。
A.AB1B.a2_bC._ab3D.4ab
2.若有定义int(*p)[4],则标识符p是一个D。
A、指向整型变量的指针变量
B、指向函数的指针变量
C、指向有四个整型元素的一维数组的指针变量
D、指针数组名,有四个元素,每个元素均为一个指向整型变量的指针
3.若用数组名作为函数调用时实参,则实际上传递给形参的是(A)。
A.数组首地址 B.数组的第一个元素值
C.数组中全部元素的值 D.数组元素的个数
4.C语言中规定函数的返回值的类型是由(B)。
A.return语句中的表达式类型所决定
B.在定义该函数时所指定的函数类型所决定
C.调用该函数时系统临时决定
D.调用该函数时的主调用函数类型所决定
5.以下错误的描述是(D)。
A.不同的函数中可以使用相同的变量名
B.形式参数是局部变量
C.一个函数内部定义的变量只能在本函数范围内有效
D.在一个函数内部的复合语句中定义的变量可以在本函数范围内有效
6.为了判断两个字符串s1和s2是否相等,应当使用(D)。
A. if(s1==s2)B.if(s1=s2)
C. if(strcpy(s1,s2))D.if(strcmp(s1,s2)==0)
7.在while(x)语句中的x与下面条件表达式等价的是:
A。
A.x!
=0B.x==1C.x!
=1D.x==0
8.若有以下说明和语句:
structstu
{
intno;
char*name;
}student,*p=&
student;
则以下引用方法不正确的是(D)。
A.student.noB.(*p).no
C.p->
noD.student->
no
9.以下对二维数组进行正确初始化的是(C)。
A.inta[2][3]={{1,2},{3,4},{5,6}};
B.inta[2][3]={{1,2},{},{4,5}};
C.inta[][3]={1,2,3,4,5,6};
D.inta[2][]={{1,2},{3,4}};
10.二维数组a有m行n列,则在a[i][j]之前的元素个数为(B)。
A.j*n+iB.i*n+jC.i*n+j-1D.i*n+j+1
四、写出下列程序的运行结果。
(4分,每题1分)
1.#include<
voidfun(intx)
{
x=20;
intx=10;
fun(x);
printf("
x=%d\n"
x);
运行结果是:
x=10
2.#include<
voidfun(intb[4])
{
intj;
for(j=0;
j<
4;
j++)
b[j]=j;
}
inta[4]={1,2,3,4},k;
fun(a);
for(k=0;
k<
k++)
%d\n"
a[k]);
}
1
2
3
3.#include<
main()
inti=10;
switch(i)
case9:
i+=10;
case10:
i+=10;
case11:
i+=10;
break;
default:
i+=10;
i=%d\n"
i);
i=30
4. #include<
voidfun()
{
staticinta=5;
a++;
printf("
a=%d\n"
a);
main()
intm;
for(m=0;
m<
=1;
m++)
fun();
a=6
a=7
五、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。
(3分,每空1分)
从键盘输入10个整型数据,放入数组a中,求其最大值及其所在元素的下标位置,并输出。
inta[10],n,pos,max;
for(n=0;
n<
n++)
&
max=a[0];
pos=0;
n++)
if(a[n]>
max)
max=a[n];
pos=n;
max=%d,pos=%d\n"
max,pos);
六、下面程序是有错误的程序,请找出其中的错误,并将正确的语句写在相应错误语句的右方空白处。
(5分)
math.h>
intisprime(intm)intisprime(intm);
intn,flag;
printf("
Inputn:
"
scanf("
n);
scanf("
flag=isprime(n);
if(flag)
printf(Yes!
)printf("
Yes!
else
No!
/*函数功能:
判断m是否为素数
函数参数:
整型变量m
返回值:
返回1时,表示m是素数;
返回0时,表示m不是素数
*/
intisprime(int*m)intisprime(intm)
inti;
for(i=2;
=sqrt(m);
if(m%i=0)return0;
if(m%i==0)return0;
return1;
七、在下面任意选择2道题编程(14分,每题7分)
1.从键盘任意输入某班30个学生的成绩,将成绩按照由高到低顺序打印。
答案1:
#include<
floatscore[30],temp;
intn=30,i,j;
printf("
Pleaseenterthenumberandscore:
for(i=0;
n;
i++)
scanf("
%f"
score[i]);
/*用交换法按成绩由高到低对学生成绩排序*/
n-1;
i++)
for(j=i+1;
j++)
{
if(score[j]>
score[i])/*按成绩由高到低排序*/
{
temp=score[j];
score[j]=score[i];
score[i]=temp;
}
}
}
Sortedresults:
i++)/*打印排序结果*/
printf("
%4.0f\n"
score[i]);
}
答案2:
intn=30,i,j,k;
/*用选择法按成绩由高到低对学生成绩排序*/
k=i;
score[k])
k=j;
if(k!
=i)
{
temp=score[i];
score[i]=score[k];
score[k]=temp;
2.自己定义一个函数,以实现和函数strlen相同的功能,即任意输入一个字符串,调用该函数可以计算输入字符串的实际长度,然后打印
intMystrlen(charstr[]);
charstr[80];
intlen;
gets(str);
len=Mystrlen(str);
len=%d\n"
len);
intMystrlen(charstr[])
intlen=0,i;
for(i=0;
str[i]!
=0;
len++;
3.编程计算1!
+2!
+3!
+4!
+….+10!
的值
longterm=1,sum=0;
inti;
for(i=1;
i<
=10;
term=term*i;
sum=sum+term;
1!
+2!
+...+10!
=%ld\n"
sum);
longterm,sum=0;
inti,j;
term=1;
for(j=1;
=i;
term=term*j;