提高第27课时,实践4,查找成绩
2015-05-19 13:32
337 查看
/* *Copyright(c) 2015/5/19 CSDN博客 *All rights reserved. *文件名称:main.c *作 者:金叶 *完成日期:2015/5/19 *版本号:V1.0 项目4 - 查成绩 */ #include <stdio.h> #include <stdlib.h> int readData(int num[],int score[]); int search(int num[], int count,int key); void sort(int num[], int score[], int count); int main() { int num[200], score[200]; //分别保存学号和成绩 int count; //代表学生人数 int index; //代表查找到的学生的下标 int key; int yn=1; count = readData(num, score); //将成绩数据从文件中读到数组中 sort(num, score, count); //将保存学号和成绩的两个数组按学号排序 while(yn) //从文件中读出数据,就是要多次使用的,排序花的代价,也值了 { printf("请输入要查找的学生学号:"); scanf("%d",&key); index = search(num, count, key); //在count个学生中查找学号为key的学生对应的下标 if(index < 0) printf("不存在学号为%d的同学\n",key); else printf("学号为%d的同学的成绩是:%d\n", key, score[index]); printf("输入1继续,输入0结束..."); scanf("%d", &yn); } return 0; } int readData(int num[],int score[]) { FILE *fp; int i=0;//i计算人数 if ((fp=fopen("score1.txt","r"))==NULL){ printf("score1 file cannot open!"); exit(0);} else { while(fscanf(fp,"%d%d",&num[i],&score[i])!=EOF) //读入学号和成绩 i++; } fclose(fp); return i; } void sort(int num[], int score[], int count) { int i,j,t; for(i=0; i<count-1; i++) for(j=0; j<count-j-1; j++) if (num[j]>num[j+1]) //根据学号升序排序 { t=num[j]; //交换学号 num[j]=num[j+1]; num[j+1]=t; t=score[j]; //同步交换成绩 score[j]=score[j+1]; score[j+1]=t; } return; } int search(int num[], int count,int key) { int low=0,high=count-1,mid,index; while(low<=high){ mid=(low+high)/2; if (num[mid]==key){ index=mid; break; } else if (key>num[mid]) low = mid + 1; else high = mid - 1; } if (low>high) index=-1; return index; }
相关文章推荐
- 提高第24课时,实践2,成绩处理V2.0 数组指针版
- 提高第18课时,实践2,成绩处理
- 提高第27课时,实践3,项目3-数组的排序
- 提高第38课时,实践1,用命令行运行程序
- 提高第40课时,实践,简易银行系统开发
- 提高第18课时,实践5,发奖金
- 提高第26课时,实践2,项目2 - 删除数组元素
- 提高第38课时,实践2,项目2 - 带行号显示文件
- 提高第21课时,实践1,项目1-有几个
- 提高第21课时,实践3,有序数组中插入数据
- 提高第38课时,实践3,项目3 - 命令行加法器
- 提高第6课时,实践1,k次方之和
- 提高第34课时,实践1,【项目1-二维数组当函数参数】
- 提高第39课时,实践1,项目1-学生人数没个准
- 提高第36课时,实践2,项目2-多科成绩单
- 提高第9课时,实践2,歌手大奖赛计分系列
- 提高第31课时,实践1,项目1-M$pszi$y是嘛意思?
- 提高第31课时,实践2
- 提高第39课时,实践2,项目2-动态数组排序
- 提高第21课时,实践3,有序数组中插入数据 (第2种方法)