循环分配时的C编程

时间:2015-03-14 16:08:17

标签: c loops while-loop

问题:以n为输入。然后取n个数作为输入并打印这n个数的总和。但这次输出格式如下。 例如:

输入:

4
1 5 3 -4

输出1 + 5 + 3 – 4 = 5

我正确得到了输出值,但我不知道如何显示实际的求和序列,特别是在一行中....

我的代码:

main ()
{
    int n,m,cnt=0,sum=0;

    printf("Input: ");
    scanf("%d", &n);

    while(cnt<n)
    {
        scanf("%d\b", &m);
        sum=sum+m;
        cnt=cnt+1;

        if(m>0 && m!=n)
        {
            printf("\b+",m);
        }
        else if (m<0)
        {
            printf("%d",m);
        }
    }

    printf("=%d\n\n",sum);

}

4 个答案:

答案 0 :(得分:1)

这是我提出的一个示例解决方案:

#include <stdio.h>

int main() {
    int n = 0,
        count = 0,
        sum = 0;

    int first = 1;

    printf("How many numbers do you wish to sum? " );
    scanf("%d", &n);

    while (count < n) {
        int m;
        scanf("%d\b", &m);

        if (!first) {
            if (m < 0) {
                printf("- %d ", -m);
            } else {
                printf("+ %d ", m);
            }
        } else {
            first = !first;
            printf("%d ", m);
        }

       sum += m;

       count++;
    }

    printf("= %d\n\n", sum);

    return 0;
}

这是一个示例执行:

$ gcc stackoverflow.c -o stackoverflow
$ ./stackoverflow 
How many numbers do you wish to sum? 5
1 -2 -3 4 10 -40
1 - 2 - 3 + 4 + 10 = 10

答案 1 :(得分:0)

如果要在输入之后打印求和序列,则可以通过使用动态分配的长度为int[]的数组n来解决问题,其中读取输入。在读取输入之后,可以完成实际求和并且可以打印加数,因为它们已经存储在数组中。动态分配可以使用malloc函数完成;在总和之后你还必须使用free函数。

答案 2 :(得分:0)

抓住:!)

#include <stdio.h>
#include <stdlib.h>

int main(void) 
{
    unsigned int n = 0;

    printf( "Enter number of items (0-exit): " );
    scanf( "%u", &n );

    if ( n != 0 )
    {
        int items[n];

        printf( "Enter %u numbers: ", n );

        unsigned int i = 0;

        while ( i < n  && scanf( "%d", &items[i] ) == 1 ) ++i;

        int sum = 0;
        _Bool first = 1;

        n = i;

        for ( i = 0; i < n; i++ )
        {
            sum += items[i];

            if ( !first || items[i] < 0 )
            {
                printf( "%c ", items[i] < 0 ? '-' : '+' );
            }

            if ( first ) first = 0;

            printf( "%u ", ( unsigned int )abs( items[i] ) );
        }

        printf( "= %d\n", sum );
    }

    return 0;
}

输出可能看起来像

Enter number of items (0-exit): 4 
Enter 4 numbers: 1 5 3 -4 
1 + 5 + 3 - 4 = 5

答案 3 :(得分:0)

#include <stdio.h>

int main()
{
    int num;
    int answer=0;
    do
    {
        printf("\nEnter the number(s) to be added: (enter 0 to quit) ");
        scanf("%d", &num);
        answer=answer + num;
    }
    while (num!=0);
    printf("Answer is %d", answer);
    return 0;
}

上述方法的优点是您不需要阵列,也不必申报号码。您要添加的值。有点像使用计算器添加,只需按下&#34; =&#34;完成后按钮。