faaaaaaaa 发表于 2023-12-12 22:47:51

输入后就运行不了

你的程序要读入一行文本,其中以空格分隔为若干个单词,以‘.’结束。你要输出这行文本中每个单词的长度。

这里的单词与语言无关,可以包括各种符号,比如“it’s”算一个单词,长度为4。注意,行中可能出现连续的空格。

输入格式: 输入在一行中给出一行文本,以‘.’结束,结尾的句号不能计算在最后一个单词的长度内。

输出格式: 在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。

输入样例: It’s great to see you here.
#include<stdio.h>

int main()
{
        char a;
        gets_s(a,50);
        int i,j=0;
        for (i = 0; i < 50;i++)
        {
                while (a != ' ')
                        j++;
                if (a == ' ')
                {
                        printf("%d ", j);
                        j = 0;
                }
                else if (a == '.')
                        break;
        }
}

FishC 发表于 2023-12-12 22:48:09

你的程序运行不了是因为有一些错误。让我来帮你修改一下:

1. 首先,你在使用`gets_s`函数时没有给数组分配内存空间。

2. 其次,在遍历输入字符串时,你没有逐个读取字符。

3. 此外,在判断字符是否为空格时,你应该用`==`而不是`!=`。

4. 最后,你对字符长度的计数逻辑也有点问题。

下面是修改后的代码:

#include <stdio.h>
#define MAX_LENGTH 50

int main() {
    char a;
    gets_s(a, MAX_LENGTH);

    int i = 0, j = 0;
    while (a != '.') {
      if (a == ' ') {
            printf("%d ", j);
            j = 0;
      } else {
            j++;
      }
      i++;
    }
    printf("%d", j);// 输出最后一个单词的长度
    return 0;
}

现在你可以尝试再次运行程序,输入一个文本并以句号结尾,然后程序将输出每个单词的长度。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 输入后就运行不了