【问题标题】:C max of sums - need to modify it to stop adding the sumsC max of sum - 需要修改它以停止添加总和
【发布时间】:2014-11-12 15:46:14
【问题描述】:

这个程序需要让用户输入数字并计算每个输入数字的因子总和。

它需要这样做,直到用户输入一个奇数且可被 5 整除(它不计算最后一个数字的总和)。然后,它需要列出计算的总和的个数和最大的总和。

我遇到的问题是程序,而不是显示最大总和(最大值),而是显示总和的总和。

suma 是总和变量

#include <stdio.h>
#include <stdlib.h>
main()
{
int x ,i ,suma=0 ,nr=0 ,max=0;



while(1)
{
printf("Introduceti un intreg:\n");
scanf("%d",&x);

for(i=2;i<=x/2;i++)      //the for checks if i is a factor of x, then adds it to the

                         //sum of factors
{
if(x%i==0)
          suma = suma + i;
}

if (x%2!=0 && x%5==0)
          break;
          nr++;

if (suma>=max)
          max=suma;


}

printf("Numarul sumelor calculate este %d\n\n",nr);     //The number of sums calculated is
printf("suma este : %d",max);                           //The maximum sum is


}

【问题讨论】:

  • suma = 0 之前 for
  • 所以我想如果每次最大值只是每次都向旧的总和添加一个新的总和之后我没有使总和为 0,对吧?就这样我明白了。
  • si :) tu entiendes ;)

标签: c sum max


【解决方案1】:

suma 应该在 for 循环之前初始化(因此它会为每个总和重新初始化),而不是在程序停止时。

【讨论】:

  • 当我把它放在 for 之前时,它仍然会添加总和。
【解决方案2】:

es muy bien aqui

#include <stdio.h>
#include <stdlib.h>
main()
{
int x ,i ,suma,nr=0 ,max=0;



while(1)
{
printf("Introduceti un intreg:\n");
scanf("%d",&x);
suma=0;
for(i=2;i<=x/2;i++)      //the for checks if i is a factor of x, then adds it to the

                         //sum of factors
{
if(x%i==0)
       {   suma = suma + i;}
}

if (x%2!=0 && x%5==0)
       {   break;}
          nr++;

if (suma>=max)
         { max=suma;}


}

printf("Numarul sumelor calculate este %d\n\n",nr);     //The number of sums calculated is
printf("suma este : %d",max);                           //The maximum sum is


}

【讨论】:

    猜你喜欢
    • 2021-03-04
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多