萌新求助!S1E26动手题求助!
本帖最后由 learner-ray 于 2021-10-5 18:35 编辑动手题让根据空格分割字符串,我先做了一部分,统计出最大单词和空格数(多个连续空格记为一个空格,目的是为了分段)。
代码如下:
#include<stdio.h>
int main(void)
{
char str="";
int i, j;
int count1 = 0, count2 = 0; //一个用来记录空格的个数,一个用来记录单词的长度。
int max = 0; //用来记录最长单词。
printf("请输入一串字符串:");
gets(str);
for (i = 0; *(str + i) != '\0'; i++)
{
for (j = i; *(str + j) != ' ' && *(str + j) != '\0'; j++)
{
count2++;
i++;
}
if (max < count2)
{
max = count2;
}
count2 = 0;
i++;
if (*(str + i) != ' ' && *(str + i) != '\0');
{
count1++;
}
}
printf("%d %d", count1, max);
return 0;
}
但统计的结果不准确,比如输入i love you; 统计的空格数为3,最大单词也是3, 输入i love; 统计的最大单词就是4.折腾了一上午也没弄明白问题在哪里,大佬们帮忙看一下,非常感谢!
#include<stdio.h>
int main(void)
{
char str="";
int i, j;
int count1 = 0, count2 = 0; //一个用来记录空格的个数,一个用来记录单词的长度。
int max = 0; //用来记录最长单词。
printf("请输入一串字符串:");
gets(str);
for (i = 0; *(str + i) != '\0'; i++)
{
for (j = i; *(str + j) != ' ' && *(str + j) != '\0'; j++)
{
count2++;
i++;
}
if (max < count2)
{
max = count2;
}
count2 = 0;
// i++;////////////////////////////////////////////
if (*(str + i) != ' ' && *(str + i) != '\0');
{
count1++;
}
}
printf("%d %d", count1, max);
return 0;
} 本帖最后由 jhq999 于 2021-10-5 20:12 编辑
for (i = 0; *(str + i) != '\0'; i++)
{
if (*(str + i)!=' ')
{
count1++;
}
else
{
max=max>count1?max:count1;
count1=0;
count2++;\\空格
}
}
已知到原因,原来是i++了两次,重复了,导致有些元素没有记录到。
页:
[1]