入力と変数 解答ページ | Programming Place Plus C言語編 第4章

トップページC言語編第4章

問題①

問題① 次のうち、変数名として使えないものをすべて選んでください。


変数名として使えないものは、「double」と「123」「_ABC」の2つです。

「double」はキーワードなので使えません。

「123」は、先頭の文字が数字なので使えません。

「_ABC」は、先頭が _ で、続く文字が大文字のアルファベットなので使えません。

小文字と大文字は区別されるので、キーワードである小文字の「return」は使えませんが、「RETURN」は使えます。

問題②

問題② 不定値を、printf関数で出力してみてください。


次のようなプログラムを作成して、実行してみます。

#include <stdio.h>

int main(void)
{
    int num;
    
    printf("%d\n", num);
}

実行結果:

コンパイルを行ったときに、警告が出ることもあるでしょう。警告は、エラーと違って実行は可能ですが、警告も理解して取り除くべきです。

ここでは、警告を無視して実行しますが、その結果は不定です。いきなり、エラーメッセージが出て終了するかもしれませんし、何かよく分からない値が出力されるかもしれません。これは危険なプログラムの典型です。ここで知っておいて欲しいことは、不定な状態の変数の値を使おうとすると、どんな結果になるか不明で、まったく予想できないということです。

問題③

問題③ fgets関数で受け取った文字列を、標準出力へ2回出力するプログラムを作ってください。


#include <stdio.h>

int main(void)
{
    puts("Please enter the string.");
    char input_string[80];
    fgets(input_string, sizeof(input_string), stdin);

    printf("%s", input_string);
    printf("%s", input_string);
}

実行結果:

Please enter the string.
abcde  <-- 入力された文字列
abcde
abcde

fgets関数は末尾の改行も受け取るため、puts関数で出力すると、puts関数が付ける改行と含めて、改行が2度行われることになります。出力結果が格好悪いので、ここでは printf関数を使いました。

問題④

問題④ fgets関数を2回使って適当な文字列を2つ受け取り、入力された順序の逆の順序で出力するプログラムを作成してください。


たとえば次のように書けます。

#include <stdio.h>

int main(void)
{
    puts("Please enter the string.");
    char input_string1[80];
    fgets(input_string1, sizeof(input_string1), stdin);

    puts("Please enter the string.");
    char input_string2[80];
    fgets(input_string2, sizeof(input_string2), stdin);

    printf("%s", input_string2);
    printf("%s", input_string1);
}

実行結果:

Please enter the string.
abcde  <-- 入力された文字列
Please enter the string.
fgh  <-- 入力された文字列
fgh
abcde

まず、2つの文字列の入力を済ませなければなりません。そのため2つの変数を宣言し、それぞれに文字列を受け取っておきます。

そのあと、入力された順序とは逆になるように、後で受け取った文字列を記憶している変数のほうから出力します。


参考リンク


更新履歴

’2018/5/11 章のタイトルを変更(「変数を宣言する」->「変数」)
練習問題に問題④を追加。

’2018/5/4 用語を統一(予約語 -> キーワード)

’2018/1/27 全面的に文章を見直し、修正を行った。

’2011/2/5 単に「小数」と表記していた箇所を「浮動小数点数」に改めた。

’2008/9/14 新規作成。



第4章のメインページへ

C言語編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る