hdu1013-字符相加

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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值