秋季《C语言程序设计》期末考试题A卷答案答案修改后.docx

上传人:b****5 文档编号:7876531 上传时间:2023-01-26 格式:DOCX 页数:13 大小:30.36KB
下载 相关 举报
秋季《C语言程序设计》期末考试题A卷答案答案修改后.docx_第1页
第1页 / 共13页
秋季《C语言程序设计》期末考试题A卷答案答案修改后.docx_第2页
第2页 / 共13页
秋季《C语言程序设计》期末考试题A卷答案答案修改后.docx_第3页
第3页 / 共13页
秋季《C语言程序设计》期末考试题A卷答案答案修改后.docx_第4页
第4页 / 共13页
秋季《C语言程序设计》期末考试题A卷答案答案修改后.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

秋季《C语言程序设计》期末考试题A卷答案答案修改后.docx

《秋季《C语言程序设计》期末考试题A卷答案答案修改后.docx》由会员分享,可在线阅读,更多相关《秋季《C语言程序设计》期末考试题A卷答案答案修改后.docx(13页珍藏版)》请在冰豆网上搜索。

秋季《C语言程序设计》期末考试题A卷答案答案修改后.docx

秋季《C语言程序设计》期末考试题A卷答案答案修改后

A卷

2005—2006学年第二学期

《程序设计语言(C)》试卷

参考答案和评分标准

 

专业班级

姓名

学号

开课系室软件工程系

考试日期2006年7月3日

题号

总分

得分

阅卷人

程序设计语言(C)试卷(A卷)答题卡

说明:

1.选择题和判断题必须填在答题卡上才有效,综述题写在指定位置。

得分

2.本试卷连同封面共13页,不得拆开。

 

一、单项选择题(正确的答案涂黑或画圈,每题1分,共20分)

1

A

C

D

11

A

C

D

2

A

C

D

12

A

C

D

3

A

B

D

13

A

B

D

4

A

C

D

14

A

B

C

5

A

C

D

15

B

C

D

6

A

C

D

16

A

C

D

7

A

B

D

17

B

C

D

8

A

C

D

18

A

C

D

9

A

B

D

19

A

C

D

10

A

B

C

20

A

B

C

得分

 

二、读程序填空题(在空格处填写正确答案,每空2分,共20分)

q—或q=q-1或--q

x>=0或x>0

fac/i或1.0/i

return(-x)或return-x

s

n/2或(n+1)/2

!

feof(fp)或ch!

=EOF

1

fp

1

一、单项选择题(每题1分,20分)

1.现有程序完成a、b两个值的交换,空白处正确的答案应该是_______。

main()

{inta,b,t;

t=b ;

b=a ;

________ ;

}

A.a=bB.a=tC.b=tD.t=a

2.如果程序中用到标准库函数log(),那么该程序应含下面哪条语句_________。

A.#include”stdio.h”B.#include”math.h “

C.#include”string.h”D.#include”stdlib.h”

3.intx=6;则下方程序段运行结果是_________。

switch(x)

{case1:

printf(“apple“);break;

case2:

printf(“hello“);break;

case3:

printf(“world“);

default:

printf(“thankyou“);

}

A.appleB.helloC.thankyouD.worldthankyou

4.在C语言中,不合法的int型常量是_________。

A.32767B.0578C.0XAACD.32768L

5.设x,y,z和k都是int型变量,则执行表达式:

x=(y=2,z=15,k=30)后,x的值为________。

A.52B.30C.15D.2

6.设x为int型变量,则执行以下语句后,x的值为________。

x=10;x+=x-=x-x;

A.30B.20C.10D.40

7.在下列运算符中,优先级最高的运算符是()

A.==B.!

=C.%D.||

8.设x,y,t均为int型变量,则执行语句:

x=y=3;t=++x||--y;后y的值为________。

A.4B.3C.2D.1

9.语句printf(“%%%%\n”);的输出为________。

A.####B.%%%%\nC.%%D.%%%%

10.#include

main()

{

chara1,a2,a3,a4,a5,a6;

scanf(“%c%c%c%c”,&a1,&a2,&a3,&a4);

a5=getchar();

a6=getchar();

putchar(a1);

putchar(a2);

printf(“%c%c\n”,a5,a6);

}

