1

したがって、配列と、配列の長さである数値を、次のように「書き込み」という関数に入力しています。

string write (int n, char t[100])

シンプルにするために、この関数の助けを借りて、配列の値を次のように書き出すだけです。

{
    int i;

    for (i=1;i<=n;i++) {
        if (t[i]=='a') {
        printf("%c" , t[i]);
        }
    }

    return 0;
}

int main() 私がした唯一のことscanfは、n変数に a を使用し、配列内の 1 からn'a' の文字列値を指定したことでした。そして、書き込み関数を呼び出しました。これstring write(n,t[100]);が「メイン」全体です。

    int main()  
{  
    int i,n;   
    char t[100];  
    scanf("%i" ,&n);  

    for (i=1;i<=n;i++) {
            t[i]='a';
            }
string write (n,t[100]);  
return 0;  
} 

私の質問は、なぜこの単純なプログラムが実行nされず、値を入力できるのに何も出力されないのですか? C++ を初めて使用する関数の宣言または呼び出しで、何かが欠けているに違いありません。

4

2 に答える 2

1

string write(n, t[100])関数のプロトタイプです (型は省略されます)。write を呼び出したい場合は、次のようにする必要があります

int main()  
{  
    int i,n;   
    char t[100];  
    scanf("%i" ,&n);  

    for (i=1;i<=n;i++) {
            t[i]='a';
            }
write(n,t);  
return 0;  
}

関数に渡すt[100]と、文字列の 100 番目の要素が関数に渡されますwriteが、これはやりたいことではありません。文字列全体を渡すには、t.

別の間違いは、 write が文字列を返すと言うことです。しかしreturn 0、あなたのコードでは、書き込みプロトタイプを次のように変更したいと考えています。int write(int n, char t[100]);

于 2012-10-13T09:20:22.923 に答える
1

この線

string write (n,t[100]);  

inは関数mainを呼び出しません- type の「write」という名前の変数writeを定義し、それぞれが同じ値を持つ要素で構成されます(これは、100 要素配列の 101 番目の要素であるため、それ自体がエラーです)。 . 関数を呼び出すには、書く必要がありますstringnt[100]

write(n, t);

C++ に関する適切な入門書を入手する必要があります。
ここ SO にそれらの良いリストがあります。それらを見つけるための最初の演習にする必要があります。

于 2012-10-13T09:48:32.143 に答える