• ベストアンサー

プログラミング

参考書を見ながらがんばってるのですが まったくわからないので誰か教えてください…。 (1) キャスト演算子を使う   整数型変数 a,b,c  浮動小数点型変数 x    データ: 6,5,7   式  : x=a*b/c      目的:計算結果はできる限り精度良い値で求める (2) オプション   このプログラムは2通りに書くことができる。その理由をレポートに考察として 書きなさい。 なお、 (1) の表示部分は printf("x=%f\n",x);を、使ってください。

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

  • ベストアンサー
回答No.1

問題文が一切ないので、回答になっているかわかりませんが、 ~プログラムリスト~ #include <stdio.h> int main(){ int a, b, c; float x; a = 6; b = 5; c = 7; x = (float)a*b/c; printf("x=%f\n",x); return 0; }

y4u0k5i
質問者

お礼

とても助かりました★ どうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Accessクエリの整数型と単精度型の演算について

    Accessのクエリで長整数型と単精度浮動小数点型を 加算すると答えが一致しません。理由を知っている人いますか? ちなみに長整数型と倍精度浮動小数点型を加算したときは答えが一致します。 浮動小数点は誤差がつきものなのは分かりますが、 確か単精度浮動小数点型は有効桁数7桁までのはず。 下記の例では問題ないように見えます。 (例)長整数型と単精度浮動小数型の演算:1000+0.20=1000.20000000298 長整数型と倍精度浮動小数型の演算:1000+0.20=1000.2 それではよろしくお願いします。

  • プログラミングについて教えてほしいんですが・・・

    プログラミングについて教えてほしいんですが・・・ プログラミングで四則演算プログラムをやっているのですが余りの求め方がわかりません。足し算の求め方は /*lesson2.c*/ #include<stdio.h> int add(int,int); int main(){ int a,b,c; printf("a="); scanf("%d",&a); printf("b="); scanf("%d",&b); c=add(a,b); printf("a+b=%d\n",c); } int add(int x, int y){ return x+y; } というやり方で求めることができたのですが、余りは上のプログラムのどこを変えたらいいのでしょうか? 誰かわかる人がいたら教えてください。お願いします。

  • データ型について

    VBに限ったことではないのですが、 データ型には、短整数型、整数型、長整数型、単精度浮動小数点数型、倍精度浮動小数点数型といろいろな型がありますが、 整数を扱うなら長整数型、小数も含めて扱うなら倍精度浮動小数点数型 を使えば良いと思うのですが、それにより桁数の小さな短整数型、整数型とかは何のためにあるのでしょうか? あまり大きな値を扱わないときにそちらの型を選ぶメリットは何なのでしょうか?

  • c言語のプログラムについて

    今年からC言語を始めた大学1年生です。レポートで四則計算を行うプログラムを6/19までに作らないといけないです。使えるのは今までに習った選択型、反復型、関数scanfです。このプログラムの留意点は次の4つです。 1.使う演算を選択してもらう   例えば   どんな演算をしますか? 1:+,2:-,3:*,4:/ (選択) 2.演算を行う数値を入力してもらう   例えば   a + b の計算をします。aを入力してください。 3.演算結果を表示する   ○+○の答えは ○です 4.計算終了か、それともほかの演算を行うか 決める   0:計算終了 1:他の計算を行う を選択してください  以下のプログラムはこのことを留意してプログラムをつくりました。どこがおかしいのでしょうか。 #include<stdio.h> main() { short a,b,m,n; long c,d,e,f; c = a + b; d = a - b; e = a * b; f = a / b; m = 1; printf("整数を入力してください:"); scanf("%d",&a); printf("どんな演算をしますか?:"); printf("1: +,2: -,3: ×,4: ÷ :"); scanf("%d",&n); while(m=1){ if(n<=4){ while(m=1){ switch (n<=4){ case 1: printf("整数を入力してください:"); scanf("%d",&b); printf("%d + %d = %d \n",a,b,c); break; case 2: printf("整数を入力してください:"); scanf("%d",&b); printf("%d - %d = %d \n",a,b,d); break; case 3: printf("整数を入力してください:"); scanf("%d",&b); printf("%d × %d = %d \n",a,b,e); break; case 4: printf("整数を入力してください:"); scanf("%d",&b); printf("%d ÷ %d = %d \n",a,b,f); break; } } } else { printf("計算できません。"); printf("演算をやり直してください。\n:"); } } printf("計算を終了しますか、それとも他の計算を行いますか?:"); printf("0:計算終了,1:他の計算を行う:"); scanf("%d",&m); printf("計算を終了します。\n"); } 提出期限があるのでなるべく早めのご回答待ってます。生意気言ってすいません。

  • Cのプログラミングを勉強中です。

    Cのプログラミングを勉強中です。 Aの値のBに対する割合を表示すしたいのですが、以下のように記述してもうまくいきません。 どこを直したらよいか教えていただけますか。 #include <stdio.h> int main(void) { int n1 , n2 ; printf("二つの整数を入力してください。\n"); printf("整数A:"); scanf("%d", &n1); printf("整数B:"); scanf("%d", &n2); printf("Aの値はBの%d%%です。\n" , n1 / n2 * 100 ); return(0); }

  • プログラミングの問題

    【問題】 2つの数 a,b を入力し、aをbで割ったときの商と余りを求め、表示するプログラミングを作りなさい。 【ヒント】aとbを整数型で宣言しておき、a/bの計算をすると、小数点以下が切り捨てられ、整数化される。 a => 10 b => 3 商  = 3 余り = 1 上記の解答は、下記のようになるのですが、下記以外の解答方法はありませんでしょうか?プログラムに詳しい方解答おねがいします! #include <stdio.h> main() { int a, b, syo, amari; printf ("a => "); scanf("%d",&a); printf ("b => "); scanf("%d",&b); syo = a / b; amari = a % b; printf ("商  = %d\n",syo); printf ("余り = %d\n",amari); return (0); }

  • Perlで実行は確認できましたただし・・・

    printfの書式指定 書式を指定してデータを出力できる。 printf("1"); 文字列をそのまま表示 printf("%d",1); リテラルを書式指定して表示 $a=1; printf("%d",$a); 変数を書式指定して表示 %dは整数を表示する書式指定です。 %d自身は表示されません。 書式 %d: 整数(少数点の付いていない数)を10進数で表示→ 2,3,-3 %x: 整数を16進数で表示→ 1,a %X: 整数を16進数で表示→ 1,A %f: 実数(少数点の付いている数)を表示→ 1.00000,0.1111 %c: 整数をASCIIコード表に対応する文字で表示→ a,A %S: 文字列を表示→ A,ABC,あ 桁数 printf("%4d",25); 空白を含めて4文字で表示 _ _ 2 5 printf("%04d",25); 0を使って4文字で表示 0 0 2 5 printf("%.3f",3.14); 少数点以下を3文字で表示 3 . 1 4 0 $a=10; 変数$aに10を代入。 $b=3.14; 変数bに3.14を代入。 printf("%10d\n",$a); 10を表示。 printf("X%8.5f\n",$b); X 3.14000を実数として表示。 printf("-" x 10 . "\n"); - を10回表示させる。 printf("%10f\n",$a*$b); $aと$bをかけたものを実数として表示する。 とありますが printf("%10d\n",$a); の %10 の意味が良く分かりません。 printf("X%8.5f\n",$b); の %8.5 の意味が良く分かりません。 printf("%10f\n",$a*$b); の %10 の意味が良く分かりません。 printf("X%8.5f\n",$b); の実行結果は左に一桁ずれていますなぜですか。 ご教示お願い致します。

    • ベストアンサー
    • Perl
  • プログラミング教えてください!!!お願いします。

    プログラミング教えてください!!!お願いします。 次の文が実行されると何がどのようにプリントされるか。何もプリントされない時は「なし」と記せ。 また、途中に「ブランク」が入る場合は、”b”と記せ。 (1) int func1(), func2(); int data = 100; main() { int w = 1; static x =10; printf("** %d, %d, %d\n" ,w,x,data); func1(); printf("** %d, %d, %d\n" ,w,x,data); } int func1(){ int w = 2; static int x = 20: printf("*** %d, %d, %d\n", w, x, data); x += 10; func2(); printf("*** %d, %d, %d\n" , w,x,data); x *= 2; data = data - x; } int func2() { int w = 3; static int x = 30; printf("**** %d, %d, %d\n" ,w,x,data); data -= x; } (2) int func1(char *, char *, char *); int func2(char *, char *, char *); main() { char sta[20], stb[20], stc[20], std[20]; int i=0; func1("abc","xyz",sta); printf("%d -- %s\n" ,++i,sta); func1("123","456",stb); printf("%d -- %s\n" ,++i,stb); func1(sta,stb,stc); printf("%d -- %s\n" ,++i,stc); func2(sta,stb,std); printf("%d -- %s\n" ,++i,std); } int func1(char *a, char *b, char *c){ while(*a) *c++ = *a++; while(*b) *c++ = *b++; * c = 0x00; } int func2(char *a, char *b, char *c){ int i = 0; while(*b){ if(i%2 == 0) *c++ = *a++; else *c++ = *b++; i++; } *c = 0x00; }

  • 上手くいきません(T_T)

    『やさしいC』という本でC言語を勉強しているのですが。ほんの通りに行かなくてつまづいてしまいました。 --------------------------------------- #include <stdio.h> int main(void) { printf("%cは文字です。\n",'A'); printf("%dは整数です。\n",'123'); printf("%fは小数です。\n",'10.5'); return 0; } ------------------------------------- と書いて結果が ------------------------------------ C;\WORK>Sample4 Aは文字です。 3355185は整数です。 0.00000は小数です。 ----------------------------------- と出てくるのですが、本では。 ---------------------------- C;\WORK>Sample4 Aは文字です。 123は整数です。 10.500000は小数です。 -------------------------- と表示されるはずだったのですが。 どこご悪いのでしょうか? お願い致します。

  • 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にしたら上手くいきました。 なぜ、上記コードだと上手くいかないんでしょうか?