【C言語】リニアサーチ/点数を入力して順位を表示するプログラム

C言語 研修プログラム

ソフトウェア会社の研修時代に作成したプログラムです。
参考になればうれしいです。

今回の研修プログラム集ではリニアサーチ(線形探索法)のアルゴリズムを使用しています。

「先頭から順番に検索していく」という動きで初心者にもイメージしやすいものです。

リニアサーチの特徴はこんな感じです。

・先頭から順番に検索していく探索アルゴリズム
・単純で分かりやすい。
・探索効率はあまり良くない。


サンプルでは100名のテストデータを例にしています。

スポンサーリンク

Sample Code

/*****************************************************************************
【リニアサーチ】
100名のテストの点数が配列test[]に降順で格納されている。
点数を入力して順位を検索して表示するプログラム。

<lesson_008.c> ver1.00
------------------------------------------------------------------------------
作成日:
作成者:

*****************************************************************************/
//---ヘッダーファイル---
#include <stdio.h>

//---マクロ宣言---
#define PEOPLE_NUM 100

/****************************************************************************
---main---
*****************************************************************************/
int main(void)
{
  int i;
  int targetScore;        //検索する点数
  int endFlag = 0;        //ループの終了条件の変数

  int test[PEOPLE_NUM];   //点数を格納する配列

  //配列test[]に点数を降順に格納する。(100~1)
  for(i = 0; i < PEOPLE_NUM; i++)
  {
    test[i] = 100 - i;
  }

  //テストの点数を入力
  printf("点数を入力してください。\n");
  scanf("%d", &targetScore);

  for(i = 0; i < PEOPLE_NUM; i++)  //0~99まで100回ループ
  {
    if(test[i] == targetScore)     //検索する点数を見つけたら
    {
      //iは0から始まるので1を足す(0→1位)
      printf("%d点の人は%3d位です。\n", targetScore, i + 1);
      endFlag = 1;  //フラグを立てる
      break;
    }
  }

  if(endFlag == 0)  //フラグが立っていない=検索に一致する点数なし
  {
    printf("該当する点数はありません。\n");
    return -1;      //エラーの場合はー1を返す。(ここでmain関数終了)
  }

  return 0;
}

実行例

その他:研修で作成したC言語プログラム

その他のC言語プログラムはこの投稿にまとめてあります!

C言語の初心者用コードなので是非活用して下さい。
【C言語】研修 サンプルプログラム集

コメント

タイトルとURLをコピーしました