はじめての C
消費税が 5% から 10% に引き上げられた場合、政府の増収分はいくらになる ?
4000万人が年間 400万円を使うと仮定すること。
(プログラムは実数で)
このままだと数字が大きくなりすぎて float の扱える範囲を越えてしまう。*1
そこのところを 関数 printf のほうで調整してみると、
- /* zeikin */
- #include
- main()
- {
- float a, b, c, x;
- a = 4000;
- b = 400;
- c = 10.0 - 5.0;
- printf("全人口のうち 4000万人の人が\n");
- printf("1年に 400万円の買い物をするとして\n");
- printf("もし消費税が 5% から 10% に\n");
- printf("引き上げられたら\n");
- printf("政府はいったいいくらの増収になるの ?\n\n");
- x = a * b * (c / 100.0);
- printf("増収分は %f 円になります。\n", x * 10000 * 10000);
- }
1億人の人口が 毎年 5% ずつ減少するとしたら 5000万人以下になるのは何年後か、を算出するプログラムを作成せよ。
増分処理がインクリメント(i++)以外の場合に、文中でインクリメント(x++)が使えるのかを調べてみる。
- /* sample */
- #include
- main()
- {
- int i, x;
- x = 0;
- for ( i = 10 ; i > 0 ; i-- ) {
- x++;
- }
- printf("answer = %d\n", x);
- }
↑できそうだネ。
あとは for文の要素の中身をいじって、
- /* hametu */
- #include
- main()
- {
- int y;
- float a, b, i;
- a = 100000000;
- b = 5.0;
- y = 0;
- printf("現在 1億人いるとして\n");
- printf("毎年 5% ずつ減少すると\n");
- printf("5000万人以下になるのは何年後 ?\n\n");
- for ( i = a ; i > a / 2 ; i *= (1 - b / 100.0) ) {
- y++;
- }
- printf("それは .... わずか %d 年後です。\n", y);
- }
テストの点数を入力させて 平均点を求める
プログラムを作成せよ。
無限ループを使って { 文 } のなかに 関数をいれてみる。
こんな感じで↓
- for ( ; ; ) {
- printf("Input a = ");
- scanf("%d", &a);
- b = b + a;
- if ( だめだめ )
- break;
- }
これでくり返し入力が可能になる。あとは要素にインクリメント(i++)を使えば、
- /* heikin */
- #include
- main()
- {
- int i;
- float a, x;
- x = 0;
- printf("これから テストの平均点を計算します。\n\n");
- printf("数字の 0 を入力すると\n");
- printf("集計は終了して\n");
- printf("平均点が表示されます。\n\n");
- for ( i = 0 ; ; i++ ) {
- printf("各自の点数を入力しなさい。\na = ");
- scanf("%f", &a);
- x = x + a;
- printf("\n");
- if (a == 0)
- break;
- }
- printf("テストの結果、合計 %d 人の\n", i);
- printf("平均点は %f 点でした。\n", x / i);
- }
text: 金山典世さん(稚内北星)のページ
*1:計算の途中で