为什么我写入数据文件没有用啊

葱卤山猪 2019-12-27 10:59:49
//对一次歌手比赛的成绩进行管理// //功能要求:1、输入每个选手的数据包括编号、姓名、十个评委的成绩,根据输入计算出总成绩和平均成绩(去掉最高分,去掉最低分)。// //2、显示主菜单如下:1)输入选手数据 2)评委打分 3)成绩排序(按平均分)4)数据查询  5)追加学生数据 6)写入数据文件7)退出系统。// #include"stdio.h" void swap(int *a, int *b) //交换// { int t; t = *a; *a = *b; *b = t; } struct singers //定义结构体// { int num, score[10], max, min, total; char name[20]; float ave; }; void getsinger(struct singers singer[], int n) //定义函数:输入选手总人数、选手序号及姓名// { int i; for (i = 0; i < n; i++) { printf("请输入选手序号及姓名\n"); scanf("%d", &singer[i].num); scanf("%s", &singer[i].name); } } void getscore(struct singers singer[], int n) //定义函数:输入选手成绩// { int i, j; for (i = 0; i < n; i++) { printf("第%d位选手的成绩为\n", i + 1); for (j = 0; j < 10; j++) scanf("%d", &singer[i].score[j]); } } void sort(struct singers singer[], int n) //排序// { int i, k, j,sum[1000] = { 0 }; for (i = 0; i < n; i++) { for (k = 0; k < 10; k++) //冒泡排序// for (j = 0; j<9; j++) { if (singer[i].score[j] > singer[i].score[j + 1]) swap(&singer[i].score[j], &singer[i].score[j + 1]); } singer[i].max = singer[i].score[9]; singer[i].min = singer[i].score[0]; for (j = 1; j < 9; j++) sum[i] = singer[i].score[j] + sum[i]; singer[i].ave = sum[i] / 8.0; singer[i].total = sum[i] + singer[i].max+ singer[i].min; } } main() { int i,j; FILE*fp; fp = fopen("data.txt", "w+"); int a,m, n, flag = 1; struct singers singer[100]; printf("请输入有多少选手\n"); scanf("%d", &n); while (flag) { printf("**********1、输入选手数据**********\n"); printf("**********2、评 委 打 分**********\n"); printf("**********3、成 绩 排 序**********\n"); printf("**********4、数 据 查 询**********\n"); printf("**********5、追加选手数据**********\n"); printf("**********6、写入数据文件**********\n"); printf("**********7、退 出 系 统**********\n"); printf("请选择执行操作\n"); scanf("%d", &a); switch (a) { case 1:getsinger(singer, n); break; case 2:getscore(singer, n); break; case 3: sort(singer, n); for (i = 0; i < n; i++) for (j = 0; j < n - 1 ; j++) { if (singer[j].ave>singer[j + 1].ave) swap(&singer[j].ave, &singer[j + 1].ave); }for (i = 0; i < n; i++) printf("%d号%s平均分为%.1f\n", singer[i].num, singer[i].name, singer[i].ave); break; case 4:printf("你想查询几号选手的数据\n"); scanf("%d", &m); for (i = 0; i < n; i++) if (singer[i].num == m) printf("第%d号选手最高分为%d 最低分为%d 总分为%d 平均分为%.1f\n", m, singer[i].max, singer[i].min, singer[i].total, singer[i].ave);break; case 5:printf("请输入追加的选手数据:序号,名字,成绩\n"); n = n + 1; scanf("%d", &singer[n].num); scanf("%s", &singer[n].name); for (i = 0; i < 10; i++) scanf("%d",&singer[n].score[i]); break; case 6: printf("将数据写入文件中\n"); for (i = 0; i < n + 1; i++) {fprintf(fp, "%d", singer[i].num); fprintf(fp, "%s", singer[i].name); fprintf(fp, "%d", singer[i].score); }break; case 7:exit(0); break; default:flag = 0; } } }
...全文
12 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-06
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