8.该程序运行的结果是【9】。
#include<conio.h>
#include<stdio.h>
#define M 100
void fun(int m,int *a,int *n)
{ int i,j=0;
for(i=1;i<=m;i++)
if(i%7==0||i%11==0)
a[j++]=i;
*n=j;
}
main()
{ int aa[M],n,k;
clrscr();
fun(10,aa,&n);
for(k=0;k<n;k++)
if((k+1)%20==0)printf(″\n″);
else printf(″%4d″,aa[k]);
printf(″\n″);
}
【参考答案】
【9】 ###“7”(#表示空格)
9.下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中,请填空。
#include <stdio.h>
FILE *fp;
{ char ch;
if((fp=fopen(【10】))==NULL)exit(0);
while((ch=getchar( ))!=′@′)fputc(ch,fp);
fclose(fp);
}
【参考答案】
【10】 “bi.dat”,“w”或“bi.dat”,“w+”
10.以下程序将数组a的4个元素和数组b的6个元素写到名为lett.dat的二进制文件中,请填空。
#include <stdio.h>
main()
{ FILE *fp;
char a[4]=″1234″,b[6]=″abcedf″;
if((fp=fopen(″【11】″,″wb″))=NULL)exit(0);
fwrite(a,sizeof(char),4,fp);
fwrite(b,【12】,1,fp);
fclose(fp);
}
【11】 lett.dat
【12】 6*sizeof(char)
11.以下程序输出的结果是【13】。
main()
{ int a=5,b=4,c=3,d;
d=(a>b>c);
printf(″%d\n″,d);
}
【参考答案】
【13】 0
12.以下函数用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。请填空。
#include <conio.h>
#include <stdio.h>
int fun(int *s,int t,int *k)
{ int i;
*k=0;
【14】
if(s[*k]<s[i]*k=i;
return【15】;
}
main()
{
int a[10]={876,675,896,101,301,401,980,431,451,777},k;
clrscr();
fun(a,10,&k);
printf(″%d,%d\n″,k,a[k]);
}
【参考答案】
【14】 for(i=0;i<t;i++)
【15】 0
13.以下程序段中,错误的行号是【16】。
① #include <stdio.h>
② main()
③ { char str[14];str[ ]={″I love China″};
④ printf(″%s″,str);
⑤ }
【参考答案】
【16】 3行
14.设x和y均为int型变量,且x=1,y=2,则表达式double(1+x/y)的值为【17】。
【参考答案】
【17】 1.000000
15.设有以下定义和语句,则*(*(p+2)+1)的值为【18】。
int a[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
【参考答案】
【18】 60
16.以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,若一维数组中的数据是2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。删除后,数组中的内容应该是2 3 4 5 6 7 8 9 10。
请填空。
#include <stdio.h>
#define N 80
int fun(int a[ ],int n)
{ int i,j=1;
for(i=1;i<n;i++)
if(a[j-1]【19】a[i])
a[j++]=a[i];
【20】;
}
main()
{ int a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;
printf(″The original data :\n″);
for(i=0;i<n;i++)printf(″%3d″,a[i]);