Top >C# 練習問題集

5. 配列

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

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(...の部分のみ記述します

練習問題 5 - 1

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

  • 10 個の数値を入力する
  • 入力された各々の数値を 2 倍にして表示する

static void Main(string[] args)
{
    int[]   nums = new int[10];

    for (int i = 0; i < 10; i++)
        nums[i] = int.Parse(Console.ReadLine());

    Console.WriteLine();

    for (int i = 0; i < 10; i++)
        Console.WriteLine(nums[i] * 2);
}

2 番目の for 文を foreach 文にしてもよい

    foreach (int n in nums)
        Console.WriteLine(n * 2);

練習問題 5 - 2

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

  • 10 個の数値を入力する
  • 入力された順番と逆の順番で 10 個の数値を表示する

static void Main(string[] args)
{
    int[]   nums = new int[10];

    for (int i = 0; i < 10; i++)
        nums[i] = int.Parse(Console.ReadLine());

    Console.WriteLine();

    for (int i = 9; i >= 0; i--)
        Console.WriteLine(nums[i]);
}

練習問題 5 - 3

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

  • 10 個の数値を入力する
  • 入力された数値を偶数と奇数に分類して表示する

static void Main(string[] args)
{
    int[]   nums = new int[10];

    for (int i = 0; i < 10; i++)
        nums[i] = int.Parse(Console.ReadLine());

    Console.Write("\n偶数:");

    foreach (int n in nums)
        if ((n % 2) == 0)
            Console.Write("{0} ", n);

    Console.Write("\n奇数:");

    foreach (int n in nums)
        if ((n % 2) != 0)
            Console.Write("{0} ", n);
}
※ もちろん、foreach 文ではなく for 文を使用してもよい

練習問題 5 - 4

数値を繰り返して入力し、合計が 100 を超えた場合、または入力が 10 回行われた場合、入力を止め入力された数値をすべて表示するプログラムを作成しなさい


static void Main(string[] args)
{
    int[]   nums = new int[10];
    int     cnt, sum;

    for (cnt = 0, sum = 0; cnt < 10 && sum <= 100; cnt++)
    {
        nums[cnt] = int.Parse(Console.ReadLine());
        sum += nums[cnt];
    }

    for (int i = 0; i < cnt; i ++)
        Console.Write("\n" + nums[i]);
}

以下は、while 文を使用した例

static void Main(string[] args)
{
    int[]   nums = new int[10];
    int     cnt = 0, sum = 0;

    while (cnt < 10 && sum <= 100)
    {
        nums[cnt] = int.Parse(Console.ReadLine());
        sum += nums[cnt++];
    }

    for (int i = 0; i < cnt; i ++)
        Console.Write("\n" + nums[i]);
}

練習問題 5 - 5

次のコードに追加し、入力された数値を 16 桁の 2 進数で表示するプログラムを完成させなさい


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

    int[]   binary = new int[16];

    for (int i = 15; i >= 0; i--, num /= 2)
        binary[i] = num % 2;

    for (int i = 0; i < 16; i++)
        Console.Write(binary[i]);
}

練習問題 5 - 6

次のコードに追加し、九九表を表示するプログラムを完成させなさい


static void Main(string[] args)
{
    int[,]  kuku = new int[9,9];

    for (int i = 0; i < 9; i++)
    {
        for (int j = 0; j < 9; j++)
            kuku[i,j] = (i + 1) * (j + 1);
    }

    for (int i = 0; i < 9; i++)
    {
        for (int j = 0; j < 9; j++)
            Console.Write(" {0,2}", kuku[i,j]);

        Console.WriteLine();
    }
}

問題とは異なるが、配列の配列を使用すると以下のようになる

static void Main(string[] args)
{
    int[][]kuku = new int[9][];

    for (int i = 0; i < 9; i++)
    {
        kuku[i] = new int[9];

        for (int j = 0; j < 9; j++)
            kuku[i][j] = (i + 1) * (j + 1);
    }

    for (int i = 0; i < 9; i++)
    {
        for (int j = 0; j < 9; j++)
            Console.Write(" {0,2}", kuku[i][j]);

        Console.WriteLine();
    }
}

練習問題 5 - 7

1 桁の数値( 1 ~ 9 に限定)を2つ入力し、その積を表示するプログラムを作成しなさいただし、九九の計算結果が入った配列を予め作成して利用すること(前問を参考に)


static void Main(string[] args)
{
    int[,]  kuku = new int[9,9];

    for (int i = 0; i < 9; i++)
        for (int j = 0; j < 9; j++)
            kuku[i,j] = (i + 1) * (j + 1);

    int p = int.Parse(Console.ReadLine());
    int q = int.Parse(Console.ReadLine());

    Console.WriteLine(kuku[p-1,q-1]);
}

練習問題 5 - 8

整数を 10 回入力し、小さい順に並べ替えて表示するプログラムを作成しなさい


static void Main(string[] args)
{
    int[]   nums = new int[10];

    for (int i = 0; i < 10; i++)
        nums[i] = int.Parse(Console.ReadLine());

    for (int i = 0; i < 10; i++)
    {
        for (int j = i + 1; j < 10; j++)
        {
            if (nums[i] > nums[j]){
                int t = nums[i];
                nums[i] = nums[j];
                nums[j] = t;
            }
        }
    }

    for (int i = 0; i < 10; i++)
        Console.Write(nums[i] + " ");
}
※ ソートの問題さまざまな方法がある
PAPER BOWL
NEZEN