我有一个程序,可以对字符串中的数字求和。但是我需要一个循环,当它不是一个密码数时,它将求和。例如,我的输入为数字12345。总和为15(1 + 2 + 3 + 4 + 5),并且此数字15必须再相加一次,输出必须为6。(5 + 1)。它适用于任何数量。感谢您的帮助。
int main() {
char string[100000];
int i;
int sum=0;
scanf("%s", string);
for(i = 0; string[i] != '\0'; i++){
sum += (string[i] - '0');
}
printf("%d\n", sum);
return 0;
}
答案 0 :(得分:1)
int main()
{
int n, t, sum = 0, remainder;
t = n;
while (t != 0)
{
remainder = t % 10;
sum = sum + remainder;
t = t / 10;
}
printf("%d\n", sum);
return 0;
}
这里n是您的旧款项。 这是一般的想法。请根据您的需求定制代码。
答案 1 :(得分:1)
int n = atoi(string);
printf("Sum of digits is %d\n", (!(n%9) && n) ? 9 : n%9);
答案 2 :(得分:1)
我将为您编写一个代码段,您的任务是了解其工作原理(提示检查模9会发生什么情况)
#include<stdio.h>
#include<ctype.h>
#define BUFSIZE 1024
int main()
{
char buf[BUFSIZE];
size_t i;
int modsum=0;
if (fgets(buf,BUFSIZE,stdin) == NULL)
{
puts("Error reading the string");
return 1;
}
for (i=0;i<BUFSIZE && buf[i]!=0 && buf[i]!='\n';i++)
{
if (!isdigit(buf[i]))
{
puts("The string is invalid");
return 2;
}
modsum=(modsum+(buf[i]-'0'))%9;
}
printf("%d\n",modsum?modsum:9);
return 0;
}
此代码适用于除0以外的任何数字。