C入門6 課題

1. 配列の要素を下の図のように出力するプログラムを考えています。
  「/* ここ */」を埋めて完成させてください。
  (「1行で」という意味ではありません。)

#include <stdio.h>

int main(void)
{
    int a[5] = {7, 2, 6, 3, 0};
    int i;
    /* ここ */
    return 0;
}

/* kadai6_1.c */
#include <stdio.h>

int main(void)
{
    int a[5] = {7, 2, 6, 3, 0};
    int i;
    for(i = 0; i < 5; i++){
       printf("a[%d] = %d\n", i, a[i]);
    }
    return 0;
}

  ただし、for文は、中での処理が1行なので、

    for(i = 0; i < 5; i++)
       printf("a[%d] = %d\n", i, a[i]);

  のように、中カッコをとってもかまいません。

2. ユーザに整数を10個入力してもらい、それを表示するプログラムを書いてください。

/* kadai6_2.c */
#include <stdio.h>

int main(void)
{
    int a[10];
    int i;
    for(i = 0; i < 10; i++){
        printf("整数を入力:");
        scanf("%d", &a[i]);
    }
    printf("入力したのは:\n");
    for(i = 0; i < 10; i++){
        printf("%d ", a[i]);
    }
    printf("\n");
    return 0;
}

3. ユーザに整数を10個入力してもらい、その平均を求め、平均とユーザが入力した数値を表示する
  プログラムを書いてください。
  ただし、割り算は整数のものでよいとします。(整数同士の割り算は小数点以下が捨てられます。)
  以下の構文が役に立つかもしれません。

  x += a;    /* xにaを足せ */
  x -= a;    /* xからaを引け */
  x *= a;    /* xにaを掛けろ */
  x /= a;    /* xをaで割れ */

/* kadai6_3.c */
#include <stdio.h>

int main(void)
{
    int a[10];
    int i, ave;          /* aveに(あとで)平均を入れる */
    for(i = 0; i < 10; i++){
        printf("整数を入力:");
        scanf("%d", &a[i]);
    }
    ave = 0;
    for(i = 0; i< 10; i++){
        ave += a[i];    /* 次々に足して、合計を出す */
    }
    ave /= 10;          /* 合計を10で割れば平均 */
    printf("平均値は%dでした。\n", ave);
    printf("入力したのは:\n");
    for(i = 0; i < 10; i++){
        printf("%d ", a[i]);
    }
    printf("\n");
    return 0;
}

  平均を出すために、a[i]の和を出していますが、これは、最初のfor文内で行ってもかまいません。
  その方が、効率的ではありますね。次の問題の解答例ではそうしてみます。

4. ユーザに整数を10個入力してもらい、その平均を求め、ユーザが入力した数で平均以下のものと
  平均より大きいものをわけて出力するプログラムを書いてください。
  ただし、割り算は整数のものでよいとします。(整数同士の割り算は小数点以下が捨てられます。)

/* kadai6_4.c */
#include <stdio.h>

int main(void)
{
    int i, ave = 0;      /* はじめにaveに0を入れておく */
    int a[10];
    for(i = 0; i < 10; i++){
        printf("整数を入力:");
        scanf("%d", &a[i]);
        ave += a[i];     /* 合計はここで計算してしまう */
    }
    ave /= 10;
    printf("平均値は%dでした。\n", ave);
    printf("平均以下のもの:\n");
    for(i = 0; i < 10; i++){
        if(a[i] <= ave){   /* ave以下ならば */
            printf("%d ", a[i]);
        }
    }
    printf("\n");
    printf("平均より大きいもの:\n");
    for(i = 0; i < 10; i++){
        if(a[i] > ave){   /* aveより大きいならば */
            printf("%d ", a[i]);
        }
    }
    printf("\n");
    return 0;
}

5. ユーザに名前を聞き、その人に年齢を聞き、あいさつするプログラムを書いてください。

/* kadai6_5.c */
#include <stdio.h>

int main(void)
{
    char name[101];
    int age;
    printf("お名前を入力してください。\n");
    scanf("%s", name);
    printf("%sさん、こんにちは。\n", name);
    printf("年齢を入力してください。\n");
    scanf("%d", &age);
    printf("なるほど、%sさんは、%d歳なんですね。\n", name, age);
    return 0;
}


C課題6

C入門6
C入門目次
ホーム