C言語の演習2-6で身長を入力して標準体重を表示するプログラムを教えてください

このQ&Aのポイント
  • 最近C言語を始めたばかりです。私の勉強している、明解C言語入門の演習2-6で、身長を整数値として読み込んで、標準体重を実数で表示するプログラムを作成せよ。
  • 標準体重は(身長-100)×0.9によって求め、その小数点以下は、1桁だけ表示すること。
  • 身長を入力してください。標準体重は67.5です。私の作ったものを参考にして答えを教えていただけないでしょうか?
回答を見る
  • ベストアンサー

C言語について

最近C言語を始めたばかりです。 誰か教えてください。 私の勉強している、明解C言語入門の演習2-6で、  以下に示すように、身長を整数値として読み込んで、標準体重を実数で表示するプログラムを作成せよ。標準体重は(身長-100)×0.9によって求め、その小数点以下は、1桁だけ表示すること。    身長を入力してください。  標準体重は67.5です。 がわかりません。  念のため、私の作ったものを参考にして答えを教えていただけないでしょうか? #include <stdio.h> int main(void) { int na; puts("身長を入力してください。"); printf("身長:"); scanf("%d",&na); printf("標準体重は[%.1f]です。%n", (double)(na - 100) * 0.9); return(0); }

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

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

int na; の全角スペースを半角にして printf("標準体重は[%.1f]です。%n", (double)(na - 100) * 0.9); の %n を \n にすれば良さそうです。

hatenan114
質問者

お礼

ありがとうございます。 すごく助かりました。 このような間違えがないようにいたします。

関連するQ&A

  • C言語

    最近C言語を始めたばかりなのですが、コンパイラをしたあと、オブジェクトファイルをexeしようとすると、エラーがでます。 そのエラーとは ”問題が発生したため、error.exe を終了します。 ご不便をおかけして申し訳ありません。この問題を Microsoft に報告してください。”です。 どなたかわかる方教えてください。 以下が、問題のプログラムです。 #include <stdio.h> int main(void) { int na; puts("身長を入力してください。"); printf("身長:"); scanf("%d",&na); printf("標準体重は[%.1f]です。%n", (double)(na - 100) * 0.9); return(0); }

  • C言語 基礎の勉強をしています。

    C言語を勉強していた所わからなかった点があったのでぜひお力を貸して頂けると助かります。参考書には演習問題しかのっておらず解答がのっていなくて・・・(明解C言語 入門編 著者:柴田望洋) p.77 演習4-14 問題 例のように、身長と標準体重の対応表を表示するプログラムを作成せよ。なお、表示する身長の範囲(開始値、終了値、増分)は、整数値として読み込み、標準体重は小数点以下を2桁だけ表示すること。 (例)このように表示。標準体重は (身長-100)*0.9で求めるとする 何cmから:150 (←数字の部分を入力として受け付けます) 何cmまで:190 何cmごと:5 150cm:45.00kg 155cm:49.50kg ...(190cmまで以下略) 自分で記述してみたプログラムが↓です。実行したところ無限ループしてしまいます。なぜだか原因がつかめませんので教えていただけると助かりますm(__)m #include <stdio.h> int main (void){ int x;/*何センチから*/ int y;/*何センチまで*/ int z;/*何センチごと*/ printf("何センチから:"); scanf("%d",&x); printf("何センチまで:"); scanf("%d",&y); printf("何センチごと:"); scanf("%d",&z); for(; x <= y;x + z) printf("標準体重=%.2f",(x - 100)*0.9); return 0; } 以上が演習4-14の問題です。

  • c言語超初心者です。教えてください

    基本的だと思いますが教えてください。 #include <stdio.h> int main(void) { int na, nb: puts("二つの整数を入力してください."); printf("整数A:”); scanf("%d",&na); printf("整数B:”); scanf("%d",&nb); printf("それらの平均は%fです。\n,(na+nb)/2.0); return(0); } これでintの形で最後のprintfが%fなのですがintは%dとなるはずなのですがこれは2。0という実数値で割るから答えは実数値になりますよ。という意味で%fとしたのでしょうか?確かにこうしないと正しい値がでてこないのです。教えてください。

  • C言語について質問です。

    C言語についての質問です。 C言語の問題で、 キーボードから氏名・身長・体重の値を受け取り、受け取った身長からもとめられる標準体重を受け取った体重から差し引いた値を計算する。 入力したデータと標準体重のデータを次のように表示するプログラムを作成せよ。 入力データ数は3件として、氏名、身長、体重、標準体重のデータは構造体に格納して、表示する際にデータの入った構造体を読み出すようにしなさい。 という問題があり、苦戦しております。 サンプルソースとして以下があり、 #include <stdio.h> #define NUMBER 3 typedef struct { char name[20]; float weight; float height; float diff; }MEMBER; int main(void){ int i; MEMBER member[NUMBER]; puts("氏名をおわすれなく"); /*構造体への入力部分*/ for(i=0;i<NUMBER;i++){ /*ここに追加*/ } /*構造体データを読み出して画面に表示する部分*/ printf("氏名\t身長[cm]\t体重[kg]\t体重-標準体重[kg]\n"); puts("--------------------------------------------------------"); for(i=0;i<NUMBER;i++){ printf("%s\t%8.1f\t%8.1f\t%8.1f\n", member[i].name,member[i].height, member[i].weight, member[i].diff); } puts("--------------------------------------------------------"); } 中央あたりの「構造体への入力部分」の書き方が分かりません。 どなたか手助けしていただけないでしょうか。

  • c言語超初心者です。2

    #include <stdio.h> int main(void) { int na,nb, nc; int sum; double ave; puts("三つの整数を入力してください."); printf("整数A:"); scanf("%d", &na); printf("整数B:"); scanf("%d", &nb); printf("整数C:"); scanf("%d", &nc); sum=na+nb+nc; ave=(double)sum/3; printf("それらの合計は%5dです。\n", sum); printf("それらの平均は%5.1fです。\n",ave); return(0); } とういうのを作ったんですが、最後のそれらの合計は%5dとやりその5の意味は整数を10進法で少なくても5桁で表示とありますが、例えば1,2,3と入力しても合計は6とでて5桁ででないんですけど。そういう意味ではありませんか?あとave=(double)sum/3;のところをave=sum/3.0としても問題なくできるのですが、どっちでやったほうがいいとかはありますか?もしあったらその理由も教えてください。

  • C言語の演習

    大学1年のものです。C言語の勉強をしていて演習問題をやったんですけど、答えがないので詳しい方答えの確認お願いします!! 実数を入力してください:57.3 あなたは57.3000000と入力しましたね。 っていう問題なんですけど、 #include<stdio.h> int main(void) { double vx; puts("2つの整数を入力してください:"); scanf("lf",&vx); printf("あなたは%fと入力しましたね。/n"".vx); return 0; } でいいんでしょうか??

  • ポインタで平均(C言語)

    こんにちは。大学のプログラミングの講義で 「4名の身長に追加する形でキーボード(標準入力)から自分の身長を入力し、計5名の身長の平均をポインタを使って求めるC言語プログラムを作成せよ」という課題が出されました。 なかなかわからず、現段階では以下のようになっていますが実行すると途中で停止し終了してしまいます。どうすれば正常に作動できますか? #include <stdio.h> void hiroko(int *height) { if(*height<180) *height=180; } int main(void) { int sato=178; int sanaka=175; int hiraki=165; int masaki=179; double my; hiroko(&masaki); puts("身長を入力\n"); printf("自分の身長:"); scanf("%f",my); printf("佐藤君の身長:%d\n",sato); printf("佐中君の身長:%d\n",sanaka); printf("平木君の身長:%d\n",hiraki); printf("真崎君の身長:%d\n",masaki); printf("5人の身長平均:%f",(my+sato+sanaka+hiraki+masaki)/5); return 0; }

  • C言語について

    「条件演算子(a?b:c)を使って、三つの整数値を読み込んで、その最小値を求めて表示するプログラムを作成せよ」という問題を初心者なりに自分で以下のように解いてみたのですが、もっと簡単に表示できるプログラムがあれば教えてください。 #include<stdio.h> int main(void) { int na,nb,nc,min; printf("整数1:"); scanf("%d",&na); printf("整数2:"); scanf("%d",&nb); printf("整数3:"); scanf("%d",&nc); (na<nb)?min=na:min=nb; printf("最小値は%dです。\n",(nc<min)?min=nc:min); return 0; }

  • C言語の勉強でわからないところがあります。

    最近C言語の勉強を始めたのですが明解C言語入門編の演習4-3でうまくいかなくて困っています。 二つの整数値を読み込んで、小さい方の数以上で大きい方の数以下の整数を全て加えた値を表示するプログラムを作成するものなのですが、うまく起動しません。 まだ勉強を始めたばかりの自分が作ったものなので、つまらないミスや勘違いからでてきたエラーだと思うのですが、見て頂けると嬉しいです。 プログラムは以下の通りです。 #include <stdio.h> int main(void) { int n1,n2; int num=n1; int sub=n2; puts("二つの整数を入力してください"); printf("整数1:"); scanf("%d",&n1); printf("整数2:"); scanf("%d",&n2); printf("%d以上%d以下の全整数の和は", n1>n2 ? n1,n2:n2,n1); do{ if (n1>n2) num=n1+sub; sub=sub+1; printf("%d",num); else sub=n2+num; num=num+1; printf("%d",sub); }while(sub==n1 || num ==n2); return 0; } とすると、「22行目」で記述エラーを発見しました。 「identifier」を付け忘れています。となり、起動されることができません。 elseの文を削除すれば動作するのですが、37,28と入力した場合、1638137と大きすぎる数になってしまいます。 そこで二つ質問があります。 一つ目は、「22行目」で記述エラーを発見しました。 「identifier」を付け忘れています。といったものは、具体的に何処が間違っているのか、です。 二つ目は、何故else文を削除した場合のプログラムで、大きすぎる数になってしまうのかが知りたいのです。 この形に拘らずに組むのもいくつか思い浮かぶのですが、何故この形では動かないのかを知りたいので、間違っているところを指摘して頂けると嬉しいです。 そして、もし可能ならなのですが、正答のようなものは書きこまないで頂けると嬉しいです、間違っている理由だけを指摘して頂いて、なんとか後は自分で考えてみたくて・・・ ワガママな質問ですが、よろしくお願いします。

  • c言語について

    C言語で、二つの整数値を読み込んで、前者の値が後者の何%であるかを実数で表示するプログラムを作成しようとして以下のコードを書きました。 #include <stdio.h> int main(void) { int n1, n2 ; puts("二つの整数を入力してください。") ; printf("整数A : \n") ; scanf("%d" , &n1) ; printf("整数B : \n") ; scanf("%d" , &n2) ; printf("Aの値はBの%f%%です。\n" , (double)(n1 / n2) * 100) ; return 0 ; } 上記コードを実行すると、0.000000%のような結果になります。 そこで、最後のキャスト演算子を使用した後の式で(n1 / n2) * 100がまずいのかなと考え、n1 / n2 * 100にしたら上手くいきました。 なぜ、上記コードだと上手くいかないんでしょうか?

専門家に質問してみよう