c语言问题,求解答~~~

自定义函数factorsum(number),它的功能是返回number的因子和,如factorsum(12)的返回值是16(1+2+3+4+6)。 在主函数中,输入两个正整数m和n(m>=1, n<=1000),调用factorsum函数,输出m-n之间的所有完数,完数就是因子和与它本身相等的数。
要求有多组测试数据,每组输入两个正整数m和n。输出m-n之间的所有完数,"%d "形式

第1个回答  推荐于2017-09-13

#include "stdio.h"

int factorsum(int number)

{

    int i,sum=0;

    for(i=1;i<=number/2;i++)

         if(number%i==0)

              sum+=i;

   return sum;

}

void main()

{

     int m,n;

     int i;

     while(1)

     {

           printf("请输入m和n:");

           scanf("%d %d",&m,&n);

           if(m<1||n>1000||m>n)

           {

                   printf("输入错误,程序中止!\n");

                   break;

           }

           printf("从%d到%d的所有完数是:",m,n);

           for(i=m;i<=n;i++)

               if(i==factorsum(i))

                       printf("%d ",i);

             

           printf("\n");

 

    }

 

 

}

追问

#include
int factorsum(int number);
int main()
{
int m,n,number;
while(scanf("%d%d",&m,&n)){
printf("%d",factorsum(number));
}
return 0;
}
int factorsum(int number)
{
int i,j,s,m,n;
for(i=m;i<=n;i++){
s=0;
}
for(j=1;j<=n;j++){
if(i%j==0)
s=s+j;
}
if(s==i)
return i;
} 请问这个程序为什么运行不了T^T

追答

最明显的就是main函数中的
while(scanf("%d%d",&m,&n)){
printf("%d",factorsum(number));
}
这明显是个死循环
scanf("%d%d",&m,&n)返回的是成功赋值的数量,如果输入正确,这个一直是2
while(2)就成了死循环了。

追问

那个。。。请问要怎么改呢

追答

你的错误还不止这里,你看下我写的,去运行下就知道了。

本回答被提问者和网友采纳
第2个回答  2013-04-08
#include<stdio.h>
void factorsum(int a)
{
int b,i,s;
for(b=6;b<a;b++)
{
s=1;
for(i=2;i<b;i++)
if(b%i==0)
s=s+i;
if(b-s==0)
{
printf("完数有%5d\n",b);
}
}
}
void main()
{
int m,n,k;
printf("please input the m :");
scanf("%d",&m);
printf("please input the n :");
scanf("%d",&n);
if(m>=1&&n<=1000)
k=n-m;
factorsum(k);

}

c语言问题求解!!!谢谢!!!
2、字符串长度问题。字符串赋初值时,系统自动给字符串分配一个空间存储‘\\0’字符结束判定字符。他是一个隐藏字符。求字符长度时,strlen求字符长度时会自动忽略‘\\0’,但sizeof不会,所以求字符长度时,sizeof() = strlen() +1;3、自增运算符的运算机制问题。自增运算符放在变量后面,如a++,...

C语言入门题目,求详细易懂的解答过程。
答案为第一行:Tony。解答:for循环共循环2次,然后strcpy(a,b)比较两串字符大小,如果strcpy值大于0,则a大于b。具体的比较是看字符串的字母的ASCII码的大小,如果相同,再继续比较第二个,这个不赘述。主要看一下name[],对于一维数组来讲,它是元素,对于二维数组来讲,它不是具体的元素,而是代...

C语言菜鸟求高手解答...
1. 第一个问题似乎是一个关于C语言条件判断的疑问。你需要明确表达你的问题,以便得到具体的解答。2. 在C语言中,`m++` 表示先使用变量 `m` 的值,然后将 `m` 的值加1。所以,表达式 `m++ > 5` 首先将 `m` 的值(初始为5)用于比较,然后 `m` 自增。3. 由于 `m` 的初始值是5,...

C语言 计算机题 求大神解答~
1、能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是“a>=10||a<=0”。(D选项)解析:“≥”用“>=”表示,“或”用“||”表示。2、判断char型变量c是否为大写字母的表达式是“(c>='A')&&(c<='Z')”。(C选项)解析:大写字母是A~Z,加上单引号,可以直接用来判断是否符合要求...

C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下。
^是按位异或运算符,需要把a和b的值化为二进制数后进行按位异或就能得到答案。题中,a=3 ,二进制为:0011;b=6,二进制值为:0110。所以(a^b)按位异或后的值为0101也就是5,左移两位后值(二进制)为:010100 也就是 :20

C语言作业,急急急求解答
题分析:这个问题可能是由于软件代码中存在大量的冗余、重复计算或者低效算法等因素导致的。另外,如果软件需要加载大量的数据或者进行网络连接,则也会影响其启动速度。解决方案:为了解决这个问题,我们可以从以下几个方面入手:1.优化程序代码:检查程序中是否存在冗余、重复计算或者低效算法等因素,对代码进行...

计算机有关c语言的一些问题选择 各位大大 求帮忙~~~
第三题:c 理由:这个没什么解释的,记住就行了 第四题:a 理由:同上 第五题:b 理由:赋值运算符的左侧必须是变量,不能是表达式,故d错。%运算符的操作数必须是整型数据,故c错,在C语言中不存在:=运算符,故a错。第六题:c 理由:字符常量要用单撇号括起来 第七题:a c 理由:C中...

C语言题目,求大佬解答
被2整除的数有7个,被5整除的数有1个,所以count为8.数组被赋了10个数据,所以K数组的第11个数为0,跳出循环,对应K[10],所以i为10.答案B

c语言的问题,求助解答。
1. (z>=y>=x)? 1:0 z>=y就是对的,所以为1 ,然后1>=x不对,所以为0,所以整个表达式为0 2. z>=y&&y>=x z>=y对为1 ,y>=x对为1,1&&1,所以答案为1,A

关于C语言的问题,求解答!
6。字符串常量是需要双引号括起来的,只有C符合 7。F表示float,是单精度浮点类型,所以0.512 F是浮点型常量 8。C语言里面没有联合(union),所以在这里它属于合法的标识符 9。同6,字符串常量是需要双引号括起来的,而且双引号必须是成对的,如果字符串里边需要有双引号本身,则需要用转义字符(\\...

相似回答