0

これは私がこれまでに持っているものです。

#include <stdio.h>
#include <stdlib.h>

int main(void) {
   int  value;
   char c='Z';
   char alph[30]="there is a PROF 1 var orada";
   char freq[27];
   int i;

   // The function isAlphabetic will accept a string and test each character to 
   // verify if it is an alphabetic character ( A through Z , lowercase or uppercase)
   // if all characters are alphabetic characters then  the function returns 0.  
   // If a nonalphabetic character is found, it will return the index of the nonalpabetic
   // character. 

   value = isAlphabetic(alph);

   if (value == 0) 
       printf("\n The string is alphabetic");
   else 
       printf("Non alphabetic character is detected at position %d\n",value);
   return EXIT_SUCCESS;
}

int isAlphabetic(char *myString) {
}

私が混乱しているのは、プログラムが文字列をスキャンして、アルファベット以外の文字がどこにあるかを正確に検出する方法です。最初に文字列内のすべての文字を数える必要があると思いますか?

4

4 に答える 4

3

コードを介して回答を提供するつもりはありませんが (他の誰かが行ったように)、次のことを考慮してください。

  1. C の文字列は、文字の配列と null ターミネータにすぎません。
  2. [] (つまり、input[i]) を使用して配列内の各項目を反復処理し、たとえば ASCII テーブルに対してその値をチェックできます。
  3. 関数は、アルファベット順でない値を 1 つ見つけるとすぐに終了できます。

この問題を解決する方法は確かに他にもありますが、このレベルでは、教えられていないライブラリやツールを大量に使い始めた場合、教授は少し疑わしいと思います。

于 2013-01-25T16:47:48.437 に答える
2

質問を 1 つずつ取り上げてみましょう。

...プログラムに文字列をスキャンさせるにはどうすればよいですか...

「文字列をスキャンする」とは、ループで猫の皮をむくことを意味します。

char xx[] = "ABC DEF 123 456";
int ii;

/* for, while, do while; pick your poison */
for (ii = 0; xx[ii] != '\0'; ++ii)
{
    /* Houston, we're scanning. */
}

...検出する...

「検出」とは、ある種の比較で猫の皮をむくことを意味します。

char a, b;
a == b; /* equality of two char's */
a >= b; /* greater-than-or-equal-to relationship of two char's */
a < b;  /* I'll bet you can guess what this does now */

...アルファベット以外の文字がある正確な場所...

スキャンのおかげで、インデックスにより「正確にどこに」あるかがわかります。

于 2013-01-25T16:49:59.583 に答える
0

ヒントをあげます:

#include <stdio.h>

int main()
{
        char c = '1';
        printf("%d",c-48); //notice this
        return 0;
}

出力:1

今あなた自身でそれを解決するのに十分以上であるはずです:)

于 2013-01-25T17:00:25.803 に答える
0

最初のアルファベットから最後のアルファベットまでスキャンします。0に設定されたカウンター変数から始めます。次の文字に移動するたびに、counter ++を実行します。これにより、アルファベット以外のインデックスが作成されます。アルファベット以外の文字を見つけた場合は、そこにカウンターを返します。

于 2013-01-25T16:53:53.030 に答える