void fun函数中没有return语句,也就是没有返回值怎么能在主函数中用呢?请大神帮忙看看这道题。

三、程序设计题
请编写函数fun,其功能是: 将所有大于1小于整数m的非素数存入xx所指数组中, 非素数的个数通过k传回。prime函数是判断一个整数是否为素数,是返回1,否则返回0。
例如,若输入:17,则应输出:4 6 8 9 10 12 14 15 16。
注意: 部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容, 仅在函数fun的花括号中填入你编写的若干语句。

给定源程序:
#include <stdio.h>
int prime ( int m )
{ int k = 2;
while ( k <= m && (m%k))
k++;
if (m == k )
return 1;
else return 0; }
void fun( int m, int *k, int xx[] )
{

}
main()
{ int m, n, zz[100];
void NONO ( );
printf( "\nPlease enter an integer number between 10 and 100: " );
scanf( "%d", &n );
fun( n, &m, zz );
printf( "\n\nThere are %d non-prime numbers less than %d:", m, n );
for( n = 0; n < m; n++ )
printf( "\n %4d", zz[n] );
NONO(); }
void NONO()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,
输出数据,关闭文件。 */
int m, n, zz[100];
FILE *rf, *wf ;

rf = fopen("c:\\test\\in.dat","r") ;
wf = fopen("c:\\test\\out.dat","w") ;
fscanf( rf, "%d", &n );
fun( n, &m, zz );
fprintf(wf, "%d\n%d\n", m, n );
for( n = 0; n < m; n++ )
fprintf(wf, "%d\n", zz[n] );
fclose(rf) ;
fclose(wf) ; }
答案:
***************************************
k=0;
for(int i=2;i<m;i++)
{ if(isPrimeNumber(i)!=true)
{ k++;
*(xx+k-1)=i; }}

函数值有xx[]返回,C/C++中如果函数传递的参数是数组的话,实际上是传递的数组的头指针,在函数里访问的数组实际上就是原来的数组,函数里面的值改变了外面的值也同时改变了,所以不需要另外返回值。
温馨提示:答案为网友推荐,仅供参考
相似回答