期终考试命题稿18.docx
《期终考试命题稿18.docx》由会员分享,可在线阅读,更多相关《期终考试命题稿18.docx(12页珍藏版)》请在冰豆网上搜索。
期终考试命题稿18
浙江工业大学期终考试命题稿
2009/2010学年第一学期
课程名称
C++程序设计I
使用班级
信息学院09级
教师份数
10
学生份数
540
命题人
张健、陈晋音
审核人
张健
命题总页数
8页
每份试卷需用白纸
3大张
命题注意事项:
一、命题稿请用A4纸电脑打印,或用教务处印刷的命题纸,并用黑墨水书写,保持字迹清晰,页码完整。
二、两份试题必须同等要求,卷面上不要注明A、B字样,由教务处抽定A、B卷。
三、命题稿必须经学院审核,并在考试前两周交教务处。
浙江工业大学2009/2010学年
第一学期试卷
课程C++程序设计I姓名__nail_________________________
班级____________________________授课教师
题序
一
二
三
四
五
六
七
八
九
十
总评
计分
试题一、选择题(每题2分,共20分)
(1)若x是double型变量,n是int型变量,执行b,并输入31.25后,x=1.25,n=3。
A、scanf("%d%lf",&n,&x);B、scanf("%lf%d",&x,&n);
C、scanf("%lf%d",&n,&x);D、scanf("%d%,lf",&n,&x);
(2)若变量已经被正确定义,为表示“变量x和y都能被3整除”,应使用的C表达式
是d。
A、(x%3!
=0)||(y%3!
=0)B、(x%3!
=0)&&(y%3!
=0)
C、(x%3==0)||(y%3==0)D、(x%3==0)&&(y%3==0)
(3)while(b)等价于while(x)。
A、x==0B、x!
=0
C、x==1D、x!
=1
(4)若intx=0,*p=&x;则语句a是不正确的。
A、p=&(x+1);B、p=&x;
C、p=&x+1;D、p=&x,p++;
(5)设变量定义如下,则表达式d是正确的。
structstudent{
intnum;
charname[20];
floatscore;
}stud[10];
A、stud[2]=stud[1]+3B、stud[1]==stud[2]
C、stud[1]=stud[1]-stud[2]D、stud[1]=stud[2]
(6)下列程序的输出结果是d。
#include
voidmain()
{inty;
doubled=3.4,x;
x=(y=d/2.0)/2;
printf("(%0.2f,%d)",x,y);
}
A、(0.00,1)B、(0.85,1.7)C、(0.50,1)D、以上都不对
(7)程序段d的功能是将变量u、s中的最大值赋给变量t。
A、if(u>s)t=u;t=s;B、t=u;if(t>s)t=s;
C、if(u>s)t=s;elset=u;D、t=s;if(u>t)t=u;
(8)对于以下递归函数f,调用f(3)的返回值是b。
intf(intn)
{if(n)returnf(n-1)+n;
elsereturnn;
}
A、10B、6C、3D、0
(9)不正确的C程序描述是b
A、每个语句的最后必须有个分号
B、一个C程序的书写格式要求严格,一行只能写一个语句
C、C语言的本身没有输入、输出函数
D、一个C程序总是从main()函数开始执行
(10)若有宏定义如下:
#defineX5
#defineYX+1
#defineZY*X/2
则执行一下程序段后,输出结果是d
inta;
a=Y;
printf(“%d”,Z);
printf(“%d\n”,--a);
A、76B、126C、125D、75
试题二、程序选择题(每空1分,共19分)
1.【程序说明】输入1个正整数n(n>=2),输出菲波那契(Fibonacci)序列的前n项,每行输出6个数。
菲波那契(Fibonacci)序列:
1,1,2,3,5,8,13,……,数列的前两个数都是1,从第三个数开始,每个数是前两个数之和。
运行示例:
Entern:
10
11235813213455
【程序】
#include
main()
{intcount,i,n,x1,x2,x;
printf("Entern:
");
scanf("%d",&n);
x1=x2=1;
printf("%6d%6d",x1,x2);
count=2a
(1);
for(i=1;i<=n-2;i++){
x=x1+x2b
(2);
printf("%6d",x);
count++;
if((i+2)%6==0c(3))
printf("\n");
x1=x2;
x2=xb(4);
}
}
【供选择的答案】
(1)A、count=2B、count=0C、count=1D、count=-1
(2)A、x=x1-x2B、x=x1+x2C、x=x1D、x=2
(3)A、count/6==0B、count%6!
=0C、count%6==0D、count/6!
=0
(4)A、x=x1+x2B、x2=xC、x1=x2D、x1=x
2.【程序说明】
输入100个整数,将其中的前20个数从小到大排序,然后输出这100个数。
#include"stdio.h"
voidsort((5)b)
{inti,k,m,t;
for(i=0;ik=i;for(m=i+1;m(7)c
}
}
voidmain()
{intk,a[100];
for(k=0;k<100;k++)scanf("%d",&a[k]);
(8)a;
for(k=0;k<100;k++)printf("%d",a[k]);}
(5)A、inta,intnB、int*a,intnC、int*a,int*nD、inta[]
(6)A、a[m-1]>a[m]B、a[m-1]a[m]
(7)A、a[k]=a[i];a[i]=a[k];B、a[k]=t;a[k]=a[i];a[i]=t;C、t=a[k];a[k]=a[i];a[i]=t;D、a[i]=a[k];a[k]=a[i];
(8)A、sort(a,20)B、sort(a[],20)C、sort(a[20])D、sort(a[])
3.【程序说明】输入一个正整数n,计算下列算式的前n项之和。
运行示例:
Entern:
2
Sum=0.67
【程序】
#include
main()
{intdenominator,flag,i,n;
doubleitem,sum;
printf("Entern:
");
scanf("%d",&n);
denominator=1;
(9)d;
sum=0;
for(i=1;d(10);i++){
(11)d;
sum=sum+item;
(12)c;
denominator=denominator+2;
}
printf("Sum=%.2f\n",sum);
}
(9)A、flag=0B、flag=-1C、flag=nD、flag=1
(10)A、i>=nB、inD、i<=n
(11)A、item=flag/denominatorB、item=1/denominator
C、item=flag*1.0/denominatorD、item=1.0/denominator
(12)A、flag=-1B、flag=0C、flag=-flagD、flag=flag
4.【程序说明】以下程序的功能是将文件file1.txt的内容输出到屏幕上并复制到文件file2.txt中,请填入适当的内容。
#include
voidmain()
{
FILE(13)
charch;
fp1=fopen(“file1.txt”,”r”);
(14)
while(!
feof(fp1))putchar(fgetc(fp1));
(15)
while(!
feof(fp1))
{ch=fgetc(fp1);
fputc((16));}
fclose(fp1);
fclose(fp2);
}
(13)A、fp1;B、*fp1;C、fp1,fp2;D、*fp1,*fp2;
(14)A、fp1=fopen(“file1.txt”,”w”);B、fp1=fopen(“file2.txt”,”wb”);
C、fp2=fopen(“file1.txt”,”r”);D、fp2=fopen(“file2.txt”,”w”);
(15)A、ch=fgetc(fp1);B、rewind(fp1);
C、ftell(fp1);D、fseek(fp1,1,SEEK_SET)
(16)A、ch,fp2B、ch,fp1C、fp1D、fp2
5.【程序说明】函数create用于建立一个链表(结构体类型标识符node定义如下)。
structnode
{intdata;
structnode*next;};
intn;
structnode*create()
{
structnode*head,*p1,*p2;
n=0;/*全局变量n表示链表结点个数,初值为0*/
head=NULL;/*head表示链表的头,初值为NULL*/
(17)
scanf("%d",&p1->data);
while(p1->data!
=-1)
{n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
(18)
p1=(structnode*)malloc(LEN);
scanf("%d",&p1->data);
}
p2->next=NULL;
(19)
return(head);
}
(17)A、p1=p2=(structnode*)malloc(LEN);B、p1=(structnode*)malloc(LEN);
C、p1=p2=(structnode)malloc(LEN);D、p1=p2=head;
(18)A、p1=p2;B、p2=p1;
C、p2->next=p1;D、p1->next=p2;
(19)A、free(head);B、free(p2);
C、free(p1,p2);D、free(p1);
试题三、程序阅读题(每题5分,共25分)
程序1(-1
2
7
6)
#include
voidmain()
{intm=18,s=0;
do{
switch(m%7){
case2:
m/=2;s+=2;break;
case3:
m/=3;s+=3;break;
case5:
m/=5;s+=5;break;
default:
m--;s--;
};
printf("%d\n",s);
}while(m);
}
程序2()
#include
intmain(*****
********
***
******
*******
*********)
{
inta[6]={5,8,3,6,7,9};
inti,j;
for(i=0;i<6;i++)
{
printf("%d:
",a[i]);
for(j=0;jprintf("*");
printf("\n");
}
return0;}
3.程序3(10.0
0.0
9.0
9.0)
#include
voidmain()
{floata[4][3]={{3,2,5},{-3,2,1},{4,3,2},{5,1,3}};
inti,j;floatv;
for(i=0;i<4;i++)
{
v=a[i][0];
for(j=1;j<3;j++)v+=a[i][j];
printf("%6.1f",v);
printf("\n");
}
}
4.程序4()
#include
#include
#defineLENsizeof(structline)
structline
{intnum;structline*next;
};
voidmain()
{intk;
structline*p,*head;
head=NULL;
for(k=10;k>0;k--){
p=(structline*)malloc(LEN);
p->num=k;p->next=head;head=p;
}
while((p->next)!
=NULL){
printf("%d",p->num);p=p->next;
}}
5.程序5()
#include
voidmain()
{inti=0,n;
chars[10]="298h01";
n=0;
for(i=0;s[i]!
='\0';i++)
if(s[i]<='9'&&s[i]>='0')n=n*10+(s[i]-'0');elsebreak;
printf("%d\n",n);}
试题四、程序设计题(第1,2小题每题10分,第3小题16分,共36分)
1.输入两个正整数m和n(m要求定义并调用函数isprime(x)来判断x是否为素数(素数是除1以外只能被1或自身整除的自然数)。
2.定义函数cal(x,e)计算下列算式的值,直到最后一项的值小于e,函数形参x和e的类型都是double,函数类型是double。
要求调用自定义函数fact(n)计算n的阶乘,调用库函数pow(x,n)计算x的n次幂。
3.定义一个structstudent结构体类型,输入若干个学生的学号、姓名和四门课的成绩,编程实现如下功能(每个功能要求写成一个函数):
1.计算出每个学生的平均成绩以及各分数段的人数(以平均成绩为准,分数段为:
90~100,80~89,70~79,60~69和<60)。
2.计算出各门功课的平均成绩及总平均成绩,并输出。
3.统计平均成绩高于总的平均成绩的学生人数,输出他们的学号、姓名、各科成绩及人数。
4.根据学生平均成绩从大到小排序,并输出经过排序后的学生学号、姓名、各科成绩。