Lecture 9 中間テスト(6/14実施)

【注意】これは試験です!
    コピペ等,何らかの不正が認められた場合は全問0点として処理し,
    その後然るべき処置を取るので注意すること.

【注意】すべてのソースコードの先頭行に,
    学籍番号,年組番号,氏名をコメントとして記入すること.


以下の問いに答えよ.

問題1

1から100までの自然数を表示しなさい. この中で,①7の倍数と,②7のつく数字はすべて, カッコ【】付きで表示しなさい.
この時,2つの引数(x,n)をとり,
 ① xがnの倍数の場合Trueを返す関数 ismultiple(),
 ② xがnの数字がつく場合にTrueを返す関数 iscontain()
をそれぞれ作って利用せよ.但しnは一桁の自然数とする.
プログラムのファイル名を 学籍番号10桁-09-1.cpp とせよ.

問題2

    1. 以下のソースコードを入力せよ.

    2. このソースファイルをコンパイルして実行したときに 画面に表示される文字すべてを,ソースコードの最初に コメント(/* */で囲む)として記せ. これは実行画面に表示された文字をコピーしソースコードにペーストして良い

プログラムのファイル名を 学籍番号10桁-09-2.cpp とせよ.



問題3

キーボードから入力された文字列の中から,"meiji"という文字列を探索し, 先頭からのオフセット(何文字目にあるか)を返す関数 find_meiji を作成せよ. 大文字小文字は問わない. 先頭を0文字目とし,スペースも1文字と数える.見つからない場合は-1を返すこと. 以下のmain関数を変更せずに利用すること. プログラムのファイル名を 学籍番号10桁-09-3.cpp とせよ.
#include <stdio.h>

void main(void)
{
    char str[200];
    printf("文章を入力:");
    scanf("%[^¥n]", str);

    int ret = find_meiji(str);

    if(ret == -1) {
        printf("文字列が見つかりません¥n");
    } else {
        printf("%d文字目です.¥n", ret);
    }
}

// 実行例:
文章を入力:Hello Meiji
6文字目です

文章を入力:Hello meiji
6文字目です

文章を入力:Hello mEiJi
6文字目です

文章を入力:Hello Keiji
文字列が見つかりません

文章を入力:Hello Meijo
文字列が見つかりません

問題4

要素数20個の整数型配列 int data[20]; に対して,
 (a) キーボードから数値を20個入力する
 (b) 平均値を算出する
 (c) 小さい順に並び替え(ソート)
する各関数を作成し,プログラムを完成せよ. 以下のmain関数を変更せずに利用せよ. なお,配列の中身を表示する関数 output を例示する. プログラムのファイル名を 学籍番号10桁-09-4.cpp とせよ.
#include <stdio.h>

void output(int data[], int n)    //配列を引数にとる.n は要素数
{
    for(int i=0; i<n; i++){
        printf("data[%d] = %d¥n", i, data[i]);    // i 番目の data にアクセスする
    }
}

void main(void)
{
    const int n = 20;
    int data[n];                    // 配列の宣言

    input(data,n);                  // 入力する関数

    float ave = average(data,n);    // 平均値を算出する関数
    printf("平均値 = %f¥n",ave);

    sort(data,n);                   // 小さい順に並び替える関数

    output(data,n);                 // 変数の中身を画面に表示する関数
}

問題5

以下のプログラムコードの足りない部分を埋めて,入力された文字列中の小文字を大文字に変換して表示するプログラムを作成せよ. ただし,main関数は以下の通りとし,変更してはならない.また islower(), toupper()をそれぞれ作成して使用せよ. プログラムのファイル名を 学籍番号10桁-09-5.cpp とせよ.
int islower(char c) // cが小文字かどうかを判定する
{
}

char toupper(char c) // cが小文字の時、大文字に変換する
{
}

void capitalize(char str[])
{
}

void main(void)
{
    char str[128];
    scanf("%[^\n]",str);
    capitalize(str);
    puts(str);
}

// 実行例
> 09-5.exe
Oh-o! Meiji
OH-O! MEIJI


答案提出

作成したプログラムを一つのファイル(*.zip)にしてOh-o! Meijiシステムレポート「中間テスト」に提出する. 提出するすべてのファイルには,年組番号 氏名を記入すること.
【注意】コピペ等,何らかの不正が認められた場合は全問0点として処理した上,その後然るべき処置を取るので注意すること.
【注意】すべてのファイル名は半角のみで構成すること.
【注意】すべてのソースコードの先頭には,学籍番号,年組番号,氏名を記入すること.
【注意】提出時のファイル名命名規則などを守っていない人がいる.これらのファイルは採点されないので注意すること.
【お願い】提出するファイルは,フォルダに入れないでそのまま圧縮してください.