纪念瑞格崩盘——字符串分割问题
关于考试
今天考试真的是离谱,考着考着瑞格崩溃了,我一个题目也没有交上去,吓死我了,还好重新考,这次考试我觉得难度说小肯定算不上去了,题目我没有全部看完。一共六个题目,我看了几个吧
- 链表合并(这个题目没有数据结构里面的难,很水,就在一个链表尾巴上把另一个链表接上,好像是)
- 结构体链表(没什么可说的,按思路来就行,就是链表里面的数据换成了结构体)
- 一个二维数组问题,求和,删去最后一行和一列,而且最后删除反对角线上面元素。只有一点要注意,这三个定义里面有重复元素
- 链表题目(把一个链表的最大值结点,移动到头节点后面,也比较容易,找出来,然后保留数据,删除,从新开辟一个结点连接到头节点后面)
- 字符串分割,给你一个字符串(包含空格,逗号和,句号)
然后求什么一个值,我给忘记了,哈哈哈哈,不过我记得要求最长的单词 - 结构体数组,统计投票,也算是送分题把
看了5题,就字符串老分割出问题,我得痛
最后调试了半天写出来一个健壮性比较强的,基本数据测试无问题。累死我了
#include <stdio.h>
#include <string.h>
#define N 1005
char s[100][100];
void solve(char *p)
{
int cnt=0;
bool flag=0;
char temp[100]={'\0'};
int i=0;
int x=0;
while(*p!='\0')
{
if(*p>='a'&&*p<='z'||*p>='A'&&*p<='Z')
{
temp[i]=*p;
i++;
temp[i]='\0';
flag=1;
}
else if(flag)
{
strcpy(s[cnt],temp);
i=0;
cnt++;
flag=0;
x=0;
while(temp[x]!='\0')
{
temp[x]='\0';
x++;
}
}
++p;
}
if(temp[i-1]>='a'&&temp[i-1]<='z'||temp[i-1]>='A'&&temp[i-1]<='Z')
{
cnt++;
strcpy(s[cnt-1],temp);
}
if(cnt)
printf("\n分出了%d个单词\n",cnt);
int max=0;
int len=0;
for(i=0;i<cnt;i++)
{
len=strlen(s[i]);
if(len>max)
max=len;
}
for(i=0;i<cnt;i++)
{
len=strlen(s[i]);
if(len==max)
printf("%s\n", s[i]);
}
}
int main()
{
int n;
char str[N];
char *p=str;
gets(p);
solve(p);
return 0;
}