资源描述
IB] for循环执行的输出是123456789
[D] for循环体语句执行9次
[B] int n=10,a[n];
[D| int a[10]=0;
3.14
[A] *q=p;
[B] *q=&p;
[C] q=p
[D] q=&p
浙江理工大学
C程序设计试题(十_)
[注意]所有答案写在单张的答题卷上,考试结束递交答卷,试卷不必递交。
一、单项选择题(此题共20分,每题2分)一个C程序的执行是从—
[A] 本程序的main函数开始,到main函数结束
[B] 本程序的第一个函数开始,到本程序的最后一个函数结束
[C] 本程序的main函数开始,到本程序的最后一个函数结束
[D] 本程序的第一个函数开始,到main函数结束⑵设有以下定义:
int a=0; double b=1.25; char c='A';
#define d 2
那么下面语句中错误的选项是―⑵
[A] a++;[B] b++;[C] C++;[D] d++;设有以下定义和输入语句,要使x、y和z的值分别为10, 3.1和A,程序运行后,正确的输入 数据的方式是—⑶―。
int x;float y;char z;
scanf("%d%f%c",&x,&y,&z);
[A] 10 3. 1 A[B] 10,3.1,A
[C] 10 3.1A(D] 103.1A判断int型变量x是否为IWxWIO0的偶数,可以用表达式—⑷—。
[A] IWxWlOO && x%2==0|B]x>=l &&xv=100&&x%2==0
[C] x>=l && x<=100 && x==2n[D] x>=l 11 x<=100 && x%2==0⑸ 设有以下定义intx=l,y=2;,执行赋值语句x=(x>y)?x+l:y+2;后x和y的值分别是—⑸.
[A] 1 和 2[B] 2 和 4[C] 4 和 4[D] 4 和 2设有程序段
for(i=l;iv]();i++) {printf(”%d",i);i++;} 以下表达正确的选项是—(6) _一。 IA] for循环执行的输出是13579 [C] for循环体语句执行10次以下能正确进行数组定义的是—(7)—。
[A] int a(10);
[CJ #define SIZE 1()
int a[SIZE];(8)
(8)
假设要建立如下图的存储结构,且己有定义fk)atp=3.14,*q;,那么正确的赋值语句是—(8) q p(9)以下语句执行后屏幕上将显示_(9)__。
char s 1 [ ]=HABCn,s2[ ]=,,XYZ,,;strcpy(s2,s 1 );s2[2]='\0';prin【f("%s,%s",s 1 ,s2);
[A] ABC, ABC [B] XYZ, XYZ [C] ABC, AB[D] XYZ, XY(10)表达式2&3的结果值为(10)
[A]lIB] 2
(10)表达式2&3的结果值为(10)
[A]lIB] 2
[C]3
[D|5
(ID
(12)
二、程序填空题(此题共30分,每题2分)
阅读以下程序说明和程序代码,在每题提供的假设干可选项中,挑选一个最正确的选项。 ⑴【程序说明】打印数字金字塔,运行结果如右图示。
【程序代码】
# include<stdio.h>
B^GAOSCXexamXendXOS-Ax.fill
int i,j;
for(i=l;i<=5;i++)(
for(j=5-i;— (11)
printf("");
for(j=l; _(12) _;j++)
(13)
(13)
【选项】
[A]
[A]
[A]
[C]
J<=1
j<=2*i
[B] j==l
[B] j==2*i
1£
2222=1
33333
4444444
555555555
Press any key to continue..- ±1I出
[C] j>=l
[C] j<=2*i-l
[B] printf(”%d”,i);
[D] printfCT');
[D] j>l
[D] j==2*i-l
【程序说明】计算1~99之间的素数和。prime函数用于判断任意一个数是否是素数,假设 是素数那么返回1,否那么返回0。其中数值1和2直接被认定为非索数。
【程序代码】
# include<stdio.h>
# include<math.h>
int m,i,s=0;
int prime(int);
for(m=l;m<=99; (14) )(if(—(15)
s+=m;
)
printf("s=%d,,,s);
)
—(16) —{
int i,t=l;
if(x==l| |x==2) — (17)
for(i=2;i<=sqrt(x);i++)if (x%i==O){
t=0; break;)
_ (18) _
}
【选项】
(14)
[A] m++;
[B]
m=m+2;
[C] m+2
[D] m+=2
(15)
[A] prime(m)=l
[B]
prime(m)
[C] !prime(m)
[D] prime(x)!=0
(16)
[A] int primc(int m)
[B] int prime(int)
[C] int prime(int x)
[D] void prime(int
x)
(17)
[A] t=0;break;
[B]
return t;
[C] t=0;return t;
[D] t=0;
(18)
[A] return t;
[B]
return;
[C];
[D] return t
(1) 【程序说明】任意输入•个少于80个字符的字符串,统计字符串中的阿拉伯数字的个 数。程序运行结果如右图所示。
回“G:\05C\exam\end\06-A ■■
【程序代码】
There are 10 apples.▲
阿拉伯数字有2个。
Press any key to continue.. \ M i出
# include<stdio.h>
void main()(
char str[80],*p;
int s=0;
—(19)—
—(20)—
_ (21) _(if(—(22)—)
s++;_ (23) _
}
printf(”阿拉伯数字有%d个。\n”,s);
【选项】(19) [A] gets(str);
[C] scanf("%s'\&str);
(20) [A] p=&str;[B] p=str;
(21) [A] while(p==*\0')
[C] while(p!=\0')
(22) [A] *p>=48 && *p<=57
[C] *p>=0 && *p<=9
(23) [A] p++;
[C] *p++;
(24) [A] gets(str);
[C] scanf("%s'\&str);
(25) [A] p=&str;[B] p=str;
(26) [A] while(p==*\0')
[C] while(p!=\0')
(27) [A] *p>=48 && *p<=57
[C] *p>=0 && *p<=9
(28) [A] p++;
[C] *p++;
[B] gets(&str);
ID] scanf("%c”,&str[i]);
[CJ *p=&str;ID] *p=str;
[B] while(*p=='\0')
[D] while(*p!='\0')
[B]*p>=48 || *p<=57
[D]*p>=0 || *p<=9
田]P+1;
[D] str++;
(4)【程序说明】定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天?程 序运行结果如以下图所示。注意闰年问题。(提示:能被4整除且不能被100整除或能被400 整除的年份是闰年)
please input the date <> : 2006-6-1▲ |
Today is the 152st day in 2006.
Press any key to continue...
【程序代码】
#include<stdio.h>(24)
int mon[12]={31,28,31,30,31,30,31,31,30,31,30,31},i,days=0;printf("please input the date(yyyy-mm-dd):");
scanf("%d-%d-%d",&today.year,&today.month,&today.day);if(today.year%4==0 && today.year%100!=0 11 today.year%400==0)
mon(l]=29;for(i=0;i<today.month-l;i++)
days=days+mon[i];(25)
printf("Today is the %dst day in %d.\n"zdays,today.year);
【选项】
(24) [A] struct date{
int year; int month; int day;
I struct date today;
[C] struct date{ int year; int month; int day;
I; struct today;
(25) [A] days=days+day;
[C] days=days+today
[B] struct {int year;
int month;int day;
} today;[DI struct date{
int year;int month;
int day;} today
[B] days=days+today.day;[D] today.day =days+today.day;
三、程序阅读题(此题共20分,每题2分)
阅读以下程序并回答以下问题,在每题提供的假设干可选答案中,挑选一个正确的答案。
(1) 【程序代码】
# include<stdio.h>
void main()(
int x=l,y=2,z;
scanf("%d",&z);
switch(z%2) {//®case l:z=x*y;break;
default:z=x/y;
}
printf(”%d”,z);
}
【选项】程序运行时,输入分别是1和2的情况下,输出的结果分别是__(26)__。
[A] 2 和 0[B] 2 和 0.5[C] 0 和 2[D] 0. 5 和 2如果将上述程序代码标示为①行中switch语句括号内的表达式改为z%2-0,那么程序运行 时,输入分别是1和2的情况下,输出的结果分别是_(27)__。
[A] 2 和 0[B] 2 和 0.5[C]()和 2[D] 0. 5 和 2
(2) 【程序代码】
# include<stdio.h>
void main()(
inta[5]={l,3,2,5,4},i,j,k,t;
for(i=0;i<5;i++)(k=i;
for(j=i+l;j<5;j++)if(a[i]<a[j])//②
k=j;t=a[i];a[i]=a[k];a[k]=t;
)
for(i=0;i<5;i++)printf("%d",a[i]);
【选项】
(28) 程序运行时输出的结果是—(28)—o
[A] 12345[B] 54321[C] 13254如果将上述程序代码标示为②行的语句改为if(a[k]<a[j]),
_(29)_
[A] 12345
[D] 45321那么程序运行时输出的结果是
[B] 54321[C]
13254[D] 45321
⑶【程序代码】# include<stdio.h> void main()(
int m=17,s=0;while(m>=l)( m/=2; s+=2; printf("m=%d,s=%d\n",m,s);
)
}
【选项】
(30)(31)
(32)程序运行时,while循环执行了—(30)—次。
[A] 0[B] 4程序运行时,第1行输出—(31)—o
[A] m=17, s=0[B] m=8, s=2程序运行时,最后一行输出_(32)__。
[A] m=0, s=10[B] m=l,s=8[C]
[C][C]
[D]17m=8. 5, s=2
m=l, s=10(33)
如果将代码中while判断条件改为while(m!=0),那么while循环将[A]一次也不执行[B]无法停止
[C]执行4次[D] m=9, s=2
[D]护2, s=6_(33)—o
H)]执行5次
⑷【程序代码】# include<stdio.h> void fl(int x)(
x=x+l;
}
void f2(int *y)(
*y=*y+l;
}
void main()(
int x;
x=15;
fl(x);printf("%o,%d\n",x,x); x=15;
f2(&x); printf("%o,%d\n",x,x);
}
【选项】(34)程序运行时,第1行输出—(34)
[C] 17,15
[D] 20, 16
[A] 15,15[B] 16,16(35)程序运行时,第2行输出—(35)
[A] 15J5[B] 16,16
(35)程序运行时,第2行输出—(35)
[A] 15J5[B] 16,16
[C] 17,15
[D]20,16
四、程序设计题(此题共30分,每题10分)
(1)编写程序,求解ax2+bx+c=O方程的根。(提示:求根公式为x=
-b±^!b2 -4ac)
要求从键盘上输入系数a、b、c,根据以下几种情况分别进行求解:
• a=0,输出“不是一元二次方程”
• a/0且b2-4ac=0,求解并输出两个相等实根。
• aAO且b2-4ac>0,求解并输出两个不等实根。
• a尹0且b2-4ac<0,输出“没有实根”。
(2)编写程序,定义计算阶乘的函数intfact(intx),在main。函数中调用fact函数计算求和
20 1
式 s=y-o
笊!
(3)编写一•个统计平均成绩的程序。文件“stu.txt”中记录了一批成绩数据。请输出所有成 绩和平均成绩。文件“stu.txt”中的数据和程序运行结果分别如以下图所示。
《C程序设计》试题11考试答案与评分标准
(一)、单项选择题(每题2分,总分值20分)
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
A
D
C
B
D
D
C
D
C
B
(二)、程序填空题(此题共30分,每题2分)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)
(20)
(21)
C
C
B
A
B
C
C
D
A
B
B
(三)程序阅读题(此题共20分,每题2分)
(26)
(27)
(28)
(29)
(30)
(31)
(32)
(33)
(.34)
(35)
A
C
D
B
C
B
A
D
C
D
(四)、程序设计题(此题共30分,每题10分)
1 ttinclude <stdio.h>
#include <math.h>
int main()
{
int a,b,c;
double p;
scanf("%d%d%d”,&a,&b,&c);
p=b*b*-4*a*c;
if(a==O)printfC不是一元二次方程\n“);
else if(p<0)printf(”没有实根 \n”);
else
printf(”%lf%lf\n”,(-1.0*b+p)/2*a,(-1.0*b-p)/2*a); return 0;
}
2 #include <stdio.h>
int fact(int x)
(
int s=x,i;
for(i=2;i<x;i++)s*=i;
return s;
}
int main()
(
int i;
double s=0.0;
for(i=l;i<=20;i++)s+=l/fact(i);
printf(”%lf\n”,s);
return 0;
}
3 ^include <stdio.h>
int main()
double sum=0,tmp;
int c=0;FILE *p=fopen(,,stu.txt,,;,r"); while(!feof(p))
(fscanf(p,"%lf",&tmp);
printf("%O.llf\n",tmp);C++;
sum+=tmp;
)printf("Average Score=%0.llf\n",sum/c); fclose(p);
return 0;
展开阅读全文