ページ 11

C言語 戻り値をもたない関数voidを使った課題

Posted: 2021年11月22日(月) 21:28
by すし郎
「大文字のアルファベットを入力すると、その文字を10文字表示するプログラムを作成せよ。」
といった課題で、以下のプログラムを作ってみたのですが、上手くいかず躓いているのでお助けいただけるとありがたいです。

#include <stdio.h>
void A(int);
int main(void){

int m;

printf("Capital Letter: ");
scanf("%d",&m);

A(10);

return 0;
}
void A(int n){
int i;
for(i=1;i<=n;i++)printf("%d",m);
puts("");
}


以下のエラーコードが出ます。
21: error: `m' undeclared (first use in this function)
21: error: (Each undeclared identifier is reported only once
21: error: for each function it appears in.)

Re: C言語 戻り値をもたない関数voidを使った課題

Posted: 2021年11月22日(月) 23:25
by box
以下はちょっとしたサンプルコードです。
質問者さんのコードのどこがおかしいかは
・scanfで読み込んだmを捨ててしまっている。
・Aに渡すのは回数の10ではなく、読み込んだ文字であるはず
・Aの中で、定義されていない変数mを使っている

コード:

#include <stdio.h>
#include <ctype.h>

void func(int c)
{
    int i;

    for (i = 0; i < 10; i++) {
        putchar(c);
    }
    puts("");
}

int main(void)
{
    int c;

    do {
        printf("Capital Letter: ");
        c = getchar(), getchar();   // 2回目のgetchar()は改行を読み飛ばすため
    } while (!isupper(c));
    func(c);
    return 0;
}

Re: C言語 戻り値をもたない関数voidを使った課題

Posted: 2021年11月23日(火) 01:28
by すし郎
ご指摘ありがとうございます。

Re: C言語 戻り値をもたない関数voidを使った課題

Posted: 2021年11月23日(火) 13:03
by みけCAT
ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。

課題は「大文字のアルファベットを入力」のはずなのに、数値の読み書きしかしていない、というのもおかしいですね。