问题 问答题

请编写函数fun,它的功能是:求出1~1000之间能被7或11整除,但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过形参指针n返回这些数的个数。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
文件PROG1.C内容如下:
#include<stdio.h>
void fun(int *a,int *n)


void main( )
int aa[1000],n,k;
void NONO( );
fun(aa,&n);
for(k=0;k<n;k++)
it((k+1)%10==0)printf("\n");
else printf("%5d",aa[k]);
NONO( );

void NONO( )
/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
int aa[1000],n,k;
FILE *fp;
fp=fopen("out.dat","w");
fun(aa,&n);
for(k=0;k<n;k++)
if((k+1)%10==0)fprintf(fp,"\n");
else tprintf(fp,"%5d",aa[k]);
fclose(fp);

答案

参考答案:void fun(int *a,int *n) {
int i,j=0;
for(1=1;i<=1000;i++)
if((i%7==0 ||i%11==0)&&i%77!=0){a[j]=i;j++; }
*n=j;

解析: 函数fun中,i循环从1开始到1000结束,取出每一个i值进行判断,将能被7或11整除,但不能同时被7和11整除(即不能被77整除)的i值放入数组a中。循环结束后,j的值(即数组a的个数)通过形参n带回。
主函数中,调用函数fun后,将满足条件的整数按一行10个输出到屏幕上。最后调用NONO函数。NONO函数的功能是:将满足条件的整数输出到文件out.dat中。函数中首先以写的方式创建了文本文件out.dat,然后调用fun函数,将结果输出到文件out.dat中。
虽然程序中的NONO函数涉及文件的处理,但是由于C语言是一种模块化的程序设计语言,fun函数是一个独立的功能模块,而且fun函数中没有对NONO函数进行调用,所以即使没有看明白NONO函数的功能,也不影响对fun函数的编写。
[归纳总结] 等级考试的上机题目中文件的处理通常出现在程序填空题中。主要涉及文件函数的使用,必须掌握常用函数的使用格式,常用的函数有:
(1)fopen(打开文件)和fclose(关闭文件)。
(2)fgetc(读单个字符)和fputc(写单个字符)。
(3)fgets(读字符串)和fputs(写字符串)。
(4)fread(读数据块)和fwrite(写数据块)。
(5)fscanf(以格式化方式读)和fprintf(以格式化方式写)。
(6)feof(测试文件是否结束)。
(7)fseek(文件指针定位函数)。
(8)rewind(文件指针复位函数)。
程序设计题中虽然没有要求对文件进行编程处理,但是程序中通常会给出一个NONO函数,该函数会将程序的运行结果输出到结果文件中,不过考生只需了解该函数的功能,它对于fun函数的编写没有影响。

判断题
单项选择题