麻烦看看这个小程序

C语言 码拜 6年前 (2015-05-11) 374次浏览 0个评论
 

【问题描述】
输入2 个正整数m 和n(m≥1,n≤1 000),输出m ~n 之间的所有完数,完数就是因子和与它本身相等的数?要求定义并调用函数factorsum(number),它的功能是返回number 的因子和?
下面是我写的程序
#include<stdio.h>
int factorsum( int number);
int main(void)
{

int m,n,i;

printf(“Input m: “);
scanf(“%d”,&m);
printf(“Input m: “);
scanf(“%d”,&m);
printf(“Input n: “);
scanf(“%d”,&n);

for (i=m;i<=n;i++)
{ if (factorsum(i)==i)
printf(“%5d”,i);}
return 0;}

int factorsum(int number)
{
int j,d=0,t ;

for (j=2;j<=number-1;j++){
if (number%j==0) d=d+j;}
t=j+1;
return t;
}

程序不会输出结果为什么

10分
for (j=2;j<=number-1;j++)这里j 应该从1开始,还有返回d 不是j+1
10分
修改如下:

#include<stdio.h>
int factorsum(int number);
int main(void)
{
	int m, n, i;
	printf("Input m: ");
	scanf("%d", &m);
	printf("Input n: ");
	scanf("%d", &n);
	for (i = m; i <= n; i++)
	{
		if (factorsum(i) == i)
			printf("%5d", i);
	}
	return 0;
}
int factorsum(int number)
{
	//int j, d = 0, t;
	int i, d = 0;
	for (i = 1; i <= number - 1; i++) {
		if (number%i == 0) d = d + i;
	}
	//t = j + 1;
	return d;
}

麻烦看看这个小程序

引用 楼主 jzx_606 的回复:

【问题描述】
输入2 个正整数m 和n(m≥1,n≤1 000),输出m ~n 之间的所有完数,完数就是因子和与它本身相等的数?要求定义并调用函数factorsum(number),它的功能是返回number 的因子和?
下面是我写的程序
#include<stdio.h>
int factorsum( int number);
int main(void)
{

int m,n,i;

printf(“Input m: “);
scanf(“%d”,&m);
printf(“Input m: “);
scanf(“%d”,&m);
printf(“Input n: “);
scanf(“%d”,&n);

for (i=m;i<=n;i++)
{ if (factorsum(i)==i)
printf(“%5d”,i);}
return 0;}

int factorsum(int number)
{
int j,d=0,t ;

for (j=2;j<=number-1;j++){
if (number%j==0) d=d+j;}
t=j+1;
return t;
}

程序不会输出结果为什么

#include<stdio.h>
#include<windows.h>
int factorsum( int number);
int main(void)
{
int m,n;
printf(“Input m: “);
scanf(“%d”,&m);
printf(“Input n: “);
scanf(“%d”,&n);
for (int i=m;i<=n;i++)
{
if (factorsum(i)==i)
printf(“%5d\n”,i);
}
system(“pause”);
return 0;
}

int factorsum(int number)
{
int d=0 ;
for (int j=1;j<number;j++)
{
if (number%j==0)
d=d+j;
}
return d;
}

引用 3 楼 ilikehigame 的回复:
Quote: 引用 楼主 jzx_606 的回复:

【问题描述】
输入2 个正整数m 和n(m≥1,n≤1 000),输出m ~n 之间的所有完数,完数就是因子和与它本身相等的数?要求定义并调用函数factorsum(number),它的功能是返回number 的因子和?
下面是我写的程序
#include<stdio.h>
int factorsum( int number);
int main(void)
{

int m,n,i;

printf(“Input m: “);
scanf(“%d”,&m);
printf(“Input m: “);
scanf(“%d”,&m);
printf(“Input n: “);
scanf(“%d”,&n);

for (i=m;i<=n;i++)
{ if (factorsum(i)==i)
printf(“%5d”,i);}
return 0;}

int factorsum(int number)
{
int j,d=0,t ;

for (j=2;j<=number-1;j++){
if (number%j==0) d=d+j;}
t=j+1;
return t;
}

程序不会输出结果为什么

#include<stdio.h>
#include<windows.h>
int factorsum( int number);
int main(void)
{
int m,n;
printf(“Input m: “);
scanf(“%d”,&m);
printf(“Input n: “);
scanf(“%d”,&n);
for (int i=m;i<=n;i++)
{
if (factorsum(i)==i)
printf(“%5d\n”,i);
}
system(“pause”);
return 0;
}

int factorsum(int number)
{
int d=0 ;
for (int j=1;j<number;j++)
{
if (number%j==0)
d=d+j;
}
return d;
}

在factorsum函数中,1是number的自然因子,不必求。
另在(number/2,number)—-不包括number/2 和number—-中没有number的因子,循环范围可以缩小
Int.  d=1;
For(int  i=2; i<=number/2;  i++)

20分
1、你的函数的返回值应该是t=d+j
2、函数内的循环范围可以缩小,只要i<=number/2即可
应该是t=d+1,我看错了

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明麻烦看看这个小程序
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!