春季答案.docx

上传人:b****2 文档编号:1726959 上传时间:2023-05-01 格式:DOCX 页数:13 大小:35.57KB
下载 相关 举报
春季答案.docx_第1页
第1页 / 共13页
春季答案.docx_第2页
第2页 / 共13页
春季答案.docx_第3页
第3页 / 共13页
春季答案.docx_第4页
第4页 / 共13页
春季答案.docx_第5页
第5页 / 共13页
春季答案.docx_第6页
第6页 / 共13页
春季答案.docx_第7页
第7页 / 共13页
春季答案.docx_第8页
第8页 / 共13页
春季答案.docx_第9页
第9页 / 共13页
春季答案.docx_第10页
第10页 / 共13页
春季答案.docx_第11页
第11页 / 共13页
春季答案.docx_第12页
第12页 / 共13页
春季答案.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

春季答案.docx

《春季答案.docx》由会员分享,可在线阅读,更多相关《春季答案.docx(13页珍藏版)》请在冰点文库上搜索。

春季答案.docx

春季答案

哈工大2005年春季学期

C语言考试题

题号

总分

附加题

分数

说明:

考试成绩分为两部分:

实验占10%,卷面笔试占90%,满分为100分。

本试卷为卷面笔试部分,卷面满分为90分。

注意行为规范,遵守考试纪律!

参考答案

一、填空题(10分,第1小题4分,其余每空1分)

1.设有下列登记表,请采用最佳方式定义一种数据类型来表示这些数据的集合。

其中,配偶姓名用spouseName表示,子女人数用children表示。

参考答案:

structperson

{

charname[20];

charsex;

charprofession[20];

union

{

intsingleAge;

struct

{

charspouseName[20];

intchildren;

}married;

struct

{

intyear;

intmonth;

intdate;

}divorcedDay;

}marital;

intmarryFlag;

};

2.C语言中构造数据类型包括数组、结构体、共用体。

3.C语言中用_0__表示逻辑值“假”,用_非0_表示逻辑值“真”。

4.char*p[10];这条语句的含义是含有10个元素的指针数组p,它的每一个元素都是一个字符指针,可以指向一个字符串。

二、判断下列问题描述正确与否,正确的打“√”,错误的打“×”。

(4分,每题1分)

1.如果在程序中定义静态变量和全局变量时,未明确指明其初始值,那么它们可以在程序编译阶段自动被初始化为0值。

(√)

2.在C语言中,可以用typedef定义一种新的数据类型。

(× )

3.在C语言中,实参与其对应的形参各占独立的存储单元。

(√)

4.在C语言中,函数的定义可以嵌套。

(×)

三、选择题:

(10分,每题2分)

1.若用数组名作为函数调用时的实参,则实际上传递给形参的是(A)。

A.数组的首地址B.数组的第一个元素值

C.数组中全部元素的值D.数组元素的个数

2.判断两个字符串s1和s2相等,应当使用(C)。

A.if(s1==s2)B.if(s1=s2)

C.if(!

strcmp(s1,s2))D.if(strcmp(s1,s2))

3.在while(x)语句中的x与下面条件表达式等价的是:

A。

A.x!

=0B.x==1C.x!

=1D.x==0

4.二维数组a有m行n列,则在a[i][j]之前的元素个数为(B)。

A.j*n+iB.i*n+jC.i*n+j-1D.i*n+j+1

5.设有声明语句:

inta=1,b=0;则执行以下语句后输出为:

B。

switch(a)

{

case1:

switch(b)

{

case0:

printf("**0**");

break;

case1:

printf("**1**");

break;

}

case2:

printf("**2**");

break;

}

A)**0**B)**0****2**

C)**0****1****2**D)有语法错误

四、写出下列程序的运行结果。

(6分,每题3分)

1.#include

voidFun(int*y)

{

printf("*y=%d\n",*y);

*y=20;

printf("*y=%d\n",*y);

}

main()

{

intx=10;

printf("x=%d\n",x);

Fun(&x);

printf("x=%d\n",x);

}

运行结果是:

x=10

*y=10

*y=20

x=20

2.#include

intFun(intx)

{

staticinty=0;

y+=x;

returny;

}

main()

{

intx=10,y=0,k;

for(k=0;k<2;k++)

{

y=Fun(x);

printf("y=%d\n",y);

}

}

运行结果是:

y=10

y=20

3.#include

main()

{

chara[]="programming",b[]="language";

char*p1,*p2;

inti;

p1=a;

p2=b;

for(i=0;i<7;i++)

{

if(*(p1+i)==*(p2+i))

printf("%c",*(p1+i));

}

printf("\n");

}

