1013 输出的数必须是一位数,24 = 2+4 =6
39 = 3+9 =12,12 = 1+2 =3 所以输出3
-------------------------------------------------------------------------------------------------------------------------------
itoa函数
把一个整数转换为字符串
用 法
itoa(i,num,10);
i ----需要转换成字符串的数字
num---- 转换后保存字符串的变量
10---- 转换数字的基数(即进制)。10就是说按10进制转换数字。还可以是2,8,16等等你喜欢的进制类型
返回值:指向num这个字符串的指针
注意事项:
itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转移数字时所用的基数(进制)。在上例中,转换基数为10,就意味着以10为转换进制。10:十进制;2:二进制...
itoa并不是一个标准的C函数,它是Windows特有的,如果要写跨平台的程序,请用sprintf。
是Windows平台下扩展的,标准库中有sprintf,功能比这个更强,用法跟printf类似:
char str[255];
sprintf(str, "%x", 100); //将100转为16进制表示的字符串。
下列函数可以将整数转换为字符串:
编辑本段
数字转化为字符串函数名 及 功能
itoa() 将整型值转换为字符串
litoa() 将长整型值转换为字符串
ultoa() 将无符号长整型值转换为字符串
-------------------------------------------------------------------------------------------------------------------------------
超时代码↓
#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;
int main()
{
char str1[10000] = {};
int len,sum;
while (scanf("%s",&str1) && (strlen(str1)!=1 || str1[0]!='0'))
{
sum = 0;
len = strlen(str1);
for (int i = 0; i < len; i++)
sum+=str1[i]-48;
while (sum>=10)
{
itoa(sum,str1,10);
sum = 0;
for (int i = 0; i < len; i++)
sum+=str1[i]-48;
}
printf("%d\n",sum);
}
return 0;
}
修改后的代码↓
#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;
int main()
{
char str1[10000] = {};
int len,sum;
while (scanf("%s",&str1) && (strlen(str1)!=1 || str1[0]!='0'))
{
sum = 0;
len = strlen(str1);
for (int i = 0; i < len; i++)
{
sum+=str1[i]-48;
if(sum>=10)
sum=sum/10+sum%10; //不用第一次全部相加完
}
printf("%d\n",sum);
}
return 0;
}