我试图提示用户输入一个号码,然后提取他们输入的号码,并将他们输入的号码的数字相加。他们只能输入一次号码。我的代码如下:
printf("\nPART 2: EXPRESSIONS SUM\n\n");
printf("Enter 5-digit integer: ");
scanf("\n%1d%1d%1d%1d%1d", &dig_one, &dig_two, &dig_three, &dig_four, &dig_five);
scanf("\n%d", &five_dig_int)
然而,在第一次扫描完成后,程序挂起第二个scanf等待更多输入。有没有办法重新扫描"所以说初始输入,所以用户不必再次输入数字?谢谢! ;
答案 0 :(得分:0)
使用字符串&的atoi()
示例:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char str[6];
printf("\nPART 2: EXPRESSIONS SUM\n\n");
printf("Enter 5-digit integer: ");
scanf("\n%s, &str);
int fivedigit = atoi(str);
int sum = 0;
for(int i = 0; i < 5; i++)
{
int tempadd = (int) str[i];
sum += tempadd;
}
//Do stuff with both values
}
答案 1 :(得分:0)
用任何算术对任何整数的基数10位求和并不难:
#include <stdio.h>
int main(void) {
int val;
printf("Enter a number: ");
if (scanf("%d", &val) != 1) return 1;
int sum = 0;
for (int x = val; x; x /= 10) sum += x % 10;
printf("Value = %d. Digit sum = %d\n", val, sum);
return 0;
}