初めて質問します。
独習Cで今、getchar()というところの練習問題が分かりません。
自分なりにプログラムを作り、実行してみたのですが上手くいかず、どこが間違っているのか分かりません。
長文になってしまいますが、よろしくお願いします。
問題
10個の英字を読み取るプログラムを作成してください。
その中からアルファベット順に並べたとき、最初にくる文字を表示するものとします。
●プログラムコード
#include<stdio.h>
int main(void)
{
int i;
char ch1,ch2;
ch2 = 'z';
printf("10個の英字を入力してください。\n入力された英字を順番に並べた時、最初にくるものを最期に表示します。\n");
printf("英字の順番は A,B,…,Z,a,…z です。\n");
for( i=1 ; i<=10 ; i++ ){
printf("%dつ目の英字を入力してください:",i);
ch1 = getchar();
if(ch1<ch2){
ch2 = ch1;
}
}
printf("入力された英字の中で最初にくる文字は%cです。\n",ch2);
return 0;
}
●コンパイル結果
h:\C_prog\chapter03\3.01>bcc32 prog01.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
prog01.c:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
●実行結果
h:\C_prog\chapter03\3.01>prog01
10個の英字を入力してください。
入力された英字を順番に並べた時、最初にくるものを最期に表示します。
英字の順番は A,B,…,Z,a,…z です。
1つ目の英字を入力してください:a
2つ目の英字を入力してください:3つ目の英字を入力してください:b
4つ目の英字を入力してください:5つ目の英字を入力してください:c
6つ目の英字を入力してください:7つ目の英字を入力してください:d
8つ目の英字を入力してください:9つ目の英字を入力してください:e
10つ目の英字を入力してください:入力された英字の中で最初にくる文字は
です。
―――――――――――――――――――――――――――――――――――
このような状態です。今回はa,b,c,d,eと入力しました。
実行すると、2,4,6,8,10個目の英字の入力が飛ばされてしまい、最期に英字も表示できてません。
何がダメなのか分からないので、教えて下さい。
よろしくお願いします。
『独習C 第3版』 の問題です
Re:『独習C 第3版』 の問題です
たいちうさん、早い回答ありがとうございます!
分かりやすいヒントでした。
バッファのクリアについては、後でやると書かれていたので深く考えずにやってしまいました…。
今の段階ではgetcharでやるのは無理そうなので、今回はgetche()でやってみることにします。
分かりやすいヒントでした。
バッファのクリアについては、後でやると書かれていたので深く考えずにやってしまいました…。
今の段階ではgetcharでやるのは無理そうなので、今回はgetche()でやってみることにします。