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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
すし郎

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

#1

投稿記事 by すし郎 » 2年前

「大文字のアルファベットを入力すると、その文字を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.)

box
記事: 2002
登録日時: 13年前

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

#2

投稿記事 by box » 2年前

以下はちょっとしたサンプルコードです。
質問者さんのコードのどこがおかしいかは
・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を使った課題

#3

投稿記事 by すし郎 » 2年前

ご指摘ありがとうございます。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

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

#4

投稿記事 by みけCAT » 2年前

ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。

課題は「大文字のアルファベットを入力」のはずなのに、数値の読み書きしかしていない、というのもおかしいですね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

返信

“C言語何でも質問掲示板” へ戻る