题目描述
B分割 ProblemDescription 输入一行数字,如果我们把这行数字中的‘9’都看成空格,那么就得到一行分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。 Input 输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于100。 输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘9’组成。 Output 对于每个测试用例,输出分割得到的整数,相邻的两个整数之间用一个“,”分开,每组输出占一行。 SampleInput 92229219995599 SampleOutput 222,21,55
解法一:
[cpp] view plain copy
print?
- #include "stdio.h"
- #include "string.h"
- int substr(char*des,char* src,int start);
- void print(char* des);
- void main()
- {
- //start 截取字符串的起点下标 count截取的字符串长度
- int start,count;
- //length:输入的字符串长度,p_count为了输出“,”
- int length,p_count=0;
- char src[100],des[100];
- //EOF是宏定义表示-1
- //一般用这种写法输入多组数据
- while(scanf("%s",src)!=EOF)
- {
- start=p_count=0;
- length=strlen(src);
- while(start<length)
- {
- count=substr(src,des,start);
- if(count!=0)
- {
- if(p_count!=0)
- printf(",");
- print(des);//这里是通过格式化字符串输出,
- //其实题意应该是把字符串转化为数字再输出,可以试试
- p_count++;
- }
- start+=count+1;
- }
- printf("\n");
- }
- }
- //截取字符串
- int substr(char* src,char* des,int start)
- {
- int i;
- for(i=start;src!='\0';i++)
- {
- if(src=='9')
- {
- break;
- }
- des[i-start]=src;
- }
- des[i-start]='\0';
- return i-start;
- }
- //格式化输出
- void print(char* des)
- {
- //如果第一个字符为零,一直自增到不为零为止
- while(*des=='0')
- des++;
- if(*des=='\0')//如果全是0,输出零
- {
- printf("0");
- }else
- {
- printf("%s",des);
- }
- }
结果:
解法二:
[cpp] view plain copy
print?
- #include "stdio.h"
- #include "string.h"
- #include "stdlib.h"
- void Split(const char* str, char* delims) ;
- char* pStr[50];
- int length = 0;
- void main()
- {
- int i;
- char strSrc[100];
- while(scanf("%s",strSrc)!=EOF)
- {
- Split(strSrc,"9");
- for(i=0;i<length;i++)
- {
- printf("%d",atoi(pStr));
- if(i!=length-1)
- printf(",");
- }
- printf("\n");
- }
- }
-
- //////////自定义Split()函数//////////////
- //////////参数://///////////////////////
- //////////1:要分割的字符串///////////////
- //////////2:分隔符///////////////////////
- //////////功能:实现分割字符串//////////
- void Split(const char* str, char* delims)
- {
- char *p;
- char*buffer;
- length = 0;
- buffer = strdup(str);
- p = strtok(buffer, delims);
- pStr[length++] = p;
- while (p != NULL) {
- p = strtok(NULL, delims);
- pStr[length++] = p;
- }
- length--;
- }
结果:
|