gpt4 book ai didi

c - 如何检查用户输入的所有大写字母是否都存在?

转载 作者:行者123 更新时间:2023-12-05 01:04:14 25 4
gpt4 key购买 nike

我正在尝试检查用户输入的输入中是否存在所有大写字母。

我尝试创建一个包含 26 个值的数组,0 代表 A,25 代表 Z。起初我将这些值初始化为 0。

之后我询问用户输入,然后检查它是否与 ASCII 匹配。如果是,我将数组值更改为 1。

之后,我确保所有的数组值都是 1;如果是,则所有字母都在输入中。

我假设用户将以 0 结束输入。

输入是“Q$@UICK BROWN FOX JUMPS OVER THE LAZY DOG!0”。

这是代码:

#include <stdio.h>

int main()
{
int z;
int x = 1;
int arr[26] = {0};

printf("enter a sentance to check if all latter in ABC are in the sentance (in upper case):\n");

while (x!=0) {
scanf(" %d", &x);
z = x - 65;
if (z>=0 && z<=25) {
arr[z]=1;
}
}

z=0;
while (arr[z]==1 && z<26) {
++z;
if (z==26) {
printf("all the ABC in ur sentance\n");
break;
}
}

printf("all the ABC does not in ur sentance\n");

return 0;
}

没有输出,我认为是scanf有问题,但我不知道如何解决。

最佳答案

    scanf() 中的
  • %d 格式说明符用于读取整数,而不是字符。在这种情况下,您应该使用 getchar() 而不是 scanf() 来逐个读取字符。
  • 字符 0 没有值 0。(在 ASCII 中是 48)。
  • 使用像 65 这样的魔数(Magic Number)并不好。在这种情况下,使用 'A' 之类的字符常量应该可以很好地说明含义。

部分

while (x!=0) {
scanf(" %d", &x);
z = x - 65;
if (z>=0 && z<=25) {
arr[z]=1;
}
}

应该是:

while ((x = getchar()) != '0' && x != EOF) {
z = x - 'A';
if (z>=0 && z<=25) {
arr[z]=1;
}
}

还要注意 "all the ABC does not in ur sentance\n" 即使在 "all the ABC in ur sentance\n" 打印后也会打印。您应该使用 return 0; 而不是 break; 来完成函数的执行并防止输出额外的字符串。

关于c - 如何检查用户输入的所有大写字母是否都存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72468804/

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