みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

c言語の関数について

.#include<stdio.h>
int input_number(void);
int main(void)
{
int num;
int total = 0;
while(){
num = input_number();
if(num == 0){
break;
}
total = total + input_number();
}
printf("¥n合計値は%dです¥n", total);
return 0;
}
int input_number(void)
{
int num;
printf("数値を入力してください: ");
scanf("%d", &num);
return num;
}

個人でcを勉強しております。
このプログラムで間違っているところを教えていただけませんでしょうか?
苦戦して困っております。できれば勉強法も教えてていただきたいです。
どうか宜しくお願いします。

投稿日時 - 2013-11-18 20:02:48

QNo.8352651

すぐに回答ほしいです

質問者が選んだベストアンサー

間違いはwhile(1)ですね。

それを直せばコンパイルは成功します。

勉強法は、初心者のうちは教科書のプログラムを参考にしつつ、数多くの問題を自力でプログラムして解くことかな。
大学の情報系学科ではスパルタでやらされます。

あとは、エラーは英語表記でも読んで理解すること。
また、配列や動的メモリ確保を行うと「セグメントエラー」を経験します。初心者のみならず上級者にとってもやっかいなエラーです。

ちなみに、total = total + input_number(); は、total += input_number(); のように書けます。

投稿日時 - 2013-11-19 02:05:38

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

Wr5

>コンパイルしてみたんですがエラーメッセージがよく分からず質問させていただきました

なら、そのエラーメッセージをそのまま掲示した方がいいかと。
変に意訳する必要はないです。

で…while(1)にしてコンパイルしたとして…実行すると、
数値を入力してください: 5↓
数値を入力してください: 0↓
数値を入力してください: 10↓
数値を入力してください: 0↓
数値を入力してください: -1↓
数値を入力してください: 0↓
数値を入力してください: 6↓
数値を入力してください: 0↓
数値を入力してください: 0↓
合計値は0です
となりますが、期待する結果ですか?
# ↓はEnterキー入力
また、なぜそうなるのか判りますか?
# ループが何回まわって、input_number()が何回呼ばれているか理解していますか?

投稿日時 - 2013-11-19 08:39:25

ANo.1

何を期待して、どこが「間違っている」と思っているのですか?
勉強法「何をやろうとして、それがどのように『うまくいかない』のか説明できるようになりましょう」

間違いと断言できるのは
while(){
だけです
ただ、これは、コンパイルすればエラーメッセージと共に理由が表示されるはずです。
勉強法「エラーメッセージはちゃんと読み、内容を理解し、その原因を探し、修正しましょう」


それ以外は、「文法的には」間違いはありません

おそらく
total = total + input_number();
が間違っているような気はしますが、断定できません。
あなたが作っているプログラムが「『1番目に入力した数が0だったら終了、そうでなかったら、2番目に入力した数値を加える』を繰り返す」というプログラムなら「正しい」のです。
あなたが作っているプログラムが「『入力した数が0になるまで、その入力した数値を加える』を繰り返す」というプログラムなら「間違い」のです。

投稿日時 - 2013-11-18 20:54:07

補足

教えて頂きありがとうございます
コンパイルエラーメッセージを理解出来るよう勉強します
また説明不足で申し訳ないです

わたしが作りたいのは0を入力すると終了するものです
コンパイルしてみたんですがエラーメッセージがよく分からず質問させていただきました
またwhil(1){ といれわすれましたすみません

投稿日時 - 2013-11-18 21:30:00