三、程序分析题(本大题共5小题,每小题5分,共25分)阅读下列程序,将输出结果写到各题右侧的空白处。
第1题main()
{int a[3][4]={1,3,5,7,12,14,16,18,9,6,4,2},j,k,m,n,x;
x=m=n=0;
for(j=2;j>-1;j--)
for(k=0;k<4;k++)
if(x
printf(″a[%d][%d]=%d\n″,m,n,x);
}
输出结果为?
【正确答案】a[1][3]=18
第2题main()
{int x=2,y=-1,z=2;
if(x<y)
if(y<0)z=0;
elsez+=1;
printf(″%d\n″,z);
}
【正确答案】2
第3题struct st
{int i;
int j;
}*p;
main()
{struct st m[]={{10,1},{20,2},{30,3}},
p=m;
printf(″%d\n″,(*++p).j);
}
【正确答案】2
第4题main()
{static char a[]={′*′,′*′,′*′,′*′,′*′};
int i,j,k;
for(i=0;i<5;i++)
{printf(″\n″);
for(j=0;j
for(k=0;k<5;k++)printf(″%c″,a[k]);
}
【正确答案】*************************
第5题main()
{int n,k=1;
for(n=1;n<20;n++)
{k=1;
while(k<=n)
{if(n==k*k)
printf(″%d,″,n);
k++;
}
}
}
【正确答案】1,4,9,16
四、程序填充题(本大题共3小题,每小题6分,共18分)给出下列程序,将横线处缺少的部分补上,使其能正确运行。
第1题图中空白处答案应为:___,___,___。
【正确答案】*(str+k)=fgetc(fp)k++*(str+k)
第2题下面函数将3个学生的数据存入名为“student.dat”的文件(二进制文件)。
#include″stdio.h″
#define SIZE 3
struct student
{long num;char name[10];int age;}stu[SIZE];
void fsave()
{FILE*fp;int i;
if((fp=fopen(″student.dat″,))==NULL)
{printf(″Cannot open file!\n″);exit(1);}
for(fwrite(&stu[i],___,1,fp)!=1)
printf(″File write error!\n″);
fclose(fp);
}
【正确答案】″wb″sizeof(struct student)
第3题下列程序是求短整型正整数的各位上的数字之和并输出。
main()
{short m,;
scanf(″%d″,&m);
while()
{s=s+m%10;
______
}
printf(″%d″,s);
}
【正确答案】s=0m!=0m=m/10
五、程序设计题(第1小题5分,第2、3小题各6分,共17分)
第1题输入一个字符串,按相反次序输出其中的所有字符。
【正确答案】#include main(){char a[80],*p=a,i;gets(p);for(i=strlen(p)-1;i>=0;i--)putchar(*(p+i));}
第2题编一个程序,取出一个字符串的左边n个字符组成新的字符串并输出。原字符串及n从键盘输入。本题要求用指向字符的指针来处理字符中的字符。
【正确答案】#include″string.h″main(){char a[100],b[100],*p_a=a,*p_b=b;int n,i;gets(p_a);scanf(″%d″,&n);for(i=0;i<=""td="">
第3题编程序按下列公式计算e的值(精度为1e-6)。
e=1+11!+12!+13!+…+1n!
【正确答案】#include#define N 3 main(){int i;float e=1,f=1;do{f=f*i;e=e+1/f;}while(1/f>1e-6);printf(″e=%f″,e);}