运行结果是:

ga

五、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。

(10分,每空2分)

1.下面这个程序用于读入5个整数,当程序读入的数据为正整数时,则显示该数,否则,不显示。

读入5个数据后,程序结束运行。

#include

main()

{

inti,n;

for(i=1;i<=5;i++)

{

printf("Pleaseentern:

");

scanf("%d",&n);

if(n<=0)____continue___;

printf("n=%d\n",n);

}

printf("Programisover!

\n");

}

2.韩信点兵。

韩信有一队兵,他想知道有多少人,便让士兵排队报数:

按从1至5报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;按从1至7报数,最末一个士兵报的数为4;最后再按从1至11报数,最末一个士兵报的数为10。

下面程序的主要功能是计算韩信至少有多少兵。

#include

main()

{

intx=1;

intfind=0;

for(x=1;_!

flag__;x++)

{

if(x%5==1&&x%6==5&&x%7==4&&x%11==10)

{

printf("x=%d\n",x);

__flag=1___;

}

}

}

3.下面程序是计算字符串中实际字符的个数,即实现和字符串处理函数strlen相同的功能。

unsignedintMyStrlen(charstr[])

{

unsignedintlen=0,i;

for(i=0;str[i]!

='\0';i++)

{

len++;

}

returnlen;

}

注意行为规范,遵守考试纪律!

六、在下面这个程序中,要求其实现的功能是对用户输入的任意整数计算其阶乘,输入小于等于-1的数时退出程序。

下面给出的是一个有错误的程序,请找出其中的错误,并改正之。

(10分)

#include

#defineEND-1;//错误,改成:

#defineEND-1//(1分)

longFactorial(intx);

main()

{

intx;

while

(1);//错误,改成:

while

(1)//(1分)

{

printf("inputx:

);//错误,改成:

printf("inputx:

");//(1分)

scanf("%d",x);//错误,改成:

scanf("%d",&x);//(1分)

if(x<=END)

break//错误,改成:

break;//(1分)

else

printf("%d!

=%d\n",x,Factorial(x));//错误,改成:

printf("%d!

=%ld\n",x,Factorial(x));//(1分)

}

}

longFactorial(intx)

{

inti;

intresult;//错误,改成:

longresult=1;//(2分)

for(i=1,i<=x,i++)//错误,改成:

for(i=1;i<=x;i++)//(1分)

result*=i;

//错误,改成:

returnresult;//(1分)

}

七、编程(40分,第1和2小题各10分,第3小题20分)

1.编程计算1!

+2!

+3!

+……+10!

的值。

参考答案1:

#include

main()

{

longterm=1,sum=0;

inti;

for(i=1;i<=10;i++)

{

term=term*i;

sum=sum+term;

}

printf("1!

+2!

+...+10!

=%ld\n",sum);

}

参考答案2:

#include

main()

{

longterm,sum=0;

inti,j;

for(i=1;i<=10;i++)

{

term=1;

for(j=1;j<=i;j++)

{

term=term*j;

}

sum=sum+term;

}

printf("1!

+2!

+…+10!

=%ld\n",sum);

}

2.从键盘任意输入10个不相同的整数,然后,输入要查找的数x,如果在这10个数中找到x,则打印“Found!

”;如果找不到,则打印“Notfound!

”。

参考答案:

#include

main()

{

inti,a[10],flag=0;

for(i=0;i<10;i++)

{

scanf("%d",&a[i]);

}

printf("inputx:

");

scanf("%d",&x);

for(i=0;i<10;i++)

{

if(a[i]==x)

flag=1;

}

if(flag)

printf("Found!

");

else

printf("Notfound!

");

}

3.从键盘任意输入某班20个学生的成绩,打印最高分,并统计不及格学生的人数。

参考答案1:

#include

main()

{

inti,score[20],max,count;

for(i=0;i<20;i++)

{

scanf("%d",&score[i]);

}

max=score[0];

for(i=0;i<20;i++)

{

if(score[i]>max)

max=score[i];

}

printf("max=%d\n",max);

count=0;

for(i=0;i<20;i++)

{

if(score[i]<60)

count++;

}

printf("count=%d\n",count);

}

参考答案2:

#include

main()

{

inti,score[20],max,count;

for(i=0;i<20;i++)

{

scanf("%d",&score[i]);

}

max=score[0];

count=0;

for(i=0;i<20;i++)

{

if(score[i]>max)

max=score[i];

if(score[i]<60)

count++;

}

printf("max=%d\n",max);

printf("count=%d\n",count);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2