如:

123回车

45678回车结果是_________。

A.1267B.1256C.1278D.1245

11.若有intx,y,z;scanf("%d%d%d",&x,&y,&z);则运行时输入方式错误的是________。

A.456B.4,5,6

C.4D.45

566

12.下面程序段执行结果是________。

inty=25;

while(y--);

printf(“y=%d”,y);

A.0B.-1C.1D.无限循环

13.不正确的字符串赋值或赋初值方式是________。

A.char*str;str="string";

B.charstr[7]={'s','t','r','i','n','g',‘\0’}C.charstr1[10];str1="string";

D.charstr1[]="string",str2[]="12345678";

14.对于inta[]={1,2,3,4,5,6},*p;p=a;*(p+3)+=2;则程序段执行后*(p+3)的值为_________。

A.5B.3C.4D.6

15.若有说明语句:

inta[]={1,2,3,4,5,6,7,8},*p=a;且0≤i≤7,则________是对数组元素的错误表示。

A.p+iB.a[p-a]C.*(a+i)D.p[i]

16.以下选项中不能正确把c1定义成结构体变量的是

A.structcolorB.structcolorcl

{intred;{intred;

intgreen;intgreen;

intblue;intblue;

};};

structcolorc1;

C.structcolorD.struct

{intred;{intred;

intgreen;intgreen;

intblue;intblue;

}cl;}cl;

17.对于inta[3][2]={1,2,3};元素a[1][1]的值为_________。

A.0B.1C.3D.不能确定

18.设x和y均为int型变量,则执行下面的循环后,y的值为______。

for(y=1,x=1;y<=20;y++)

{if(x==8)

break;

if(x%2==1)

{x+=5;

continue;

}

x-=3;

}

A.2B.4C.6D.8

19.假定所有变量均已正确定义,则下列程序段运行后x的值是_________。

a=0;b=0;c=0;

x=35;

if(!

a)x=x-1;

elseif(b)

x=x+1;

if(c)x=3;

elsex=4;

A.34B.4C.35D.3

20.现有一个文本文件,想以追加方式打开,下列方式正确的是__________。

if((fp=fopen("fname.dat","____"))==NULL)

