杭电1106题字符串的拆解、排序

杭电1106题字符串的拆解、排序

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1106
之前是用模拟直接做的,结果不断WA不断找坑改进代码,还是AC不了,没办法就看大神的博客,发现字符数组拆解加字符串转换成数字,这操作太骚了!!!自己也基本没接触过两个字符串函数
用了两个函数:strtok和atoi
strtok函数:将字符数组按特定字符拆解

原型:char *strtok(char s[], const char *delim);
分解字符串为一组字符串。s为要分解的字符,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。

atoi函数:将字符数组转换成数字

把字符串转换成整型数的一个函数,应用在计算机程序和办公软件中。 int atoi(const char *nptr) 函数会扫描参数
nptr字符串,跳过前面的空白字符(例如空格,tab缩进)等,可以通过isspace(
)函数来检测),直到遇上数字或正负符号才开始做转换,而在遇到非数字或字符串结束符(‘\0’)才结束转换,并将结果返回。如果
nptr不能转换成 int 或者 nptr为空字符串,那么将返回 0。

AC代码如下:

#include<bits/stdc++.h>
using namespace std;
/*杭电1106题,将字符串拆解并转换成数字排序*/
int main()
{
	char s[1200],*p;
	int a[1200],index;
	while(cin>>s)
	{
		index=0;
		p=strtok(s,"5");  //指定拆分字符 
		while(p!=NULL)  //去掉前导5 
		{
			a[index]=atoi(p);  //转换成数字,存入数组 
			index++;
			p=strtok(NULL,"5");
		}
		sort(a,a+index);
		for(int i=0;i<index;i++)
		{
			if(i==0)
			   cout<<a[i];
			else cout<<" "<<a[i];
		}
		cout<<endl;
	}
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/qq_39905917/article/details/84449814