上海市二级C程序设计试题及答案Word格式文档下载.docx
- 文档编号:16175735
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:12
- 大小:22.76KB
上海市二级C程序设计试题及答案Word格式文档下载.docx
《上海市二级C程序设计试题及答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《上海市二级C程序设计试题及答案Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
floatscore;
}stu,*p;
p=&
stu;
则将学号20082168赋给结构体变量stu中的成员num,除了用赋值语句stu.num=20082168;
以外,还可以使用哪种赋值语句?
第1页共7页
6.以下getResult函数的功能是比较两数,若a>
b返回两者之和,否则返回两者之差。
请指出函数中的一个错误。
VoidgetResult(floata,floatb)
{floatc;
c=a>
b?
a+b:
a-b;
returnc;
}
7.假定建立了如下图所示的链表结构,指针p指向一个新结点,写出将新结点插入到链表成为头结点的C语句(插入后指针head仍然指向链表头结点)
datanext
7
head
9
p
试题二(12分,每小题6分)
阅读下列程序,把程序的输出结果写在答卷纸的对应栏内。
【程序2.1】从键盘上输入134<
回车>
,写出下列程序的输出结果。
#include<
stdio.h>
voidmain()
{intc;
while((c=getchar())!
=’\n’
{switch(c-‘1’)
{case0:
case1:
putchar(c+4);
case2:
putchar(c+3);
break;
case3:
putchar(c+2);
case4:
putchar(c+1);
printf(“\n”)
第2页共7页
【程序2.2】写出下列程序的输出结果。
Voidmain()
{charstr[]=“BeijingOlympic2008”;
inti=1,j=0;
while(str[i]!
=‘\0’)
{if(str[i]>
str[j])j=i;
i++;
printf(“%c\n”,str[j]);
str[j]=str[i];
puts(str);
试题三(12分,每小题6分)
下列程序中都有三个错误,按题中的功能要求,纠正错误,并加以附加行号“#XX”行改“……”的形式进行解答,把解答写在答卷纸的对应栏内。
代码左边的#1,#2,…是附加的行号。
【程序3.1】本程序中输入三个数,输出这三个数的和。
#1voidmain()
#2{inti;
#3floatx[3],sum;
#4printf(“Enterthreenumbers:
\n”)
#5sum=0;
#6for(i=0,i<
3,i++)
#7{
#8scanf(“%f”,x[i]);
#9sum+=x[i];
#10}
#11printf(“sum=%d\n”,sum);
#12}
第3页共7页
【程序3.2】从键盘输入任意10个整数,用冒泡法对其升序排列。
例如,输入:
13245768109
输出:
12345678910
#1#include<
#2voidbubbleSort
#3voidmain()
#4{
#5inti,a[10;
]
#6for(i=0;
i<
10;
i++)
#7scanf(“%d”,&
a[i]);
#8bubbleSort(&
a,10);
#9for(i=0;
#10printf(“%d”,a[i]);
#11printf(“\n”);
#13voidbubbleSort(int*a,intn)
#14{
#15inti,j,t;
#16for(j=0;
n;
#17for(i=0;
n-j;
#18if(a[i]<
a[i+1]){
#19t=a[i];
a[i+1]=t;
a[i]=a[i+1];
#20}
#21}
试题四(18分,每小题9分)
按指定的要求编写程序段,把解答写在答卷纸的对应栏内。
1.编写一个程序,输入一个正整数n(假设n<
7),求1!
+2!
+3!
+4!
+……+n!
。
2.编写一个函数intf(intstart,intend,inta[]);
利用参数start和end传入两个三位数,寻找从start到end之间满足下列两个条件的数。
条件一:
它是完全平方数;
条件二:
第一个数字和最后一个数字相同,例如:
121,676找到的数存放于数组a中,并返回找到的数的个数。
提示:
开平方函数为sqrt()。
第4页共7页
试题五(15分,每个空格3分)
阅读下列问题描述和相应的程序,把应填入(n)处的内容写在答卷纸的对应栏内。
【问题描述】以下程序输入一个整数n,当n不是大于2的偶数时需重新输入,当n是大于2的偶数时重新输入,当n是大于2的偶数时,将n分解为两素数之和并输出相应分解式,程序只需要输出一个分解式即可。
【程序5】
#include<
Intisprime(intn)
{/*判断n是否是素数,是则返回1,否则返回0*/
inti;
for(i=2;
if
(1)
return0;
(2);
}
{intn,i;
do{scanf(“%d”,&
n);
}while((3));
/*n不是大于2的偶数时重新输入*/
=n-2;
if(isprime(i)&
&
isprime((4)))/*n分解为两素数之和*/
printf(“%d=%d+%d\n”,n,i-n);
第5页共7页
试题六(15分,每个空格3分)
【问题描述】下面的函数ptos()用来复原压缩过的数据(解压缩),数组p存放压缩后的数据,数组s存放复原后的数据,函数返回复原后的数据个数。
主函数main()调用函数ptos()进行数据复原,然后显示复原后的数据,同时以文本形式写入文件C08.TXT中。
下面简要说明数据的压缩规则:
当原始数据中连续出现M(M>
0)个不同数据时(如:
-23,-9),则在压缩数据中先存放-M,再存放这M个相邻不同的数(如:
-2,-23,-9)。
当原始数据中连续出现N个(N>
1)相同的数据X时(如:
5,5,5,5)。
则在压缩数据中存放N和X两个数(如:
4,5)。
压缩数据中,数据的存放次序与原始数据中的次序相一致,并在最后加上0作为结束标志。
例如原始数据中有以下数据:
-23,-9,21,21,21,21,-7,8,8,8,-7,5,5,5,5
压缩后的数据为:
-2,-23,-9,4,21,-1,-7,3,8,-1,-7,4,5,0
【程序6】
intptos(intp[],ints[])
{
inti,j,k,m;
i=0;
(1);
/*变量初始化*/
while(p[j]!
=0)
m=p[j++];
if(m>
0)
{for(k=0;
k<
m;
k++)
s[i++]=p[
(2)];
j++;
else
{m=-m;
for(k=0;
s[i++]=p[j++];
return(3);
/*返回复原后的数据个数*/
intp[]={-2,-23,-9,4,21,-1,-7,3,8,-1,-7,4,5,0};
第6页共7页
ints[100],n,i;
FILE*fp;
n=ptos((4));
fp=fopen(“C0.8TXT”,(5));
/*以写方式打开文件*/
for(i=0;
{printf(“%4d”,s[i]);
/*显示复原后的数据*/
fprintf(fp,“%4d”,s[i]);
/*复原数据写入文件*/
fclose(fp);
第7页共7页
2008年上海市高等学校计算机等级考试
二级答卷纸(C程序设计)
考生注意:
本大卷纸专供C程序设计考试解题使用。
答案应填写在与试卷相对应的解答栏内。
题号
一
二
三
四
五
六
总分
加分人
复核人
得分
试题一(每小题4分,总分28分)
试题一解答栏
(1)
4*3.14*r*r*r/3或4/3.0*3.14*r*r*r或4.0/3*3.14*r*r*r或4*3.14*pow(r,3)/3
4分
(2)
x%10*10
(3)
15
(4)
j/k=2
*p1=6
2分
(5)
p->
num=20082168或
(*p).num=20082168
(6)
函数getResult()的返回值类型有错误
(7)
next=head;
head=p
评阅人
校阅人
小计
C答卷—1(共4页)
试题二(每小题6分,总共12分)
试题二解答栏
54665(全错为0分,错一个数扣一分)
6分
y
BeijingOI
3分
试题三(每小题6分,总共12分)
试题三解答栏
3,i++)改为for(i=0;
3;
改为scanf(“%f”,&
x[i]);
改为printf(“sum=%f\n”,sum);
发现1个错误得1分
改正一个错误得1分
改为bubbleSort(a,10)或bubbleSort(&
a[0],10);
a[i+1]){改为#18if(a[i]>
改为t=a[i];
a[i]=a[i+1];
a[i+1]=t;
C答卷—2(共4页)
试题四(每小题9分,总共18分)
试题四解答栏
#include<
intn,i;
longs=0,x=1;
scanf(“%d”,&
for(i=1;
=n;
x*=i;
x+=x
printf(“%1d\n”,s);
程序能实现所要求的功能得9分;
否则:
功能4分
结构3分
语法2分
intf(intstart,intend,inta[])
inti,j=0,m;
for(i=start;
=end;
m=sqrt(i);
if(m*m==i&
i%10==i/100)
a[j++]=i;
returnj;
C答卷—3(共4页)
试题五(每个空格3分,总共15分)
试题五解答栏
n%i==0
return1
!
(n>
2&
n%2==0)或n<
=2||n%2==1(其中==0也可以是!
=1,==1也可以是!
如果部分正确,酌情给1-2分
n-i
break
试题六(每个空格3分,总共15分)
试题六解答栏
j=0
j
i
p,s,如果部分正确,可酌情给1-2分
“w”或“w+”,如果部分正确,可酌情给1-2分
C答卷—4(共4页)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上海市 二级 程序设计 试题 答案