Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环赋值时的C语言编程_C_Loops_While Loop - Fatal编程技术网

循环赋值时的C语言编程

循环赋值时的C语言编程,c,loops,while-loop,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\

问题:以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);

}
main()
{
int n,m,cnt=0,和=0;
printf(“输入:”);
scanf(“%d”和“&n”);
while(cnt0&&m!=n)
{
printf(“\b+”,m);
}

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

<>下面是我提出的一个示例解决方案:

#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;
}
接!:)

#包括
int main()
{
int-num;
int-answer=0;
做
{
printf(“\n输入要添加的数字:(输入0退出)”;
scanf(“%d”和&num);
答案=答案+num;
}
而(num!=0);
printf(“答案是%d”,答案);
返回0;
}

上述方法的优点是,您不需要数组,也不必声明要添加的值的数量。这有点像使用计算器进行添加,只需按下“=”按钮。

据我所知,应该使用数组;我是否很清楚在读取输入后应打印
1+5+3-4=5
之类的行的要求?是的,输入n个数字后输出应该是这样的。在这种情况下,需要像数组这样的数据结构来存储inp谢谢你的回复非常感谢,这非常有用谢谢你的回复:)这不会产生要求的输出。
$ 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
#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
#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;
}