{printf("cannotopenfile!

\n",num);exit(0);}

A.wB.abC.bD.a

二、读程序填空(每空2分,共20分)

1.判断一个字符串是否回文(顺读和逆读相同,如字符串“abcba”就是回文)

/*该函数返回值为1代表是回文,返回0代表不是回文*/

intverse(char*p)

{char*q=p;

while(*q!

=’\0)

q++;

⑴;

while(p

if(*p++!

=*q--)return0;

return1;

}

2.以下函数的功能是计算s=1+

+

+……+

的值,请填空。

doublefun(intn)

{doubles=0.0,fac=1.0;inti;

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

s=s+⑵;

return⑶;

}

3.下面的程序用来统计文本文件fname.dat中的字符数,将程序补充完整。

#include"stdio.h"

voidmain()

{FILE*fp;

longnum=0;

charch;

if((fp=fopen("fname.dat","r"))==NULL)

{printf("cannotopenfile!

\n",num);exit(0);}

ch=fgetc(fp);

while(⑷)

{num++;ch=fgetc(fp);}

printf("num=%d\n",num);fclose(⑸);}

4.设fun()是用户自定义函数,其功能是求一个数的绝对值,请填空。

#include

#include"math.h"

intfun(intx)

{if⑹;

return(x)

else⑺;

}

main()

{inta;

scanf("%d",&a);

printf("绝对值是%d\n",fun(a));

}

5.将数组a中的n个整数按相反顺序存放。

voidinv(intx[],intn)

{intt,k,j;

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

{t=x[n-1-k];

x[n-1-k]=x[k];

x[k]=t;

}

}

voidmain()

{inti,a[6]={3,7,9,11,0,6};

inv(a,6);

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

printf("%d,",a[i]);

printf("\n");

}

6.下列程序段运行后输出的结果是a=⑼,b=⑽。

intx=0,a=0,b=0;

switch(x)

{case0:

b++;

case1:

a++;break;

case2:

a++;b++;

printf(“a=%d,b=%d\n”,a,b);

得分

三、编程题(60分,在下面的空白处编写程序)

1、编程计算下面函数的值,其中x为实数,由键盘输入。

(12分)

-1x≤-5

y=(x-1)2-5

x≥5

 

参考答案:

#include

main()

{

floatx,y;

printf("请输入实数x:

");

scanf("%f",&x);

if(x<=-5)y=-1;

elseif(x<5)

y=(x-1)*(x-1);

else

y=1/x;

printf("y=%f",y);

}

[评分标准]:

头文件、程序框架占2分;读入x值占1分;每个分支语句各占3分,共9分。

 

2.设有一组数{12,32,23,45,44,65,67,9,100,80},编写一个完整的程序实现从小到大排序。

(12分)

参考答案:

#include

main()

{

inta[10]={12,32,23,45,44,65,67,9,100,80};

inti,j,t;

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

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

if(a[i]>a[j])

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

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

printf("%4d",a[i]);

}

[评分标准]:

头文件、程序框架占2分;数组a定义及初始化占2分;外层循环占2分;内层循环占2分;元素交换部分占4分。

 

3.编程将字符串s2的内容连接到字符串s1后,如s1中存放“hello”,s2中存放“world”,连接后s1的内容为“helloworld”(不能使用strcat函数,字符串结束标志为’\0’)。

(10分)

参考答案:

#include

#include

main()

{

charstr1[80],str2[80];

inti=0,j=0;

printf("输入两个字符串:

");

gets(str1);

gets(str2);

i=strlen(str1);

while(str1[i++]=str2[j++]!

='\0');

printf("连接之后的字符串为:

%s",str1);

}

[评分标准]:

头文件、程序框架占2分;字符数组str1、str2初始化占3分;求出str1长度占2分;str2内容赋值到str1中占3分。

 

4.编一个名为average的函数,其功能是求形参数组的平均值。

调用average的主函数部分源代码如下。

(10分)

floataverage(floatscore[],intn)

{

inti;

floarave=0;

for(i=0;i

ave+=score[i];

returnave/n;

}

main()

  {floatscore[10],aver;

   inti;

   printf("input10scores:

\n");

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

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

   printf("\n");

   aver=average(score,10);

   printf("averagescoreis%5.2f",aver);

  }

[评分标准]:

函数头正确定义占4分;ave初始化及返回值占2分;循环求累加和占4分。

 

5.编写一个函数fun,其功能是:

将一个字符串str1(元素起始下标为0)中的所有偶数位上的小写字母复制成为一个新字符串str2。

如str1串为“abCDefgh123”,则新串str2为“aeg”。

主函数部分源代码如下。

(10分)

#include

#include

fun(charstr1[],charstr2[])

{/*请填写函数主体内容*/

inti=0,j=0;

while(str1[i]!

='\0')

{

if(str1[i]>='a'&&str1[i]<='z')

str2[j++]=str1[i];

i+=2;

}

str2[j]='\0';

 

}

main()

{charstr1[20],str2[10];

printf("inputastring\n");

gets(str1);

fun(str1,str2);

puts(str2);

}

[评分标准]:

变量i、j定义及初始化部分占1分;str1结束条件判断占2分;偶数位及小写字母判断占4分;str2赋字符串结束标记占1分;str2中符合条件的字符赋值到str1中占2分。

 

6.编写一个函数,函数的功能是:

为一个偶数寻找两个素数,这两个素数之和等于该偶数,求满足这样要求的素数的组数。

(6分)

/*isp是求素数的函数,返回1代表m是素数,返回0代表m不是素数*/

isp(intm)

{inti;

for(i=2;i

if(m%i==0)break;

if(i==m)return1;

elsereturn0;

}

fun(intn,intcount)/*n是偶数,count是符合条件的组数*/

{

inti;

count=0

for(i=2;i

if(isp(i)&&isp(n-i))

count++;

}

 

[评分标准]:

count初始化占1分;循环控制占2分,函数调用判断是否为素数及两个素数的和为n部分占2分;符合条件的数统计占1分。

 

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

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1