(1)随机输入不少于6个学生信息并保存;
(2)按学号由小到大顺序排序后输出;
(3)输入学号,用折半查找法找出该学生;
(4)将第(3)找到的学生
#includestruct 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; }
运行结果为
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)