题目描述
明明得到了一串的信息,包括编号,姓名,生日,其他信息。
每种信息之间用逗号分隔
现在请你把它们分割并按要求输出
输入
一行信息
03114,Mike,09990302,Hello everyone.
输出
number is:03114
name is:Mike
Mike's birthday is:0999Y03M02D //**注意Mike不是固定的
Other information:Hello everyone.
样例输入
03114,Mike,09990302,Hello everyone.
样例输出
number is:03114
name is:Mike
Mike's birthday is:0999Y03M02D
Other information:Hello everyone.
提示
代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
int i,len,m,n,d;
char a[110],bir[8],mat[81],num[10],name[10];
gets(a);
len=strlen(a);
for (i=0;i<len;i++)
{
if (a[i]==',')
break;
num[i]=a[i];
}
m=i+1;
int j=0;
for (i=m;i<len;i++)
{
if (a[i]==',')
break;
name[j]=a[i];
j++;
}
n=i+1;
j=0;
for (i=n;i<len;i++)
{
if (a[i]==',')
break;
bir[j]=a[i];
j++;
}
d=i+1;
j=0;
for (i=d;i<len;i++)
{
mat[j]=a[i];
j++;
}
int x=j;
cout<<"number is:";
for (i=0;i<m-1;i++)
cout<<num[i];
cout<<endl;
cout<<"name is:";
for (i=0;i<n-m-1;i++)
cout<<name[i];
cout<<endl;
for (i=0;i<n-m-1;i++)
cout<<name[i];
cout<<"'s birthday is:";
for (i=0;i<=3;i++)
cout<<bir[i];
cout<<'Y'<<bir[4]<<bir[5]<<'M'<<bir[6]<<bir[7]<<"D"<<endl;
len=strlen(mat);
cout<<"Other information:";
for (i=0;i<x;i++)
cout<<mat[i];
return 0;
}
运行结果:
学习心得:
差点把自己绕晕了,,,关于m,n,d,x这几个处理了很久才弄明白,,发现自己每次将字符串分割在两个数组中后,对于第二个数组总是不注意长度的变换,导致每次数组二输出的还是原长,也就是访问到数组外去了。。。
这个做得还是太繁琐了,,,当我学会更多的算法后能够化简很多啊,听说大神们都是用头文件做题的。。。