声明:该编译器为vs,所以输入函数写为scanf_s形式!

1、顺序查找
(1)主要在线性表中进行查找,顺序查找通常分为对一般的无序线性表(无序表)的顺序查找和对按关键字有序的顺序表(有序表)的顺序查找。

2、折半查找
(1)折半查找又叫二分查找,仅用于有序顺序表。

代码如下:

#include <stdio.h>
#define N 40
int ReadScore(int score[], long num[]);//函数原型;
void DataSort(int score[], int n, long num[]);//函数原型;
void PrintfScore(int score[], int n, long num[]);//函数原型;
int LinSearch(long num[], long x, int n); //函数原型;
int BinSearch(long num[], long x, int n); //函数原型;
int main() {int score[N], n, pos1,pos2;//pos为查找学生成绩的下标位置;long num[N], x;//x为所要查找的学生学号;n = ReadScore(score, num);printf("Total students are %d\n", n);printf("Input the searching ID:");scanf_s("%ld", &x);pos1 = LinSearch(num, x, n);//顺序查找;if (pos1 != -1) { printf("顺序查找结果:score=%d\n", score[pos1]); }else { printf("Not found\n"); }pos2 = BinSearch(num, x, n);//折半查找,适合学号已经排好顺序的!!!!!!if (pos2 != -1) { printf("折半查找结果:score=%d\n", score[pos2]); }else { printf("Not found\n"); }DataSort(score, n, num);printf("Sorted scores:\n");PrintfScore(score, n, num);return 0;
}
//函数功能:读入该门课的成绩:
int ReadScore(int score[], long num[]) {int i = -1;printf("Input student't ID and score:\n");do {i++;scanf_s("%ld %d", &num[i], &score[i]);} while (num[i] > 0 && score[i] >= 0);return i;
}
//函数功能:将该门课的成绩按照高低排序;
void DataSort(int score[], int n, long num[]) {int i, j, temp1, k;long temp2;for (i = 0; i < n - 1; i++) {k = i;for (j = i + 1; j < n; j++) {if (score[j] > score[k]) {k = j;//记录最大的下标位置}}if (k != i) {//若最大数的下标位置不在下标位置i;temp1 = score[k]; score[k] = score[i]; score[i] = temp1;temp2 = num[k]; num[k] = num[i]; num[i] = temp2;}}
}
//函数功能:打印该门课的成绩;
void PrintfScore(int score[], int n, long num[]) {int i;for (i = 0; i < n; i++) {printf("%d%4d\n", num[i], score[i]);}
}
//按照线性查找法查找值为x,若找到则返回X的在数组中的下标位置,否则返回-1;
int LinSearch(long num[], long x, int n) {int i;for (i = 0; i < n; i++) {if (num[i] == x) { return i; }}return -1;
}
//利用折半法查找;同上;
int BinSearch(long num[], long x, int n) {int low = 0, high = n - 1, mid;while (low <= high) {mid = (high + low) / 2;if (x > num[mid]) { low = mid + 1; }else if (x < num[mid]) { high = mid - 1; }else return mid;}return -1;
}

运行结果如下:

C语言,功能一、利用一维数组和选择法对成绩高低排序,功能二、输出对应的学号,功能三、查找对应学生成绩相关推荐

  1. C语言,利用一维数组中选择法对成绩高低排序和输出对应的学号及利用顺序查找查找学生成绩

    声明:该编译器为vs,所以输入函数写为scanf_s形式! 代码如下: #include <stdio.h> #define N 40 int ReadScore(int score[], ...

  2. C语言,利用一维数组和选择法对成绩高低排序,及输出对应的学号

    声明:该编译器为vs,所以输入函数写为scanf_s形式! 代码如下: #include <stdio.h> #define N 40 int ReadScore(int score[], ...

  3. 请编写fun()函数,函数的功能是删去一维数组中相同的数据在一起出现的数,相同的数只保留一个

    <程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p143 7.1.2 上级实训内容 [实训内容13]请编写fun()函数,函数的功能是删去一维数组中相同 ...

  4. 如何利用一维数组实现二维数组的多列自由升降序排序过程详解

    如何利用一维数组实现二维数组的多列自由升降序排序过程详解 本例只说明多列排序的实现方式,一维数组的排序已经有过讲解不在赘述.所以本文是在已经完成了一维数组排序的函数封装的基础上完善多列排序的过程的详解 ...

  5. c语言实验报告5数组,c语言实验报告五一维数组.doc

    c语言实验报告五一维数组 <C程序设计>课程实验报告 学院: 班级: 姓名: 学号: 实验设备:计算机1台2011年3月1日 实验项目名称一维数组 掌握一维数组的定义.初始化,以及一维数组 ...

  6. 利用一维数组打印杨辉三角

    //利用一维数组打印杨辉三角 void main() {int A[MAX]={1};//A[0]=1 其他都为0int N;//杨辉三角层数int n,i,space;printf("请指 ...

  7. C语言中怎么用循环统计买法,C语言入门谭浩强版简单选择法冒泡法用数组和for循环进行学生成绩简单统计处理...

    C语言入门谭浩强版 简单选择法排序 冒泡法排序 用数组和for循环进行学生成绩简单统计处理 例如:求个人平均分 学科平均分 单科最高分等 简单选择法 #include #define N 10 voi ...

  8. C/C++ 一维数组的传参/一级指针的传参 二维数组的传参/二级指针的传参 三维数组的传参/三级指针的传参 方法总结分析终极篇

    序 最近复习c/c++数组的传参,发现了一些问题,下面是一些总结和思考 正文 一维数组的传参/一级指针的传参/普通指针 在理解指针的基础上,一维数组的指针传递很简单,我们知道数组的数组名就是这个数组首 ...

  9. C语言,利用一维数组选择法排序,使学生成绩高低排序(要求输入为负值时输入结束)

    声明:该编译器为vs,所以输入函数写为scanf_s形式! 代码如下: #include <stdio.h> #define N 40 int ReadScore(int score[]) ...

最新文章

  1. python使用matplotlib可视化堆叠的直方图(stacked histogram plot)、多个类别的数据在直方图区间层面累积堆叠起来
  2. 怎么把项目推到gitlab上_Gitlab利用Webhook+jenkins实现自动构建与部署
  3. Unity3d—做一个年月日选择器(Scroll Rect拖动效果优化)— 无限滚动 + 锁定元素...
  4. PearProject 安装指南
  5. ReportViewer教程(8)-对报表作一些调整(格式和属性)
  6. C语言学习输入输出函数,函数的调用
  7. 2015计算机类专业课类试卷,2015年自考《计算机应用基础》模拟试题及答案
  8. Web API-本地存储
  9. android上传图片失败问题
  10. offsetLeft
  11. php命令行是什么,什么是命令行?
  12. 使用pythonping检查设备的连通性并记录可达设备(eNSP模拟器)
  13. 一道money计算题引发的思考
  14. TeeChart Pro Activex 2022.1/32/64/Crack
  15. cuba-platform和jmix框架
  16. python的logo的代码_简单几步,100行代码用Python画一个蝙蝠侠的logo
  17. cgcs2000大地坐标系地图_测绘人必备!从地方坐标系到2000国家大地坐标系的转换...
  18. java 事件冷却,基于“牛顿冷却定律”的机器学习算法
  19. android软路由,软路由体验 篇一:  100块钱还要啥自行车,软路由初体验
  20. 【第十一篇】字体设置css变形(transfom)4种

热门文章

  1. 人工智障学习笔记——机器学习(6)协同过滤
  2. 每日一题(C语言基础篇)3
  3. 什么是Vim,Vim及其安装
  4. 草稿 断开式绑定combobox 1128
  5. django-带签名的cookie
  6. 技术讲坛新模式,积分制
  7. python知识汇总,python一期
  8. img标签设置display:block,宽度无法100%
  9. Zepto自定义模块打包构建
  10. Office EXCEL 中如何让一个单元格的数据链接到另一个工作表的数据