2017-05-11 2 views
-2

このプログラムを実行すると、k値は0,1,2,3のようになりますが、その代わりにkのランダム値が表示されます。 forループを実行した後、 'i'の値は変更されません。 'i'の初期値が0の場合。 'i'の値を100回実行した後も、 'i'の値は0です。文字列内のアルファベットを確認するには

input -asd以下は、仕事ができる

出力-12345678910111213

#include<stdio.h> 
#include<ctype.h> 

int main() 
{ 
    int i,k=0; 
    char array[100]; 
    scanf("%s",&array); 

    for(i=0;i<=99;i++) 
    { 
     if(array[i]>='a'&&array[i]<='z') 
     { 
      k=k+1; 
      printf("%d",k); 
     } 
    } 
} 
+1

これは本当に問題が、あなたは 'その'のためのようなループ内i'を宣言する必要があります(I = 0をint型いない配列 – Aditya

+0

から参照シンボルを削除し、... ...) ' – Badda

+2

あなたはインデントする必要があります私たちのコード。 –

答えて

0

#include<stdio.h> 
#include<ctype.h> 
int main() 
{ 
    int i,k=0; 
    char array[100]; 

    scanf("%s", array); 
    for(i=0;array[i] != '\0';i++) 
    { 
     if(array[i]>='a'&&array[i]<='z') 
     { 
      k=k+1; 
      printf("%d",k); 
     } 
    } 

    return 0; 
} 
0
  1. あなただけがゼロの終了を見つけるまで、入力文字列、すなわちの最後まで続けたいために、ループ99に行くのは使用しないでください。

  2. 入力の長さに制限がないので、scanf("%s", array);を実行しないでください。ユーザーは、あなたがwhileと問題2)それはあなたが文字

    の最大数を指定することができますようfgetsを使用するために使用することができます)問題1の場合は100

よりも長い文字列を入力して、配列をオーバーフローすることができます

次に、あなたのコードは次のようになります。

#include<stdio.h> 
#include<ctype.h> 

int main() 
{ 
    int i=0,k=0; 
    char array[100]; 
    fgets(array, sizeof(array), stdin); 
    while(array[i]) 
    { 
     if(array[i]>='a' && array[i]<='z') 
     { 
      k=k+1; 
      printf("%d",k); 
     } 
     i = i +1; 
    } 
    printf("\n"); 
} 
関連する問題