HDOJ 1013
//wa的代码,既然说是整数,应该不用考虑大数,可实际上却要考虑大数
#include<stdio.h>
int main()
{
int num,temp;
while(scanf("%d",&num),num)
{
temp=num%9;
printf("%d\n",temp);
}
return 0;
}
//或者mod9,若是k,则各个数字和为k
//既然说是整数,应该不用考虑大数,可实际上却要考虑大数
/*超时代码
#include<stdio.h>
int count_digit(int num)
{
int sum=0,p=1;
while(p)
{
p=num%10;
sum+=p;
p=num/10;
}
return sum;
}
int main()
{
int num,ans;int temp;
while(scanf("%d",&num),num)
{
temp=count_digit(num);
if(temp>=10)
temp=count_digit(temp);
printf("%d\n",temp);
}
return 0;
}*/
//AC
#include<stdio.h>
#include<string.h>
#define MAX 10000
char a[MAX];
void count(int n)
{
int tem,sum=0;
while(n!=0)
{
sum+=n%10;
n/=10;
}
if(sum<10)
{
printf("%d\n",sum);
}
else
{
count(sum);//这样便不必用goto
}
}
int main()
{
int i,num,len;
while(scanf("%s",a)&&a[0]!='0')
{
num=0;
len=strlen(a);
for(i=0;i<len;i++)
{
num+=(a[i]-'0');
}
count(num);
}
return 0;
}
//程序停止,因为str为指针,未指向确定空间,需要分配一个很大的空间
#include<stdio.h>
#include<string.h>
int main()
{
char *str;
int i;int len,sum=0,ans;
//不能char str,这是单字符,否则subscript(下标) requires array or pointer type
while(scanf("%s",str),str[0]!='0')
//刚开始,多加了取地址符,结果程序停止工作
{
//getchar();
len=strlen(str);
for(i=0;i<len;i++)
sum+=str[i]-'0';
ans=sum%9;
printf("%d\n",ans);
}
return 0;
}
/*程序停止工作,提交会TLE
1.可能递归没有出口
2.scanf中未加取地址符,或者多加了取地址符
3.引用了未经初始化的内存*/
#include<stdio.h>
#include<string.h>
#define N 10000
char str[N];
int main()
{
int i;int len,sum,ans;
//不能char str,这是单字符,否则subscript(下标) requires array or pointer type
while(scanf("%s",str),str[0]!='0')
//刚开始,多加了取地址符,结果程序停止工作
{
//getchar();
len=strlen(str);
sum=0;//需放在while内部
for(i=0;i<len;i++)
sum+=str[i]-'0';
ans=sum%9;
printf("%d\n",ans);
}
return 0;
}