1

我在编程入门课程中遇到了一项作业。我们正在使用 C。作业是:

编写一个程序,要求用户输入一个四位数的 INTEGER 并输出整数中四位数的和。

我尝试了不同的东西,但是当我测试程序时它不起作用。当我编译它时,我没有收到任何错误,所以当我继续测试它时,它不会给我正确的答案。我尝试了不同的东西,它只是给了我一个不同的答案,但它仍然是错误的。

我得到了这个来测试程序:当被要求输入四位整数时输入 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

一个问题是这个

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

否则你只读一位数字

参见维基百科

但是......最好这样做

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

当您读取用户输入时,您将其读取为一个数字:

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);

这将读取四个不同int的 s。如果你想读入一个整数然后提取单个数字,那么这就足够了:

scanf("%d", &digit1);

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

返回成功转换和分配的字段数

来自 MSDN

于 2012-09-15T19:15:23.750 回答
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 回答
0

首先,不需要输入四个整数变量来查找数字的数字总和

需要以这种方式完成

#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>
int main(void)
{

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

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

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

printf("answer is: %d\n",sum);
return (0);
}
于 2020-05-08T02:42:50.400 回答
0

下面是基于我的技术。它是通过对数字进行数学分解然后打印出单个结果来完成的。这里:

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

int main ()

{   //Code Begins
//Variable Initialization
int digit, dig1, dig2, dig3, dig4,digi, sum;
//Acquiring input
printf("Enter 4-Digit Number:\n");
scanf("%d", &digit);
//Number resolution technique
//Digit at 1000th place
dig1 = (digit/1000);
printf ("Digit at 1000th place is: %d \n", dig1);
//Digit at 100th place
dig2 = (digit-(dig1*1000))/100;
printf ("Digit at 100th place is: %d \n", dig2);
//Digit at 10th place
digi = ((digit/100)*100);
dig3 = (digit-digi)/10;
printf ("Digit at 10th place is: %d \n", dig3);
//Digit at unit place
dig4 = ((digit-((digit/10)*10)));
printf ("Digit at unit place is: %d \n", dig4 );
//Sum of Digits
sum = dig1+dig2+dig3+dig4;
printf ("Sum of digits in the number is: %d \n\n", sum);
//Self Applaud
printf ("Isn't it Awesome ! A big hand of applaud for my technique !!! \n\n\n");
system ("Pause");
return 0;
}
于 2016-02-16T13:36:49.607 回答
-1

当用户仅输入 4 个数字时,输出正确。当用户添加超过 4 个 no 时,输出不同......

#include<stdio.h>

无效的主要(){

int num,d1,d2,d3,d4,sum;

printf("\nEnter the four digits you wish to add: ");

scanf("%d",&num);

d1=num%10;
num=num/10;
d2=num%10;
num=num/10;
d3=num%10;
d4=num/10;

sum=d1+d2+d3+d4;

printf("\n*The sum of four digits is: %d*",sum);

}

于 2014-12-22T16:26:50.407 回答
-1
#include <stdio.h>
#include <stdlib.h>
//writing program to read four digit integer and print the sum of its digits
//by nirav adatiya
main()
{
    int num,a,b,c,d,result;
    printf("enter four digit number for sum ");
    scanf("%d",&num);
    a=num%10;
    b=num%100/10;
    c=num%1000/100;
    d=num%10000/1000;
    result=a+b+c+d;
    printf("so\na=%d\nb=%d\nc=%d\nd=%d",a,b,c,d);
    printf("\nresult is%d ",result);
}
于 2016-04-12T17:32:09.213 回答