C 程序读取4位整数并输出数字总和

C 程序读取4位整数并输出数字总和,c,scanf,C,Scanf,我被一个编程入门课程的作业困住了。我们使用的是C。任务是: 编写一个程序,要求用户输入一个四位数的整数,并输出整数中四位数的总和 我尝试过不同的东西,但当我测试程序时,它不起作用。当我编译它时,我没有得到错误,所以当我继续测试它时,它不会给我正确的答案。我尝试过不同的事情,它只是给了我不同的答案,但它仍然是错误的 给我这个是为了测试这个程序:当被要求输入四位整数时,输入1234,答案必须是10 #include <stdio.h> int main(void) { int

我被一个编程入门课程的作业困住了。我们使用的是C。任务是:

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

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

给我这个是为了测试这个程序:当被要求输入四位整数时,输入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);
}
#包括
int
主(空)
{
整数和,数字1,数字2,数字3,数字4;
printf(“输入四位整数:\n”);
scanf(“%d”、&digit1、&digit2、&digit3、&digit4);
数字1=(数字1%1000)/10;
数字2=(数字2%1000)/10;
数字3=(数字3%1000)/10;
数字4=(数字4%1000)/10;
/*算计*/
总和=第1位+第2位+第3位+第4位;
printf(“答案是:%d\n”,总和);
返回(0);
}
一个问题是

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);
一个问题是这个

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

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

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

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

接下来,您需要使用
%
/
运算符从读取的数字中提取各个数字,并最终添加它们。

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

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

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

接下来,您需要使用
%
/
运算符从读取的数字中提取各个数字,并最终添加它们。

问题在于您的
scanf
,它要求您传递的每个参数都有一个格式化程序
%d

因此,与此相反:

scanf("%d", &digit1,&digit2,&digit3,&digit4);
您应该有以下内容(如果您单独输入数字,数字之间留有空格):

这将以四种不同的
int
s读取。如果希望读入一个整数,然后提取各个数字,那么这就足够了:

scanf("%d", &digit1);
int-scanf(常量字符*格式,…)

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


问题在于您的
scanf
,它要求您传递的每个参数都有一个格式化程序
%d

因此,与此相反:

scanf("%d", &digit1,&digit2,&digit3,&digit4);
您应该有以下内容(如果您单独输入数字,数字之间留有空格):

这将以四种不同的
int
s读取。如果希望读入一个整数,然后提取各个数字,那么这就足够了:

scanf("%d", &digit1);
int-scanf(常量字符*格式,…)

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

#包括
main()
{
int n,rem;
整数和=0;
printf(“输入编号”);
scanf(“%d”和“&n”);
而(n!=0)
{
rem=n%10;
总和+=雷姆;
n=n/10;
}
printf(“总和=%d\n”,总和);
}
#包括
main()
{
int n,rem;
整数和=0;
printf(“输入编号”);
scanf(“%d”和“&n”);
而(n!=0)
{
rem=n%10;
总和+=雷姆;
n=n/10;
}
printf(“总和=%d\n”,总和);
}

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

#include<stdio.h>

}

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

#include<stdio.h>

}

首先,不需要输入四个整数变量

需要这样做

#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;  
}
#包括
int main()
{  
int num,sum=0;
/* 
*从用户读取一个数字
*/  
printf(“输入任意数字以查找其数字总和:”);
scanf(“%d”和&num);
/* 
*查找数字的和
*/  
while(num!=0)
{  
/*从num中查找最后一位数字并添加到sum*/
总和+=num%10;
/*在num的工作完成时从num中删除最后一位*/
num=num/10;
}  
printf(“\n位数=%d”,总和);
返回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;  
}
#包括
int main()
{  
int num,sum=0;
/* 
*从用户读取一个数字
*/  
printf(“输入任意数字以查找其数字总和:”);
scanf(“%d”和&num);
/* 
*查找数字的和
*/  
while(num!=0)
{  
/*从num中查找最后一位数字并添加到sum*/
总和+=num%10;
/*在num的工作完成时从num中删除最后一位*/
num=num/10;
}  
printf(“\n位数=%d”,总和);
返回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;
}
#包括
#包括
int main()
{//代码开始
//变量初始化
整数位数,dig1,dig2,dig3,dig4,digi,sum;
//获取输入
printf(“输入4位数字:\n”);
扫描频率(“%d”和数字);
//数字分辨技术
//第1000位数字
dig1=(数字/1000);
printf(“第1000位的数字为:%d\n”,第1位);
//第100位数字
dig2=(数字-(dig1*1000))/100;
printf(“第100位的数字为:%d\n”,第2位);
//第十位数字
数字=((数字/100)*100);
dig3=(数字digi)/10;
printf(“第10位的数字是:%d\n”,第3位);
//单位位数字
dig4=((数字-((数字/10)*10));
printf(“单元位置的数字为:%d\n”,第4位);
//位数和
sum=dig1+dig2+dig3+dig4;
printf(“数字中的数字总和为:%d\n\n”,总和);
//自鸣得意
printf(“这是不是太棒了!为我的技术鼓掌!!!\n\n\n”);
系统(“暂停”);
返回0;
}

以下是基于我的技术。是唐