簡體   English   中英

在 C 中使用 while 循環計算一個數字所有數字的總和

[英]sum of all the digit of a number using while-loop in C

我正在嘗試解決問題(如標題所述)。 我實際上已經了解到我可以使用模運算符(%) 來做到這一點。 但是我寫的第一個代碼是使用while-loop ,所以我試圖完成代碼。

這是代碼

int main()
{
 char arr[1000000];
 int i = 0;
 int sum = 0;

    printf("type the number = ");
    scanf("%s", arr);

    while(arr[i] != '\0'){
        sum = arr[i] + sum;
        i++;
}

printf("the total number is = %d", sum);

所以問題是它實際上打印出了大量的數字。我想這是因為數組在char中,有人可以幫我如何將值更改為int嗎?

  1. 您需要從數字代碼中減去代碼'0'

這里有兩個版本(我添加了一些邏輯來接受開頭帶有+ & -的數字):


int sumdigitsStr(const char *num)
{
    int sum = 0;
    int first = 1;
    while(*num)
    {
        if(isdigit(*num)) {sum += *num - '0'; first = 0;}
        else 
        if(first && (*num == '-' || *num == '+'))
        {
            first = 0;
            num++;
            continue;
        }
        else
        { 
            sum = -1; break;
        } //error string contains non digits
        num++;
    }
    return sum;
}

int sumdigits(long long num)
{
    int sum = 0;
    do
    {
        sum += abs((int)(num % 10));
    }while((num = num / 10));
    return sum;
}

#include <stdio.h> int main() { int n; scanf("%d", &n); int d, sum = 0; while (n != 0) { d = n % 10; sum = sum + d; n = n / 10; } printf("sum of digits is : %d", sum); return 0; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM