ページ 11

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

Posted: 2013年3月21日(木) 21:11
by まるくま
何㎝から: 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);
	}
}
とプログラムを書いてみたところ
何㎝から の部分を入力したところでエラーが出てしまいます。
どうしてでしょうか、お願いします。

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

Posted: 2013年3月21日(木) 21:39
by ぱにしん
scanf関数の引数が間違っています。
二番目の引数は参照渡ししてください。

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

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

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

Posted: 2013年3月21日(木) 22:05
by softya(ソフト屋)
書式と変数の型があっていないとデータを正常に入力出来ないのでNGですね。

>整数値として読み込み
とあるので、浮動小数点数型を使うのは明らかに間違いです。

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

Posted: 2013年3月21日(木) 22:21
by nasunasi
scanf関数とfor文に関しましては、すでにご指摘が為されているようですので、その他で。

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

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

Posted: 2013年3月22日(金) 08:20
by まるくま
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の部分が間違っているのでしょうか?

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

Posted: 2013年3月22日(金) 08:26
by beatle
smaと100はint型です
0.9はdouble型です
しがたって、(sma-100)*0.9はdouble型です

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

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

Posted: 2013年3月22日(金) 08:30
by まるくま
なるほど!
きちんと表示することができました(`・ω・´)

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

助かりました!