1

プログラミング入門コースの課題で行き詰まっています。C を使用しています。割り当ては次のとおりです。

ユーザーに 4 桁の INTEGER を要求し、整数の 4 桁の合計を出力するプログラムを作成します。

別のことを試しましたが、プログラムをテストしても機能しません。コンパイルするとエラーが発生しないため、先に進んでテストすると、正しい答えが得られません。私はさまざまなことを試しましたが、それは私に別の答えを与えるだけですが、それでも間違っています。

私はプログラムをテストするためにこれを与えられました.4桁の整数を入力するように求められたら1234を入力し、答えは10でなければなりません

#include <stdio.h>

int
main(void)
{
    int sum,digit1,digit2,digit3,digit4;
    printf("enter four digit integer:\n");
    scanf("%d", &digit1,&digit2,&digit3,&digit4);

    digit1=(digit1%1000)/10;
    digit2=(digit2%1000)/10;
    digit3=(digit3%1000)/10;
    digit4=(digit4%1000)/10;

    /*calculation*/
    sum=digit1+digit2+digit3+digit4;

    printf ("answer is: %d\n",sum);
    return (0);
}
4

9 に答える 9

3

1つの問題はこれです

scanf("%d%d%d%d", &digit1,&digit2,&digit3,&digit4);

そうしないと、1桁しか読み取れません

ウィキペディアを参照してください。

でも・・・こうすればいいのに

scanf("%d", &number);
sum  = 0;
do 
{
    //get a digit 
    sum += number % 10;
    //remove the digit  
    number /= 10;
} while (number > 0);
print ("%d", sum);
于 2012-09-15T19:13:48.677 に答える
3

ユーザー入力を読み取るときは、それを 1 つの数値として読み取ります。

printf("enter four digit integer:\n");
scanf("%d", &digit1,&digit2,&digit3,&digit4);

次のようにする必要があります。

printf("enter four digit integer:\n");
scanf("%d", &number);

%次に、 and/演算子を使用して、読み取った数値から個々の数字を抽出し、最後にそれらを追加する必要があります。

于 2012-09-15T19:14:28.720 に答える
1

問題は、あなたが渡すすべての引数に対してscanfフォーマッタを期待するあなたのです。%d

したがって、これの代わりに:

scanf("%d", &digit1,&digit2,&digit3,&digit4);

これが必要です(数字の間に空白を入れて別々に数字を入力した場合):

scanf("%d", &digit1);
scanf("%d", &digit2);
scanf("%d", &digit3);
scanf("%d", &digit4);

これは、4 つの異なる で読み取られintます。1 つの整数を読み込んで個々の数字を抽出する場合は、これで十分です。

scanf("%d", &digit1);

int scanf ( const char * format, ... );

正常に変換され、割り当てられたフィールドの数を返します

MSDN から

于 2012-09-15T19:15:23.750 に答える
0

まず第一に、数値の桁の合計を求めるために 4 つの整数変数に入力する必要はありません。

このように行う必要があります

#include <stdio.h>  

int main()  
{  
    int num, sum=0;  

    /* 
     * Reads a number from user 
     */  
    printf("Enter any number to find sum of its digit: ");  
    scanf("%d", &num);  

    /* 
     * Finds the sum of digits  
     */  
    while(num!=0)  
    {  
        /* Find the last digit from num and add to sum */  
        sum += num % 10;

        /* Removes last digit from num as its work has been done*/  
        num = num / 10;  
    }  

    printf("\nSum of digits = %d", sum);  

    return 0;  
}
于 2015-08-10T10:03:34.490 に答える
0
#include <stdio.h>

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

    printf("enter a no.");
    scanf("%d",&n);

    while(n!=0)
    {
        rem = n%10;
        sum += rem;
        n=n/10;
    }

    printf("sum is=%d\n",sum);
}
于 2013-08-15T09:35:08.680 に答える