はじめての C

消費税が 5% から 10% に引き上げられた場合、政府の増収分はいくらになる ?

4000万人が年間 400万円を使うと仮定すること。

(プログラムは実数で)

このままだと数字が大きくなりすぎて float の扱える範囲を越えてしまう。*1
そこのところを 関数 printf のほうで調整してみると、

  1. /* zeikin */
  2. #include
  3. main()
  4. {
  5. float a, b, c, x;
  6. a = 4000;
  7. b = 400;
  8. c = 10.0 - 5.0;
  9. printf("全人口のうち 4000万人の人が\n");
  10. printf("1年に 400万円の買い物をするとして\n");
  11. printf("もし消費税が 5% から 10% に\n");
  12. printf("引き上げられたら\n");
  13. printf("政府はいったいいくらの増収になるの ?\n\n");
  14. x = a * b * (c / 100.0);
  15. printf("増収分は %f 円になります。\n", x * 10000 * 10000);
  16. }

1億人の人口が 毎年 5% ずつ減少するとしたら 5000万人以下になるのは何年後か、を算出するプログラムを作成せよ。

増分処理がインクリメント(i++)以外の場合に、文中でインクリメント(x++)が使えるのかを調べてみる。

  1. /* sample */
  2. #include
  3. main()
  4. {
  5. int i, x;
  6. x = 0;
  7. for ( i = 10 ; i > 0 ; i-- ) {
  8. x++;
  9. }
  10. printf("answer = %d\n", x);
  11. }

↑できそうだネ。
あとは for文の要素の中身をいじって、

  1. /* hametu */
  2. #include
  3. main()
  4. {
  5. int y;
  6. float a, b, i;
  7. a = 100000000;
  8. b = 5.0;
  9. y = 0;
  10. printf("現在 1億人いるとして\n");
  11. printf("毎年 5% ずつ減少すると\n");
  12. printf("5000万人以下になるのは何年後 ?\n\n");
  13. for ( i = a ; i > a / 2 ; i *= (1 - b / 100.0) ) {
  14. y++;
  15. }
  16. printf("それは .... わずか %d 年後です。\n", y);
  17. }

テストの点数を入力させて 平均点を求める
プログラムを作成せよ。

無限ループを使って { 文 } のなかに 関数をいれてみる。
こんな感じで↓

  1. for ( ; ; ) {
  2. printf("Input a = ");
  3. scanf("%d", &a);
  4. b = b + a;
  5. if ( だめだめ )
  6. break;
  7. }

これでくり返し入力が可能になる。あとは要素にインクリメント(i++)を使えば、

  1. /* heikin */
  2. #include
  3. main()
  4. {
  5. int i;
  6. float a, x;
  7. x = 0;
  8. printf("これから テストの平均点を計算します。\n\n");
  9. printf("数字の 0 を入力すると\n");
  10. printf("集計は終了して\n");
  11. printf("平均点が表示されます。\n\n");
  12. for ( i = 0 ; ; i++ ) {
  13. printf("各自の点数を入力しなさい。\na = ");
  14. scanf("%f", &a);
  15. x = x + a;
  16. printf("\n");
  17. if (a == 0)
  18. break;
  19. }
  20. printf("テストの結果、合計 %d 人の\n", i);
  21. printf("平均点は %f 点でした。\n", x / i);
  22. }

text: 金山典世さん(稚内北星)のページ

*1:計算の途中で