这个是题目,要求用行指针或列指针解决问题,题目要求如图所示,看看该怎么思考动笔
3条回答 默认 最新
- 技术专家团-小桥流水 2022-11-16 13:14关注
你这个数据在上一个问题里的啊。
(1)
定义二维数组scores[5][5]用来保存5个学生的学号和4门课程成绩
int (* p)[5] = scores; 行指针访问定义二维数组scores[5][5]用来保存5个学生的学号和4门课程成绩,每行代表1个学生,每行第一列代表学生的学号,后面4行代表4门课程的成绩, int (* p)[5] = scores; //行指针,t = *(*(p + j) + i + 1);获取j行的第i门课程成绩
代码(数据没有输入,直接用你上一个题目里的数据固定了):
#include <stdio.h> //课程平均分,因为把学号也放在数组中了,所以m是5 void average(int scores[][5], int n, int m, const char kc[][10]) { int i, j, t; float ave = 0; int(*p)[5] = scores; //行指针 for (i = 0; i < m - 1; i++) //m-1门课程,第0列是学号 { ave = 0; //重置平均值 for (j = 0; j < n; j++) //n个学生累加 { t = *(*(p + j) + i + 1); //相当于scores[j][i+1] printf("%d ", t); ave += t; //累加i列的成绩 } ave /= n; printf("%s:%.2f\n", kc[i], ave); } } //找出两门课不及格的学生 void search(int scores[][5], int n, int m, const char name[][10]) { int i, j, cnt = 0; float ave = 0; int(*p)[5] = scores; //行指针 int* q; int flag = 0; printf("两门课以上不及格的学生:\n"); for (i = 0; i < n; i++) { q = *(p + i);//第i行的指针 cnt = 0; ave = 0; for (j = 1; j < m; j++) { ave += q[j]; if (q[j] < 60) cnt++; } ave /= (m - 1); if (cnt > 2) //多于2门不及格 { flag = 1; //输出 printf("%d %s ", q[0], name[i]); for (j = 1; j < m; j++) printf("%d ", q[j]); printf("%.2f\n", ave); } } if (flag == 0) printf("没有符合条件的学生\n"); } //找出所有课程成绩大于85分的学生 void search2(int scores[][5], int n, int m, const char name[][10]) { int i, j, cnt = 0,flag = 0; float ave = 0; int(*p)[5] = scores; //行指针 int* q; printf("所有课程成绩大于等于85分的学生:\n"); for (i = 0; i < n; i++) { q = *(p + i);//第i行的指针 cnt = 0; ave = 0; for (j = 1; j < m; j++) { ave += q[j]; if (q[j] >= 85) cnt++; } ave /= 4; if (cnt == 4) //4门成绩都大于85 { flag = 1; //输出 printf("%d %s ", q[0], name[i]); for (j = 1; j < m; j++) printf("%d ", q[j]); printf("%.2f\n", ave); } } if (flag == 0) printf("没有满足条件的学生\n"); } int main() { const char kc[4][10] = { "math","eng","phys","chem" }; const char name[5][10] = { "Zhang","Wang","Li","Sun","Zhao" }; int scores[5][5] = { {3001,82,78,88,93},{3002,46,68,62,57},{3003,92,86,85,87},{3004,52,77,55,47},{3005,58,90,85,77} }; average(scores, 5, 5, kc); search(scores, 5, 5, name); search2(scores, 5, 5, name); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
- ¥15 java 的protected权限 ,问题在注释里
- ¥15 这个是哪里有问题啊?
- ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
- ¥15 texstudio的问题,
- ¥15 spaceclaim模型变灰色
- ¥15 求一份华为esight平台V300R009C00SPC200这个型号的api接口文档
- ¥15 字符串比较代码的漏洞
- ¥15 欧拉系统opt目录空间使用100%
- ¥15 ul做导航栏格式不对怎么改?