C言語初心者のくだらない質問3

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
まるくま
記事: 39
登録日時: 11年前
住所: 群馬県

C言語初心者のくだらない質問3

#1

投稿記事 by まるくま » 11年前

何㎝から: 150
何㎝まで: 190
何㎝ずつ: 5

150㎝ 45.00kg
155㎝ 45.90kg
・・・・・(以下省略)・・・・・・
となるように、身長と標準体重の対応表を表示するプログラムを作成せよ。なお、表示する身長の範囲(開始値、終了値、増分)は整数値として読み込み、標準体重は小数点以下を2桁だけ表示すること。

という問題をといているのですが。

コード:

#include <stdio.h>

int main(void)
{
	double sma=0;
	double big=0;
	double zutu=0;

	printf("何㎝から:"); scanf("%d", sma);
	printf("何㎝まで:"); scanf("%d", big);
	printf("何㎝ずつ:"); scanf("%d", zutu);

    for(; sma>=big; sma+=zutu){
	   printf("%f㎝   %fkg",sma ,(sma-100)*0.9);
	}
}
とプログラムを書いてみたところ
何㎝から の部分を入力したところでエラーが出てしまいます。
どうしてでしょうか、お願いします。

アバター
ぱにしん
記事: 58
登録日時: 12年前
住所: 滋賀

Re: C言語初心者のくだらない質問3

#2

投稿記事 by ぱにしん » 11年前

scanf関数の引数が間違っています。
二番目の引数は参照渡ししてください。

検索をかけたら苦Cの解説が引っかかったので貼り付けておきます。
http://9cguide.appspot.com/15-03.html

ところで、整数値として読み込むのであればdoubleではなくintの方が適切だと思います。
for文も問題の通りの動作をさせるには間違っているようです(ケアレスミスですが)

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

Re: C言語初心者のくだらない質問3

#3

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

書式と変数の型があっていないとデータを正常に入力出来ないのでNGですね。

>整数値として読み込み
とあるので、浮動小数点数型を使うのは明らかに間違いです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

nasunasi
記事: 5
登録日時: 11年前

Re: C言語初心者のくだらない質問3

#4

投稿記事 by nasunasi » 11年前

scanf関数とfor文に関しましては、すでにご指摘が為されているようですので、その他で。

標準体重を小数点以下2桁で表示する点に関しましては、「書式指定フィールド」をお調べになると良いですね。

まるくま
記事: 39
登録日時: 11年前
住所: 群馬県

Re: C言語初心者のくだらない質問3

#5

投稿記事 by まるくま » 11年前

nasunasiさん、softyaさん、ばにしんさんありがとうございます。

修正したところ表までは出すことができましたが、体重がすべて0.00kgになってしまします(´・ω・`)

コード:

#include <stdio.h>

int main(void)
{
	int sma=0;
	int big=0;
	int zutu=0;

	printf("何㎝から:"); scanf("%d",&sma);
	printf("何㎝まで:"); scanf("%d",&big);
	printf("何㎝ずつ:"); scanf("%d",&zutu);

    for(; sma<=big; sma+=zutu){
	   printf("%.2d㎝   %.2dkg\n",sma ,(sma-100)*0.9);
	}
}
(sma-100)*0.9の部分が間違っているのでしょうか?

beatle
記事: 1281
登録日時: 12年前
住所: 埼玉
連絡を取る:

Re: C言語初心者のくだらない質問3

#6

投稿記事 by beatle » 11年前

smaと100はint型です
0.9はdouble型です
しがたって、(sma-100)*0.9はdouble型です

それなのに、%.2dで表示しようとしているのは間違いです。
dではなくてfにしないと。

まるくま
記事: 39
登録日時: 11年前
住所: 群馬県

Re: C言語初心者のくだらない質問3

#7

投稿記事 by まるくま » 11年前

なるほど!
きちんと表示することができました(`・ω・´)

変換指定についてまだ、うろ覚えなので・・・・・(汗

助かりました!

閉鎖

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