又是一道小题,(但是也不是空格作为分割符,范围更广)本质上还是连续字符串,又考了判断嵌套啊
俺的做法:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main()
{
char a[100];//用于存储刚开始的字符串
char b[100][100];//用于存储切分出来的单词
int k=0,j=0;//计数器
gets(a);
for(int i=0; a[i]!='\0'; i++) //字符串遍历
{
if(a[i]==' '||a[i] =='1'||a[i] =='2'||a[i] =='3'||a[i] =='4'||a[i] =='5'||a[i] =='6'||a[i] =='7'||a[i] =='8'||a[i] =='9'||a[i] =='0')//判断是不是字母
{
if(a[i+1]==' '||a[i+1] =='1'||a[i+1] =='2'||a[i+1] =='3'||a[i+1] =='4'||a[i+1] =='5'||a[i+1] =='6'||a[i+1] =='7'||a[i+1] =='8'||a[i+1] =='9'||a[i+1] =='0')//判断第二个是不是字母,防止误杀友军
{
continue;//是的话过掉,下一个
}
else
{
k++;//反之则另起一行继续存储
}
}
else//存储单词
{
if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))//防止把标点放进去
{
b[k][j]=a[i];//存储单词
j++;
}
}
b[k][j]='\0';//加上结束符,很重要,不能少
}
int y;
for(int i=0; i<=k; i++)
{
for(y=0; y<j; y++)
{
if(b[i][y]!='\0')//这个是去掉前面的多余的东西
{
printf("%c",b[i][y]);
}
}
printf("\n");
}
return 0;
}
很有意思的题目,但我的方法还是太笨了,下次再试试指针之类来做,还有二维字符串也得试试。
标签:存储,int,CP1024,单词,切分,字符串,100,include
From: https://www.cnblogs.com/harumakigohan686/p/17029085.html