ここから本文です

do~while文とwhile文の違いについて 問題文:キーボードからテストの点数を入力...

arm********さん

2011/1/2908:58:50

do~while文とwhile文の違いについて

問題文:キーボードからテストの点数を入力させ、その合計点を出力するコードを記述しなさい。。最後に答えを出力させる場合には0を入力するものとします。

#include<stdio.h>
int main(void)
{
int num = 0;
int sum = 0;

printf("テストの点数を入力してください\n");
do{
scanf("%d",&num);
sum += num;
}while(num);

printf("テストの合計点は%dです\n",sum);
return 0;
}

このdo~while文をwhile文に変換することって出来ますか(最初はwhile文で解いてたんですけど、うまく出来なくて・・・)

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
654
回答数:
4

違反報告

ベストアンサーに選ばれた回答

lux********さん

編集あり2011/1/2909:35:28

do-while文もwhile文もfor文も
形式が違うだけで同じ処理は実現可能です。

while(1){
scanf("%d",&num);
if(num==0) break;
sum+=num;
}
とすればいいでしょう。

ところで、whileとdo-whileの使い分けの原則は分かりますか?
ループ内処理を・・・
1度は必ず行うのであればdo-while文
1度も行わない可能性があるならばwhile文
ということになっています。
今回、入力を1度は行うものですからdo-while文を使うのが普通でしょうね。

質問した人からのコメント

2011/1/29 17:27:25

成功 なるほど・・・
ありがとうございました。

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

a_p********さん

2011/1/2914:46:14

do..whileループとwhileループは条件判定の位置の違いだけで、
別のループに置き換える事もできなくはないですが、
内容によってはどちらかの方が圧倒的にスマートにあがる事もあります。

今回のコードもnum==0をループ脱出の条件とするなら、
do..whileの方がややスマートなんじゃないかと思います。
この条件を温存しつつ、どうしてもwhileループに置き換えるなら、
/*例1: フラグ変数導入*/
int num = 0;
int sum = 0;
int f_rep = 1;
省略
while(f_rep){
省略
f_rep = ( num != 0 );
}

/*例2: numを非0で初期化 */
int num = -1;
int sum = 0;
省略
while(num){
省略
}

という具合になるんじゃないかと思います。
(きちんと考えて頂ける様に途中省略して肝になる部分だけ書いています)

rhi********さん

2011/1/2910:32:28

#include<stdio.h>
#include<stdlib.h>

int_main(void){
__int___num_=_0;
__int___sum_=_0;
__char__chs[60];

__printf("テストの点数を入力してください\n");
__while(num=atoi(gets(chs))){
____sum_+=_num;
__}
__printf("合計点は%dです\n",sum);
__return_0;
}
/*_出力
テストの点数を入力してください
100
90
80
70
60
50
0
合計点は450です
*/

pyo********さん

2011/1/2910:27:40

int num = 1;
...
while(num){
scanf("%d",&num);
sum += num;
}

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる