-2

如果再次输入字母,任何人都可以帮助我我的程序如何读取,以便提示“字母已被阅读”?

这是我的代码:

#include <stdio.h>
#include <string.h>
#include <conio.h>

int main()
{
    char alphabet[26] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    char letter;
    int i;
    for(i = 0; i < 26; i++)
    {
    printf("%s\n\n", alphabet);
    printf("Choose a letter: ");
    letter = getchar();

    printf("\n\n");

    for(i = 0; i < 26; i++)
    {
        if (letter == alphabet[i]) 
         {
            alphabet[i] = '_';
            break;   /* This terminates the for() loop */
         }        


    }
     printf("Result: %s\n", alphabet);

     }

}
4

4 回答 4

2

这很容易。您可能有另一个大小为 26 的数组并以全部 false 启动,每当您获得一个字符时,您将相应的插槽设置为 true。然后当你得到一个字符并想检查它是否已经输入时,你只需检查相应的槽是真还是假。

顺便说一句,我认为您不希望内部 for 循环也使用 i 。您可能想要使用另一个变量,例如 j,因为外部 for 循环使用 i 作为控制器,这可能会导致问题。

于 2013-09-24T03:12:20.873 回答
0

我认为你应该有一个输入字母数组,如果没有你可以使用两个变量

char prevletter;
char latestletter;

在此您可以比较 prevletter 是否等于最新字母

latestletter = getchar();

if (prevletter == latestletter)
{
printf("Alredy inputted this");
}

else 
{
prevletter =latestletter;
}

如果您想知道一个字母是否连续输入但在其他尝试后重复输入,则此代码仅适用于连续字母,您可以使用数组

     char inputletters[xx];

use for loop to check if it exist in the array if yes `printf the warning else continue`

  char inputletters[xx];

  for(i = 0; i < xx; i++)
    {
        if (letter == inputletters[i]) 
         {
           printf("AlreadyInputed");

           Break;
         }        


    }

如果输入的字母数组中不存在输入的字母,则在此处执行您的过程

于 2013-09-24T03:18:47.320 回答
0

如果您的输入仅包含大写字母,那么当且仅当您到达内部循环的末尾时,已经提供了该字母,如果该字母在字母表中未找到,因为它已被替换_i检查这一点的一种方法是在内部循环之后检查是否等于 26。一种更简洁的方法是使用布尔值来指示您是否确实脱离了内部循环。

现在,如果您的输入可以是任何字符,最好使用单独的数组来跟踪已经提供的字母,而不是替换alphabet. 你可以有:

const char alphabet[26] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int count[26] = {0};

if (letter == alphabet[i]) 
{
    ++count[i];
    break;
}

准确记录每封信提供了多少次。

于 2013-09-24T03:08:40.930 回答
-1

我不完全理解您的代码,在我看来,因为 php 与 javascript 混合在一起。无论如何,....如果由我决定,我会采取不同的方法,假设我们在这里谈论 php,虽然你可以在 javascript 中做同样的事情,但首先创建一个数组。每次输入一个字母时,我都会检查该字母是否在数组中。如果是,您可以弹出一个警报,说明该字母已被输入,如果没有,则将该字母“推入”数组中。

像这样的东西...

<?php  
$a = array();  
$input is "a";  
if (in_array($input, $a)) // if the letter "a" ($input) is in the array...  
    {  
    echo "This letter was already entered.";  
    }
else // if it's not in the array  
    {  
    array_push($a, $input); // add the letter ($input) to the array  
    }
?>

如果你想让这个大小写不敏感,你可以将所有输入转换为小写(或大写)

$input = strtolower("a");
于 2013-09-24T03:10:14.580 回答