gpt4 book ai didi

c - 我没有得到所需的输出

转载 作者:行者123 更新时间:2023-11-30 14:55:21 26 4
gpt4 key购买 nike

该程序的输出是获取句子中的单词数,而不考虑问题中提到的空格或任何符号的数量。

问题是这样的:

将给出一行英文文本,其中单词之间用 1 分隔以下符号:

“”、“\t”、“.”、“,”和“;”

每个单词可以与下一个单词和前一个单词分隔开一个或更多以下符号。你必须计算单词数在句子中。

请注意,要读取输入,您必须读取直到 EOF 符号出现阅读,如以下示例所示。

int main()
{
int c;

c = getchar();
while ( c != EOF ) {
c = getchar();
}
return 0;
}

注意:不用数组也可以解决这个问题,所以线路的最大长度并不重要。

输入

一行英文文本,单词之间用 或 分隔符号出现次数增多

“”、“\t”、“.”、“,”和“;”

输出

该行的字数。

示例输入

This is a sentence, it has words separated by spaces and fullstops.

示例输出

12

我知道我必须使用问题中给出的格式,但我不知道如何使用它。

我只知道当单词仅由单个空格或单个\t 分隔时查找句子中单词数量的程序。但是,我没有任何想法来解决这个问题。

最佳答案

[one of delimiters]...[one of delimiters][not one of delimiters]... 
^^ count this edge.

像这样

#include <stdio.h>
#include <stdbool.h>

bool IsDelimiter(char ch, const char *delimiters){
while(*delimiters)
if(*delimiters++ == ch)
return true;
return false;
}

int main(void){
bool prev_is_delmiter = true;
int ch, wc = 0;

while((ch = getchar()) != EOF && ch != '\n'){
bool current_is_delmiter = IsDelimiter(ch, " \t,.;");
if(prev_is_delmiter && !current_is_delmiter){
++wc;
}
prev_is_delmiter = current_is_delmiter;
}
printf("%d\n", wc);
}

关于c - 我没有得到所需的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45942619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com