gpt4 book ai didi

c 创建一个程序,计算句子中有多少个单词,并将句子中的所有字母大写。

转载 作者:行者123 更新时间:2023-11-30 15:11:29 25 4
gpt4 key购买 nike

所以我有这段代码,但是当我运行它时,它总是说无论我输入多少字数,字数都是 1,希望它很容易修复。我尝试将 scanf 更改为仅 %s 但这不起作用,因为它只打印出第一个单词,但它得到了正确的单词数。

#include <stdio.h>

int main()
{
int words = 0;
char ch,sen[100]="", i;
printf("Enter a sentence ended by a '.', a '?', or a '!':");
scanf("%[^\n]", sen);
while ((ch = getchar()) != '\n') {
if (ch == ' ')
words++;
}
words++;

for(i=0;sen[i];i++)
{
if( (sen[i]>=97) && (sen[i]<=122) )
sen[i]-=32;
}

printf("Capitalized sentence: %s\n", sen);
printf("Total number of words:%d\n", words);
return 0;
}

最佳答案

你的程序有一个重大错误。 scanf() 不会读取/存储换行符。然后通过 getchar() 读取换行符。该循环只会执行一次。

while ((ch = getchar()) != '\n') {
if (ch == ' ')
words++;
}

因此您只得到 1 个单词。为什么你使用两种方法来获取输入。

要么使用 scan() 并操作变量“sen”,要么使用 getchar() 并将字符 1 × 1 存储在 sen 中。

// don't use scanf() in this case
i=0;
while ((ch = getchar()) != '\n') {
if (ch == ' ')
words++;
sen[i++] = ch;
}

建议使用 fgets() 来获取此类输入。了解一下。

关于c 创建一个程序,计算句子中有多少个单词,并将句子中的所有字母大写。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35620300/

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