编程对学生信息进行处理,要求写几个子函数分别实现:(1)随机输入不少于6个学生信息并保存;(2)按学号由小到大顺序排序后输出;(3)输入学号,用折半查找法找出该学生;(4)将第(3)找到的学生

编程对学生信息进行处理,要求写几个子函数分别实现:(1)随机输入不少于6个学生信息并保存;(2)按学号由小到大顺序排序后输出;(3)输入学号,用折半查找法找出该学生;(4)将第(3)找到的学生,第1张

编程对学生信息进行处理,要求写几个子函数分别实现:(1)随机输入不少于6个学生信息并保存;(2)按学号由小到大顺序排序后输出;(3)输入学号,用折半查找法找出该学生;(4)将第(3)找到的学生

(1)随机输入不少于6个学生信息并保存;

(2)按学号由小到大顺序排序后输出;

(3)输入学号,用折半查找法找出该学生;

(4)将第(3)找到的学生

#include
struct Student {
	int id;
	char name[20];
	int score;
};

//输入
void Input(struct Student *arr, int n) {
	for (int i = 0; i < n; i++)

	{
		printf("请输入第%d个学生的学号、姓名、成绩:", i + 1);
		scanf("%d %s %d", &arr[i].id, arr[i].name, &arr[i].score);
	}
}

//学号从低到高排序
void Sort(struct Student *arr, int n) {
	struct Student tmp;
	for (int i = 0; i < n - 1; i++) {
		for (int j = 0; j < n - i - 1; j++) {
			if (arr[j].id > arr[j + 1].id)

			{
				tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}
		}
	}
	printf("*******学生信息********n");
	for (int i = 0; i < n; i++) {
		printf("学号:%dt姓名:%st分数:%dn", arr[i].id, arr[i].name, arr[i].score);
	}
}
//查找
int Search(struct Student*arr, int n) {
	int x, low = 0, hight, mid, y;
	printf("请输入想要查找的学生的学号:");
	scanf("%d", &x);
	hight = n - 1;
	while (low <= hight) {

		mid = (low + hight) / 2;
		if (arr[mid].id == x) {
			y = mid;
			return y;
		} else if (arr[mid].id > x) {
			hight = mid - 1;
		} else {
			low = mid + 1;
		}
	}
	y=-1;
	return y;
}
void Output(struct Student*arr,int y) {
	if(y==-1){
		printf("查无此人!n");
	}
	else
	{
		printf("******查询结果为******n");
		printf("学号:%dt姓名:%st分数:%dn", arr[y].id, arr[y].name, arr[y].score);	
	}
}
int main() {
	int n,y;
	struct Student arr[100];
	printf("输入学生信息总数:n");
	scanf("%d", &n);
	Input(arr, n);
	Sort(arr, n);
	y=Search(arr, n);
	 Output(arr,y);

	return 0;
}

运行结果为

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5690628.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存