プログラミング入門I 宿題 2021.12.20

Back


0-9の範囲の乱数を5回発生させます.そのとき出た乱数の数だけアスタリスク*を左側に表示させ,9との差の個数分のアスタリスクを右側に表示させ,下のように数字をつけて表示させるプログラムを作成しましょう.感覚的にはアンケート調査の賛成と反対の比率を各項目ごとに棒グラフで表示させるような感じです.

なお,目盛となる最初の数字の部分も for() 文で作成してください.

Student number: s216099

 9 8 7 6 5 4 3 2 1     1 2 3 4 5 6 7 8 9 
 * * * * * * * * * 9-0                   
             * * * 3-6 * * * * * *       
     * * * * * * * 7-2 * *               
       * * * * * * 6-3 * * *             
                 * 1-8 * * * * * * * *   

-------------------------

なお,結果の出力では必ず最初の行に自分の学生番号を,最後にハイフンによるラインをつけること.無い場合には減点するので注意.

中央の2つの数字のうちの左側が発生させた乱数ということにします.

if() 文を使う方法と使わない方法がありますのが,やり方はどちらでも構いません.
解答用紙を使用する際には,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がC言語のプログラムとなっていますので, gcc コマンドを実行して,コンパイルエラーの無いことを確認してから提出してください.

指定の解答用紙を使用していない,コンパイルエラーが出る,実行時に警告が出る,学生番号と名前が無い,というような答案は提出されても採点しません.注意してください.


解答例

// ///////////////////////////////////////////
//
// プログラミング入門I 宿題 2021.12.20
//
// 学生番号: S216099
// 氏名:    島根 太郎
//
//
// //////////////////////////////////////////

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
    srand((unsigned) time(NULL));
    
    printf("Student number: s216099\n\n");
    
    int i, j, left;
    
    for(i=9; i>=1; i--)
    {
        printf(" %d", i);
    }
    
    printf("     ");
    
    for(i=1; i<=9; i++)
    {
        printf("%d ", i);
    }
    
    printf("\n");
    
    for(i=1; i<=5; i++)
    {
        left = rand() % 10;
        
        for(j=9; j>=1; j--)
        {
            if(j<=left)
            {
                printf(" *");
            }
            else
            {
                printf("  ");
            }
        }
        
        printf(" %d-%d ", left, 9 - left);
        
        for(j=1; j<=9-left; j++)
        {
            printf("* ");
        }
        
        printf("\n");
    }
    
    printf("\n-------------------------\n\n");

    return 0;
}


Back