我爱学英语
一款不錯的練習打字的小游戲,并且可以用來學英語,一舉兩得,何樂而不為之呢。然后問題就來了,打字的時候總會按錯字母,我想知道我的命中率,即按對的字母數比上總的字母數,聽說你是編程高手,希望你幫我算一下。
輸入
一組輸入。第一行一個正整數N(N < 100)。代表要出現的單詞總數。接下來是N行,每行一個單詞,單詞長度不超過20,只有英文字母或*組成,其中*代表曾經按錯過的地方。
輸出
只有一行。一個實數,命中率。結果保留2位有效數字。
示例輸入
6 y**ou ar*e a v**ery goo**d programmer
示例輸出
0.78
View Code
1 #include<stdio.h>
2 #include<string.h>
3 int main()
4 {
5 int n, i, k, t=0, s=0 ;
6 char str[21] ;
7 scanf("%d", &n) ;
8 getchar() ;//注意
9 while(n--)
10 {
11 gets(str) ;
12 k = strlen(str) ;
13 s = s + k ;//注意s是字符串的總長度
14 for(i = 0 ; i < k ; i++)
15 if(str[i] == '*')
16 t++ ;
17 }
18 printf("%.2f\n", 1-(float)t/s) ;
19 return 0 ;
20 }
總結:strlen只能用char*做參數,且必須是以''\0''結尾的。strlen的結果要在運行的時候才能計算出來,是用來計算字符串的長度,不是類型占內存的大小。
在C語言中有個重要的庫函數getchar(),可從終端獲得一個字符的ASCII碼值。在終端輸入字符時并非輸入一個字符就會返回,而是在遇到回車換行前,所有輸入的字符都會緩沖在鍵盤緩沖器中,直到回車換行一次性將所有字符按序依次賦給相應的變量,在這里一定要注意最后一個字符即'\n',該字符也會賦給一個相應的變量(當然這要你定義的用來接收字符的變量數比你輸入的可見字符多一才可以)。
總結
- 上一篇: 宏碁推出新款蜂鸟 A24 一体机:i5-
- 下一篇: 黑色幽默:“新知青”电影《走着瞧》首映