ページ 11

初心者C言語

Posted: 2011年8月31日(水) 18:31
by okiru
次のプログラムは標準ライブラリ関数strlen() の簡易実装である.このプログラムが行なう
処理を1. の下線部に簡潔に説明せよ.また,return 文が実行されるときのa[c] の値を2. 下線部に書け.
2. に関しては,解答をint 型として記述してもchar 型として記述してもかまわない.
1. 2.
int strlen( char a[] ){
int c = 0 ; while( a[c] ) c++ ; return c ; }

初心者で簡単な問題がわかりません
説明を踏まえて教えて下さい

Re: 初心者C言語

Posted: 2011年8月31日(水) 18:45
by softya(ソフト屋)
まず、何処が下線部か分からないのですが?
これは課題だと思いますので、まずフォラームルールのテンプレートに従って書き込んでください。
http://dixq.net/board/board.html
プログラムはcodeタグのご利用をお願いします。

Re: 初心者C言語

Posted: 2011年8月31日(水) 18:58
by okiru
ソフト屋さん、すいませんでした。
規約に目を通しましたので再度質問させてもらいますね

次のプログラムは標準ライブラリ関数strlen() の簡易実装である.このプログラムが行なう
処理を簡潔に説明せよ.・・・問①
また,return 文が実行されるときのa[c] の値を書け.・・・問②
問② に関しては,解答をint 型として記述してもchar 型として記述してもかまわない.

code
int strlen( char a[] ){
int c = 0 ; while( a[c] ) c++ ; return c ; }
/code


学校の過去問を勉強しているのですが
問①からわからないのでどうすればよいか全くの状態です
while文がどのように終わるのかもよくわかりません

よろしければ説明をお願いしたいです

Re: 初心者C言語

Posted: 2011年8月31日(水) 19:10
by softya(ソフト屋)
まず②からですね。
while(ここ)には値でどんなことが起こると習いましたか?
あと文字コード・配列・文字列の理解はどの程度でしょうか?

Re: 初心者C言語

Posted: 2011年8月31日(水) 19:21
by okiru
while()は繰り返しの意味で
()の中に入っている条件をこなしている場合、次の式文を繰り返し計算すると言う事だと思います

説明が下手ですいません;

理解度についてですがポインタのところまでは習っていて
この問題についての一つ一つのコードの意味は理解しています
一つだけchar a[]についてどのような事が定義されているのかがわかりません

Re: 初心者C言語

Posted: 2011年8月31日(水) 19:30
by softya(ソフト屋)
では、a[c]はどんな値をとりうるでしょうか?
あと値次第でwhile()の動作はどう変わるでしょう?

ちなみに

コード:

int strlen( char a[] )
は配列を引数で受けるときに使う書き方です。

こう書いて使いますよね?

コード:

char str[] = "test str";
printf( "%d", strlen(str) );

Re: 初心者C言語

Posted: 2011年8月31日(水) 19:44
by okiru
a[c]がどのような値をとるかわからないです;
値が非0ならば繰り返し続けるということなので
a[c]=0となるときのcの値が②の答えと言う事でしょうか

Re: 初心者C言語

Posted: 2011年8月31日(水) 20:48
by softya(ソフト屋)
>あと文字コード・配列・文字列の理解はどの程度でしょうか?
この部分の理解はイマイチって事でしょうか?

コード:

char str[] = "test str";
printf( "%d", strlen(str) );
この状態で呼び出された場合のa[c]も分かりませんか?

では、

コード:

int c;
char a[] = "test str";
for( c=0 ; c<9 ; c++ ) {
 printf( "a[%d]=%c=%d=%x \n", c, a[c], a[c], a[c] );
}
を実行せずにどうなるか答えてみてください。