初心者C言語

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
okiru

初心者C言語

#1

投稿記事 by okiru » 14年前

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

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 初心者C言語

#2

投稿記事 by softya(ソフト屋) » 14年前

まず、何処が下線部か分からないのですが?
これは課題だと思いますので、まずフォラームルールのテンプレートに従って書き込んでください。
http://dixq.net/board/board.html
プログラムはcodeタグのご利用をお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

okiru

Re: 初心者C言語

#3

投稿記事 by okiru » 14年前

ソフト屋さん、すいませんでした。
規約に目を通しましたので再度質問させてもらいますね

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

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


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

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 初心者C言語

#4

投稿記事 by softya(ソフト屋) » 14年前

まず②からですね。
while(ここ)には値でどんなことが起こると習いましたか?
あと文字コード・配列・文字列の理解はどの程度でしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

okiru

Re: 初心者C言語

#5

投稿記事 by okiru » 14年前

while()は繰り返しの意味で
()の中に入っている条件をこなしている場合、次の式文を繰り返し計算すると言う事だと思います

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

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 初心者C言語

#6

投稿記事 by softya(ソフト屋) » 14年前

では、a[c]はどんな値をとりうるでしょうか?
あと値次第でwhile()の動作はどう変わるでしょう?

ちなみに

コード:

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

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

コード:

char str[] = "test str";
printf( "%d", strlen(str) );
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

okiru

Re: 初心者C言語

#7

投稿記事 by okiru » 14年前

a[c]がどのような値をとるかわからないです;
値が非0ならば繰り返し続けるということなので
a[c]=0となるときのcの値が②の答えと言う事でしょうか

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 初心者C言語

#8

投稿記事 by softya(ソフト屋) » 14年前

>あと文字コード・配列・文字列の理解はどの程度でしょうか?
この部分の理解はイマイチって事でしょうか?

コード:

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] );
}
を実行せずにどうなるか答えてみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る