你这个数据在上一个问题里的啊。
(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;
}
不能翻译一下么......
没看到什么列指针和行指针要求啊,只是要求统计每门课成绩啊