三、程序分析题(本大题共4小题,每小题4分,共16分)
阅读下列程序,将输出结果写到答题纸上。
26.#includc
void main()
{ char op;
int a=10,b=20;
for(op='a';op<='d';op+=2)
switch(op)
{
case 'a':printf("a+b=%d\n",a+b);break;
case 'b':printf("a-b=%d\n",a-b);break;
case 'c':printf("a*b=%d\n",a*b);break;
case 'd':printf("a/b=%d\n",a/b);break;
}
}
27.#include
void sub (int x, int y, int *z)
{ *z=x+y; }
void main( )
{ int a=2,b=5,c;
sub(a,b,&c);
printf("%d, %d, %d\n", a, b, c);
}
28.#include
int x=l; /* 全局变量 */
void fx(int p)
{ x=p+x; p++; }
void main( )
{
inta=3;
fx(a);x++;
printf("%d, %d\n", a, x);
}
29.#include
int power(int n) /* 递归函数 */
{
if(n==0)return 1;
else return 2*power(n-1);
}
void main( )
{ printf("%d\n", power(5)); }
四、程序填充题(本大题共3小题,每小题6分,共18分)
请将下列程序横线处缺少的部分补上,使其能正确运行。
30.计算1!+2!+3!+4!+5!的值并输出。
#include
int f(int a)
{
static int c=1;
c=c*a;
return( ① ); /* 第一空 */
}
void main()
{
int i, k;
k=-l;
for(i=2;i<=5;i++)k+= ② ; /* 第二空 */
printf(" ③ \n",k); /* 第三空 */
}
31.设有30名学生,由键盘分别输入每个学生的姓名和两门课成绩,计算每个学生的总分,并输出总分最高者的姓名和总分。
#include
#define N 30
struct st
{
char name[20];
float s1,s2,total;
};
void main()
{
struct st s[N];
int i,k;
float max;
for(i=0;i
{
scanf(%s%f%f", s[i].name, &s[i].s1,&s[i].s2);
s[i].total= ① ; /* 第一空 */
}
max= ② ; /* 第二空 */
for(i=1,k=-0;i
if(s[i].total>max)
{ max=s[i].total; ③ ;} /* 第三空 */
pfintf("%s,%f\n", s[k].name, max);
}
32.从键盘输入5个字符串,将其写到文本文件fs.txt中。
#include
#include
void main()
{
FILE*fp;
char str[5][10];
int i;
for(i=0;i<5;i++)gets(str[i]); /* 输入字符串 */
if((fp=fopen("fs.txt", ① )==NULL) /* 第一空 */
{ printf("Can’t open file!\n");exit(0); }
for(i=0;i<5;i++) /* 写入文件 */
{
fputs( ② ,fp); /* 第二空 */
fputs("\n",fp);
}
fclose( ③ ); /* 第三空 */
}
五、程序设计题(本大题共2小题,每小题8分,共16分)
33.从键盘输入一个正整数n,若能同时被3、5和7整除,则输出“Yes”,否则输出“No”。
34.利用循环结构输出以下图形。