読者です 読者をやめる 読者になる 読者になる
【スポンサーリンク】

【C言語解説】 C言語練習 R023 - 最も身長が高い人の名前と身長を表示する

こちらのサイト

C言語練習
http://www.geocities.jp/kenji_y0328/crenshu/

の問題を実際に解いていったので、「解説」という形でまとめていこうかと思っています。
ちなみに、こちらのサイトでは解答もありますが、自分の解答を元に解説していきます。

※作者様からの削除依頼がありましたらすぐに削除しますのでご報告頂けると幸いです。

カテゴリの「C言語練習」でまとめています。

【問題】

名前、身長を5人分入力し、最も高い人の名前と身長を表示する。

【コード】

#include<stdio.h>
#include<string.h>
main(){
    char namae[10], max_namae[10];
    int i, max_sincho=0, sincho;
    
    for(i=1; i<=5; i++){
        printf("%d人目の名前(9文字)=",i); scanf("%s", namae);
        printf("%d人目の身長=",i); scanf("%d", &sincho);
        if(max_sincho<sincho){
            max_sincho = sincho;
            strcpy(max_namae, namae);
        }
    }
    printf("身長が一番高い人は %s さんで、%d cmです。", max_namae, max_sincho);
    
    return 0;
}

【考え方】

  • int型の「i」「max_sincho」「sincho」を宣言する。
  • char型の「namae」「max_namae」を宣言する。
  • for文で「i」を5回回す。
  • 「i」を利用して「◯人目の名前」と表示する。そして標準入力処理を行う。
  • 「i」を利用して「◯人目の身長」と表示する。そして標準入力処理を行う。
  • if文で「max_sincho」より「sincho」の方が大きいなら、「max_sincho」に「sincho」を代入し、「max_namae」に「namae」をコピーする。「strcpy」は文字列をまとめてコピー(代入)する関数。
  • for文での繰り返し処理が終わったら、一番身長が高い人を表示する。

【個人的な意見】

「strcy」という関数を使って、まとめて代入する処理が途中であります。
その「strcpy」という関数は文字列を扱うものです。
文字列を扱う場合にはプログラムの最初に「#include」と記述しなければなりません。


私の描いたイラストを元に説明してみます。

プリプロセッサライブラリについて

①この人が「表示したい」と考えているだけです。
②「表示したい」ので「printf~」と構文に沿ってプログラミングしていきます。
③コンピュータは「あっ!printfって命令、ライブラリから引っ張ってこなきゃ!」と判断します。→④

昔は表示するために色んな処理をイチイチ書いていました。それをライブラリとしてまとめることによって、表示するなら「printf」というように人間が使いやすいようにしました。
そしてこのライブラリにも、色んな種類があります。だって、種類分けしておかないと、1つのライブラリにたくさん詰め込んでおいたら、必要ない機能のライブラリまで準備しておかないといけませんよね。
なので必要なライブラリだけをプログラムの頭に置いておくことをします。


勝手な解釈なので違うところもあると思いますが、こういう大雑把なイメージを自分の中で勝手に作って理解するのも一つの手ですよ!(笑)

【スポンサーリンク】