Top >C# 練習問題集

4. 繰り返し

プログラムの実行には、以下のようなコードが必要です

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Exercise
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}

または、

using System;

class Program
{
    static void Main(string[] args)
    {
    }
}

以降、解答例としては static void Main(...の部分のみ記述します

練習問題 4 - 1

SPAMという単語を 10 回表示するプログラムを作成しなさい


static void Main(string[] args)
{
    for (int i = 0; i < 10; i++)
        Console.Write("SPAM");
}

練習問題 4 - 2

九九、三の段( 3 ~ 27 の 3 の倍数)を表示するプログラムを作成しなさい


static void Main(string[] args)
{
    for (int i = 1; i <= 9; i++)
        Console.Write(" {0}", 3 * i);
}

練習問題 4 - 3

2 の 1 乗から 8 乗までを計算し表示するプログラムを作成しなさい


static void Main(string[] args)
{
    int x = 1;

    for (int n = 1; n <= 8; n++)
    {
        x *= 2;
        Console.WriteLine("2の{0}乗={1}", n, x);
    }
}

次のようにも書ける

static void Main(string[] args)
{
    for (int n = 1, x = 2; n <= 8; n++, x *= 2)
        Console.WriteLine("2の{0}乗={1}", n, x);
}

練習問題 4 - 4

7 の階乗を計算し、表示するプログラムを作成しなさい


static void Main(string[] args)
{
    int x = 1;

    for (int i = 2; i <= 7; i++)
        x *= i;

    Console.WriteLine(x);
}

練習問題 4 - 5

整数を 10 回入力し、平均値を求めるプログラムを作成しなさい


static void Main(string[] args)
{
    int sum = 0;

    for (int i = 0; i < 10; i++)
    {
        int num = int.Parse(Console.ReadLine());
        sum += num;
    }

    Console.WriteLine("平均は{0}", sum / 10);
}

練習問題 4 - 6

整数、0 か 1 を 10 回入力するこれを対戦成績と考え、0 を負け、1 を勝ちとして、勝ちの総数、負けの総数を表示するプログラムを作成しなさい


static void Main(string[] args)
{
    int wins = 0;

    for (int i = 0; i < 10; i++)
    {
        int result = int.Parse(Console.ReadLine());

        if (result == 1)
            wins += 1;
    }

    Console.WriteLine("勝ち{0}回、負け{1}回", wins, 10 - wins); }

練習問題 4 - 7

次のプログラムを作成しなさい

  • 巨人、阪神戦で毎回の得点を入力する(1回~9回)
  • 入力が終わったら、それぞれの得点とどちらが勝ったかを表示する

static void Main(string[] args)
{
    int giants = 0;
    int tigers = 0;

    for (int game = 1; game <= 9; game++)
    {
        Console.Write(game + "回表、巨人の得点は?");
        giants += int.Parse(Console.ReadLine());

        Console.Write(game + "回裏、阪神の得点は?");
        tigers += int.Parse(Console.ReadLine());
    }

    Console.WriteLine("巨人:{0}点, 阪神:{1}点", giants, tigers);

    if (giants > tigers)
        Console.WriteLine("巨人の勝ち");
    else if (giants < tigers)
        Console.WriteLine("阪神の勝ち");
    else
        Console.WriteLine("引き分け");
}

練習問題 4 - 8

自然数(正の整数)を 10 回入力し、最大値を求めるプログラムを作成しなさい


static void Main(string[] args)
{
    int max_num = 0;

    for (int i = 0; i < 10; i++)
    {
        int num = int.Parse(Console.ReadLine());

        if (num > max_num)
            max_num = num;
    }

    Console.WriteLine("最大値=" + max_num);
}

練習問題 4 - 9

整数を 10 回入力し、最大値と最小値を求めるプログラムを作成しなさい


static void Main(string[] args)
{
    int max_num = 0, min_num = 0;

    for (int i = 0; i < 10; i++)
    {
        int num = int.Parse(Console.ReadLine());

        if (i == 0)
        {
            max_num = num;
            min_num = num;
        }
        else
        {
            if (num > max_num)
                max_num = num;

            if (num < min_num)
                min_num = num;
        }
    }

    Console.WriteLine("最大値={0} 最小値={1}", max_num, min_num);
}

または、

static void Main(string[] args)
{
    int max_num = 0, min_num = 0;

    for (int i = 0; i < 10; i++)
    {
        int num = int.Parse(Console.ReadLine());

        if (i == 0 || num > max_num)
            max_num = num;

        if (i == 0 || num < min_num)
            min_num = num;
    }

    Console.WriteLine("最大値={0} 最小値={1}", max_num, min_num);
}

または、

static void Main(string[] args)
{
    int max_num = int.Parse(Console.ReadLine());
    int min_num = max_num;

    for (int i = 1; i < 10; i++)
    {
        int num = int.Parse(Console.ReadLine());

        if (num > max_num)
            max_num = num;

        if (num < min_num)
            min_num = num;
    }

    Console.WriteLine("最大値={0} 最小値={1}", max_num, min_num);
}

練習問題 4 - 10

個数を示す数値を入力し、その個数分だけ*を表示するプログラムを作成しなさい


static void Main(string[] args)
{
    int count = int.Parse(Console.ReadLine());

    for (int i = 0; i < count; i++)
        Console.Write("*");
}

while を使用した解答例

static void Main(string[] args)
{
    int count = int.Parse(Console.ReadLine());

    while (count > 0)
    {
        Console.Write("*");
        count--;
    }
}

練習問題 4 - 11

個数を示す数値を入力し、その個数分だけ 0 ~ 9 の数字を表示するプログラムを作成しなさい数字は 0, 1, 2, 3, , の順に表示し、9 の次は 0 に戻るものとします


static void Main(string[] args)
{
    int count = int.Parse(Console.ReadLine());

    for (int i = 0, num = 0; i < count; i++)
    {
        Console.Write(num++);

        if (num > 9)
            num = 0;
    }
}
別の解答例
static void Main(string[] args)
{
    int count = int.Parse(Console.ReadLine());

    for (int i = 0; i < count; i++)
        Console.Write(i % 10);
}

練習問題 4 - 12

数値を繰り返し入力し、合計が 100 を超えたら入力を止めて合計を表示するプログラムを作成しなさい


static void Main(string[] args)
{
    int sum = 0;

    while (sum <= 100)
        sum += int.Parse(Console.ReadLine());

    Console.WriteLine("合計は " + sum);
}

練習問題 4 - 13

ストライク・カウントを数えるプログラムを作成しなさい

  • 1球ごとにストライクかボールかを入力する
  • 3ストライクまたは4ボールになったら入力を止め、ストライクとボールのカウントを表示する

static void Main(string[] args)
{
    int strike = 0;
    int ball = 0;

    while (strike < 3 && ball < 4)
    {
        Console.Write("ストライク=1 or ボール=2 ?");

        int judge = int.Parse(Console.ReadLine());

        if (judge == 1)
            strike++;
        else if (judge == 2)
            ball++;
    }

    Console.WriteLine("{0}ボール,{1}ストライク", ball, strike);
}

練習問題 4 - 14

前の問題に次の修正を加えなさい

  • 1球ごとにストライク、ボール、ファウルの何れかを入力する(残念ながらヒットにはなりません)
  • ファウルの場合、2ストライクまではストライクにカウントするが、3ストライクにはならない
  • 3ストライクまたは4ボールになったら入力を止め、ストライクとボールのカウントを表示する

static void Main(string[] args)
{
    int strike = 0;
    int ball = 0;

    while (strike < 3 && ball < 4)
    {
        Console.Write("ストライク=1 or ボール=2 or ファウル=3?");

        int judge = int.Parse(Console.ReadLine());

        if (judge == 1)
            strike++;
        else if (judge == 2)
            ball++;
        else if (judge == 3 && strike < 2)
            strike++;
    }

    Console.WriteLine("{0}ボール,{1}ストライク", ball, strike);
}

練習問題 4 - 15

2 以上の数値を入力し、素因数分解した結果を表示しなさい


static void Main(string[] args)
{
    int n = int.Parse(Console.ReadLine());

    for (int x = 2; n > 1; x++){
        while ((n % x) == 0){
            Console.Write("{0} ", x);
            n /= x;
        }
    }
}

練習問題 4 - 16

入力された数が素数かどうかを判定するプログラムを作成しなさい


static void Main(string[] args)
{
    int num = int.Parse(Console.ReadLine());
    int n;

    for (n = 2; n <= (num / 2); n++){
        if ((num % n) == 0)
            break;
    }

    if (n > (num / 2))
        Console.WriteLine("{0}は素数です", num);
    else
        Console.WriteLine("{0}は素数ではありません", num);
}

練習問題 4 - 17

九九表(一の段~九の段)を表示するプログラムを作成しなさい


static void Main(string[] args)
{
    for (int p = 1; p <= 9; p++)
    {
        for (int q = 1; q <= 9; q++)
            Console.Write(" {0,2}", p * q);

        Console.WriteLine();
    }
}

練習問題 4 - 18

数値を繰り返して入力し、0 が入力されたら入力を止め、それまでの合計を表示するプログラムを作成しなさい


static void Main(string[] args)
{
    int sum = 0;

    for (; ; )    // while (true) でもよい。
    {
        int num = int.Parse(Console.ReadLine());

        if (num == 0)
            break;

        sum += num;
    }

    Console.WriteLine("合計は" + sum);
}

または、

static void Main(string[] args)
{
    int sum = 0;
    int num;

    do
    {
        num = int.Parse(Console.ReadLine());
        sum += num;
    } while (num != 0 );

    Console.WriteLine("合計は" + sum);
}

練習問題 4 - 19

数値を繰り返して入力し、0 が入力されたら入力を止め、平均値を表示するプログラムを作成しなさい


static void Main(string[] args)
{
    int sum = 0;
    int count = 0;

    for (; ; )
    {
        int num = int.Parse(Console.ReadLine());

        if (num == 0)
            break;

        sum += num;
        count++;
    }

    Console.WriteLine("平均は" + (sum / count));
}

練習問題 4 - 20

サイズを示す数値を入力し、何等かの文字で例のような三角形を表示するプログラムを作成しなさい


static void Main(string[] args)
{
    int size = int.Parse(Console.ReadLine());

    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j <= i; j++)
            Console.Write("$");

        Console.WriteLine();
    }
}

練習問題 4 - 21

サイズを示す数値を入力し、そのサイズの×印を何等かの文字で表示するプログラムを作成しなさい


static void Main(string[] args)
{
    int size = int.Parse(Console.ReadLine());

    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < size; j++)
        {
            if (i == j || (size - i - 1) == j)
                Console.Write("X");
            else
                Console.Write(" ");
        }

        Console.WriteLine();
    }
}

練習問題 4 - 22

フィボナッチ数列を表示するプログラムを作成しなさい

最初の 2 つの項を 0、1 とし、1000 まで( 1000 以下の項)を表示するものとします


static void Main(string[] args)
{
    int n1 = 0;
    int n2 = 1;
    int n3 = n1 + n2;

    while (n1 <= 1000)
    {
        Console.Write("{0},", n1);

        n1 = n2;
        n2 = n3;
        n3 = n1 + n2;
    }
}
AKABAS
NEZEN