2016-06-14 5 views
-1

[1]文字のすべてにinital番号のマッピング

質問[彼らは文字に番号を割り当てる求めているこの問題について]:

私たちは、文字A、2得点1を割り当てることを想定同じルールを繰り返すことによって、ZからZへと、そして 26からZへと変化する。このルールによってマップされたスコアでは、 「運」のスコアの合計は47(1​​2 + 21 + 3 + 11)、「知識」は96、「ハードワーク」は98、「態度」は100です。 完了任意の文字列を計算する次のプログラム。

#include <stdio.h> 
int main() { 
char str[1000]; 
int i, score = 0; 
scanf("%s", str); 
for (i = 0; ______; ___) 
{ 
int ch = str[i]; 
if (______________________) { 
score += ____________; 
} 
else if (______________________) { 
score += ____________; 
} 
} 
printf("%d\n", score); 
return 0; 
} 

ありがとうございます。

+0

トピックの上部にあるリンクをクリックしてください。 –

+0

@CherubimAnand私は朝のための試験を持っています。それは2:18です。私は勉強しています。私は勉強しています。謙虚で寛大で誰かを裁判にかけてください。ありがとうございます。 –

+0

@CherubimAnandフィードバックありがとうございました。 –

答えて

1

この質問の重要な洞察は、charは実際には8ビットの数値であることです。例えば、 '' 小数で97であり、Z '' は122であり、 '' 65であり、そして 'Z' は90である。

https://en.wikipedia.org/wiki/ASCII#Code_chart

すべてのアルファベット文字を順次示されています。

int num = 'd' - 'a'; //num is now (100 - 97), which is 3. 

これは、彼らはあなたがその問題で何をしたいのかを把握するのに十分な情報である必要があります。charは、実際に数ですので、あなたはそうのように、算術式でそれを使用することができます。

+0

ASCIIには7ビットしか使用しません。それにもかかわらず、charデータ型は8ビットです。 –

1

あなたはそうのような2つだけ条件文を使って、これを効率的に行うことができます。

if (string[i]>='a' && string[i]<='z') { 
    Score += (int) string[i] - (int) 'a' + 1; 
} 

編集:int型のキャストが必要しかし、あなたは文字をint型として使用されていることを伝えることができるので、私はそこに入れていません

2番目の条件は、大文字でも同じです。 これは動作するはずです。

1

thisテーブルを確認してください。 A-ZのASCII値の範囲は65-90で、a-zの範囲は97-122です。したがって、数値に文字を変換するためには、使用することができます:UPPER CASE用

を下部ケースのためch - 64またはch - 'A' + 1
21からABをマッピングしますch - 96またはch - 'a' + 1

...ように... b2に、
1からaにそう

以下のプログラムに示すように、

となります。

#include<stdio.h> 

int main(){ 
    char str[1000]; 
    int i, score = 0; 


    printf("Please enter a string: "); 
    scanf("%s", str); 

    printf("You entered: %s\n", str); 


    for(i=0; str[i] != '\0' ; i++) { 

     int ch = str[i]; 
     int num; 

     if (ch >= 'A' && ch <='Z'){ 
      num = ch -'A' + 1; 
      // num = ch - 64; 
     } 

     else if (ch >= 'a' && ch <= 'z'){ 
      num = ch -'a' + 1; 
      // num = ch - 96; 
     } 

     score += num; 
    } 

    printf("Score: %d\n", score); 
} 
関連する問題