1116:幸运数

题目描述:
大柱哥哥想知道自己的幸运数是多少,于是他在纸上随便写了一个数。如果这个数字是个位数的话,大柱哥哥就把它当做自己的幸运数,如果它不是个位数,大柱哥哥就会把这个数各个位上的数字进行加和,直到它变成个位数。

输入
第一行是一个正整数n代表测试案例的数量(1<=n<=10000)。

从第二行到第n+1行,每行有一个正整数m代表大柱哥哥写下的数字(1<=m<=1e9)。

输出
针对每一组数据,输出由m经过变化之后的幸运数。

每组输出结束后都要换行。

写嗨了忘记输入格式了,写了一半,解决了输出问题,等会分组…
上半个代码
…等会回来分组

#include
int main()
{
	int i,c,n,len,a[6];
	scanf("%d",&n);
	if(n<10)
	{
		printf("%d",n);
	}
	while(n>=10){
	if(n>=10&&n<100){
		len=2;
	}
	else if(n>=100&&n<1000){
		len=3;
	}
	else if(n>=1000&&n<10000){
		len=4;
	}
	else if(n==10000){
		len=5;
	}
		for(i=0,c=0;i<len;i++)
		{
		a[i]=n%10;
		n=n/10;
		c=c+a[i];
		}
		n=c;	
	}		
	printf("%d",c);
	return 0;
 } 

来了,改了

#include
int main()
{
	int i,c,n[10000],len,a[9],b,e;
	scanf("%d\n",&e);
	for(b=0;b<e;b++)
	{
		scanf("%d",&n[b]);//这里的%d后面不能加\n
	}
	for(b=0;b<e;b++)
	{
	if(n[b]<10)
	{
		printf("%d\n",n[b]);
	}
	else{
			while(n[b]>=10){
	if(n[b]>=10&&n[b]<100){
		len=2;
	}
	else if(n[b]>=100&&n[b]<1000){
		len=3;
	}
	else if(n[b]>=1000&&n[b]<10000){
		len=4;
	}
	else if(n[b]>=10000&&n[b]<100000){
		len=5;
	}
	else if(n[b]>=100000&&n[b]<1000000){
		len=6;
	}
	else if(n[b]>=1000000&&n[b]<10000000){
		len=7;
	}
	else if(n[b]>=10000000&&n[b]<100000000){
		len=8;
	}
	else if(n[b]>=100000000&&n[b]<1000000000){
		len=9;
	}
		//我知道这串算len的代码很不专业,别骂了在学了
		for(i=0,c=0;i<len;i++)
		{
		a[i]=n[b]%10;
		n[b]=n[b]/10;
		c=c+a[i];
		}
		n[b]=c;	
	}		
	printf("%d\n",n[b]);
	}
	}
	return 0;
 } 

你可能感兴趣的:(c语言)