返回整数整数之和的C程序

时间:2019-02-25 08:03:25

标签: c

#include <stdio.h>
int main()
{

int sum=0, prod=1, a, b;

printf("Enter a number: \n");

scanf("%d",&a);

while (a!=0)

sum = sum + a%10;
    a = a/10;

while (b!=0)

prod = prod + b%10;
    b = b/10;


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


return 0;
}

此C程序返回给定整数的数字的和与乘积,但是我希望有人为我分解它,而且当我运行它时,它不起作用,所以有人可以纠正我吗?

3 个答案:

答案 0 :(得分:1)

%是模运算,即,它提醒您除数除法。在您的情况下,操作% 10有效地返回数字的最后一位。您将此数字加到prod变量中,该变量代表数字的总和。对当前数字求和后,您将执行下一个主要操作/ 10,它是整数除法,只删除数字的最后一位。

答案 1 :(得分:0)

您的代码缩进得很厉害,并且缺少必要的块定界符<Grid.... ~~~ <Label Grid.Row="0" Grid.Column="1" HorizontalOptions="Start" VerticalOptions="Start" Text="{Binding Address1}" FontSize="12" TextColor="Black" /> <Label Grid.Row="0" Grid.Column="1" HorizontalOptions="Start" VerticalOptions="End" Text="{Binding City}" FontSize="10" TextColor="Black" /> <Label Grid.Row="0" Grid.Column="1" HorizontalOptions="End" VerticalOptions="End" Text="{Binding St}" FontSize="10" TextColor="Black" /> ~~~ </Grid> 。此外,{}尚未初始化,您需要计算总和,而不是数字的乘积。

这是更正的版本:

b

答案 2 :(得分:0)

从用户那里读取号码时,请读取一个字符串。

#include <ctype.h>
#include <stdio.h>
#include <string.h>

int main(void) {
    char buf[999];
    while (fgets(buf, sizeof buf, stdin)) { // read a string rather than scanf an integer
        buf[strcspn(buf, "\n")] = 0; // remove trailing newline
        char *p = buf;
        int invalidflag = (*p == 0);
        unsigned sum = 0;
        unsigned product = 1;
        while (*p) {
            if (isdigit((unsigned char)*p)) {
                sum += *p - '0';
                product *= *p - '0';
            } else {
                invalidflag = 1;
                break;
            }
            p++;
        }
        if (invalidflag) {
            printf("input = \"%s\" ==> INVALID INPUT\n", buf);
        } else {
            printf("input = \"%s\"; sum = %d; product = %d\n", buf, sum, product);
        }
    }
    return 0;
}

See ideone.com/ZLkOfJ