循环结构
#include <stdio.h>intfun()
{
int i,j,s,sum=0;
for(j=2;j<1000;j++)
{
s=j;
for(i=1;i<j;i++)
{
if((j%i)==0)
{
s=s-i;
}
}
if(s==0)
{
sum=sum+j;
}
return sum;
}
void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *wf ;
int a;
wf = fopen("out.dat","w") ;
a=fun() ;
fprintf(wf, "2-1000之间的完数之和为:%d\n", a) ;
}
int main( )
{
printf("2-1000之间的完数之和为:%d\n",fun());
NONO ();
return 0;
}
用fun函数计算1000以内的所有完数之和,运行不了,请问代码哪里错了?
谢谢 你判断的语句写到for循环外面了
#include <stdio.h>
intfun()
{
int i,j,s,sum=0;
for(j=2;j<1000;j++)
{
s=j;
for(i=1;i<j;i++)
{
if((j%i)==0)
{
s=s-i;
}
}
if(s==0)
{
sum=sum+j;
}
}
return sum;
}
void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *wf ;
int a;
wf = fopen("out.dat","w") ;
a=fun() ;
fprintf(wf, "2-1000之间的完数之和为:%d\n", a) ;
}
int main( )
{
printf("2-1000之间的完数之和为:%d\n",fun());
NONO ();
return 0;
} 楼上正解。
不过你的程序效率有点低,下面这个程序效率则快很多,可以参考一下。#include<stdio.h>
unsigned result;
unsigned short i, j, pds;
FILE* file = fopen("out.dat", "w");
int main() {
for (i = 1; i < 1000; ++i) {
for (j = i << 1; j < 1000; j += i) {
pds += i;
}
}
for (i = 1; i < 1000; ++i) {
if (pds == i) {
result += i;
}
}
printf("2-1000之间的完数之和为:%d\n", result);
fprintf(file, "2-1000之间的完数之和为:%d\n", result);
fclose(file);
return 0;
} 先找一个错误:!
第14行,似乎if语句里面。有{,却没有}。少一个括号,不完整 永恒的蓝色梦想 发表于 2020-7-12 08:07
楼上正解。
不过你的程序效率有点低,下面这个程序效率则快很多,可以参考一下。
谢谢啦
页:
[1]