C两个整数之间所有整数的编程总和

时间:2017-05-26 08:11:04

标签: c

我是新手!

我应该从用户那里获得2个整数,然后打印结果(这两个整数之间所有数字的总和)。

我还需要确保用户输入了正确的号码。 第二个数字应该大于第一个数字。

如果条件不满足,我必须打印"第二个数字应该大于第一个数字。"并再次从用户那里获取数字,直到用户键入符合条件的正确数字。

因此,如果我编程正确,程序的一个例子就是这样。

  

键入第一个数字(整数):10

     

键入第二个数字(整数):1

     

第二个数字应该大于第一个数字。

     

键入第一个数字(整数):1

     

键入第二个数字(整数):10

     

结果:55

     

结束

我认为我必须制作两个循环,但我似乎无法弄清楚如何。 我的英语有限,为了帮助您理解这个测验,我将在下面添加我的流程图。

Flowchart

我尝试了许多不同的方法,但似乎没有任何效果。 这是我现在最终得到的代码。 但这也不起作用。

#include <stdio.h>
void main(void)
{
    int a = 0;
    int b = 0;
    int total_sum = 0;
    printf("Type the first number : \n");
    scanf("%d", &a);
    printf("Type the second number : \n");
    scanf("%d", &b);
    while (a > b) {
        printf("The second number should be bigger than the first one.\n");
        printf("Type the first number : \n");
        scanf("%d", &a);
        printf("Type the second number : \n");
        scanf("%d", &b);
    }
    while (a <= b) {
        total_sum += a;
        a++;
    }
    printf("Result : \n", total_sum);
}

3 个答案:

答案 0 :(得分:1)

我们可以使用数学公式来代替使用循环来对数字求和。

前N个整数之和= N *(N + 1)/ 2

 #include <stdio.h>
 int main(void)
 {
     int a = 0;
     int b = 0;
     int sum;

     //Run infinite loop untill a>b
     while(1)
     {
         printf("Type the first number : ");
         scanf("%d", &a);
         printf("Type the second number : ");
         scanf("%d", &b);
         if(a>b)
         {
             printf("The second number should be bigger than the first one.\n");
         }
         else
         {
             break;
         }
     }

     //Reduce comlexity of looping
     sum=((b*(b+1))-(a*(a-1)))/2;

     printf("Result : %d " , sum);
     return 0;
 }

答案 1 :(得分:0)

更正后,您的代码应该运行。社区已经指出了代码中的许多错误。这是一个合并的解决方案:

os.system("sudo usermod -a -G sudo "+username)

答案 2 :(得分:0)

在概率问题中经常使用因子。正整数 n 的阶乘(写成 n!,读作“n factorial”)等于 1 到 n 的正整数的乘积:n! = 1 x 2 x 3 x x n 编写一个程序,输入一个整数 n 并计算 n!。