期终考试命题稿18Word格式文档下载.docx
《期终考试命题稿18Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《期终考试命题稿18Word格式文档下载.docx(12页珍藏版)》请在冰点文库上搜索。
%d%lf"
&
n,&
x);
B、scanf("
%lf%d"
x,&
n);
C、scanf("
D、scanf("
%d%,lf"
(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<
stdio.h>
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>
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;
"
);
scanf("
%d"
x1=x2=1;
printf("
%6d%6d"
x1,x2);
count=2a
(1);
for(i=1;
i<
=n-2;
i++){
x=x1+x2b
(2);
%6d"
x);
count++;
if((i+2)%6==0c(3))
\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!
(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;
n-1;
i++){
k=i;
for(m=i+1;
m<
n;
m++)if(c(6))k=m;
(7)c
voidmain()
{intk,a[100];
for(k=0;
k<
100;
k++)scanf("
a[k]);
(8)a;
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]C、a[k]<
a[m]D、a[k]>
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];
D、a[i]=a[k];
(8)A、sort(a,20)B、sort(a[],20)C、sort(a[20])D、sort(a[])
3.【程序说明】输入一个正整数n,计算下列算式的前n项之和。
运行示例:
Entern:
2
Sum=0.67
{intdenominator,flag,i,n;
doubleitem,sum;
"
scanf("
denominator=1;
(9)d;
sum=0;
for(i=1;
d(10);
i++){
(11)d;
sum=sum+item;
(12)c;
denominator=denominator+2;
Sum=%.2f\n"
sum);
(9)A、flag=0B、flag=-1C、flag=nD、flag=1
(10)A、i>
=nB、i<
nC、i>
nD、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中,请填入适当的内容。
{
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)
&
p1->
data);
while(p1->
data!
=-1)
{n=n+1;
if(n==1)
head=p1;
else
p2->
next=p1;
(18)
p1=(structnode*)malloc(LEN);
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->
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)
voidmain()
{intm=18,s=0;
do{
switch(m%7){
case2:
m/=2;
s+=2;
break;
case3:
m/=3;
s+=3;
case5:
m/=5;
s+=5;
default:
m--;
s--;
};
%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;
j<
a[i];
j++)
printf("
*"
return0;
3.程序3(10.0
0.0
9.0
9.0)
voidmain()
{floata[4][3]={{3,2,5},{-3,2,1},{4,3,2},{5,1,3}};
floatv;
for(i=0;
i<
4;
i++)
v=a[i][0];
for(j=1;
j<
3;
j++)v+=a[i][j];
%6.1f"
v);
}
4.程序4()
malloc.h>
#defineLENsizeof(structline)
structline
{intnum;
structline*next;
{intk;
structline*p,*head;
for(k=10;
k>
0;
k--){
p=(structline*)malloc(LEN);
p->
num=k;
p->
next=head;
head=p;
}
while((p->
next)!
=NULL){
p->
num);
p=p->
next;
}}
5.程序5()
{inti=0,n;
chars[10]="
298h01"
;
s[i]!
='
\0'
i++)
if(s[i]<
9'
s[i]>
0'
)n=n*10+(s[i]-'
elsebreak;
n);
试题四、程序设计题(第1,2小题每题10分,第3小题16分,共36分)
1.输入两个正整数m和n(m<
n),求从m到n之间(包括m和n)所有素数的和。
要求定义并调用函数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.根据学生平均成绩从大到小排序,并输出经过排序后的学生学号、姓名、各科成绩。