C语言:我想在插入负数时添加所有正整数

时间:2017-12-07 08:08:56

标签: c

我想在输入负数时添加所有正整数。

Click for Example

int number;
int total;
int loopcount;
int a;
number = 0;
a = 0;
total = 0;

for(loopcount = 0; loopcount >=0; loopcount = loopcount + 1)
{
    printf("Enter Integer: ");
    scanf("%d", &number);
    a = number;

    if (a >= 0)
    {
        total = total + number;
    }
    else if(a < 0)
    {
        printf("Total positive int = %d\n", &total);
        break;
    }
}

2 个答案:

答案 0 :(得分:1)

问题在于:

printf("Total positive int = %d\n", &total);
                                    ^

而不是打印total变量的值,而是打印它的地址。删除&。 正确的方法是:

printf("Total positive int = %d\n", total);

答案 1 :(得分:0)

您的代码中存在一个小错误:

printf("Total positive int = %d\n", &total);
                                    ^

当它改为:

printf("Total positive int = %d\n", total);

更简单的版本看起来像:

#include<stdio.h>

int main(void)
{
    int number = 0;
    int total = 0;

    while(1)
    {
        printf("Enter Integer: ");
        scanf("%d", &number);

        if (number >= 0)
        {
            total += number;
        }
        else if(number < 0)
        {
            total += number;
            printf("Total positive int = %d\n", total);
            break;
        }
        else
        {
            ;
        }
    }

    return 0;
}

此代码将执行其所说的内容,但如果未插入有效输入,它也会执行不同的操作。因为,它不会处理非数字的输入。

这是一个负责验证输入并且仅允许数字的那个。

下面这个版本有很多需要改进的地方,但我更喜欢这种方式让学习者理解代码并进一步改进。

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

int main (void) 
{ 
    char str[10] = { 0 }; //Assuming that the number can only be restricted to 9 digits. Change as required!
    char *ptr = NULL;
    double ret = 0.0;
    double total = 0.0;

    printf("Enter numbers: ");

    while(1)
    {
        str[0] = '\0';

        scanf("%s", str);
        ret = strtod(str, &ptr);
        if(ret == 0.0)
        {
           if(ptr != NULL)
           {
               printf("\nNot a number!");
               continue;
           }
           else
           {
               total += ret;
           }
        }
        else if(ret < 0.0)
        {
           total += ret;
           break;
        }
        else
        {
           total += ret;
        }
    }

    printf("\n%lf", total);

    return(0);
}