刚开始学习指针,跪求解决方案和原因!
#include<stdio.h>
void main()
{
int *chazhao(int);
void bujige(int);
int a[5][3] = { {59,60,60},{61,60,61},{67,87,99} ,{66,77,88},{49,32,65} };
int n, i, j;
printf("输入学生学号:\n");
scanf_s("%d", &n);
printf("该学生成绩是:");
for (i = 0; i <= 2; i++)
{
printf("%d ", *(chazhao(n, a) + i));
}
printf("\n");
printf("不及格的学生有:\n");
bujige(a);
system("pause");
}
int *chazhao(int q, int *p[3])
{
int *m;
m = p + q;
return m;
}
void bujige(int *k[3])
{
int x, y;
for (x = 0; x <= 4; x++)
{
for (y = 0; y <= 2; y++)
{
if (*(*(k + x) + y) < 60)
{
printf("%d", x);
}
}
}
}
哇!
犯傻了!
代码不规范,亲人俩行泪!
将
void bujige(int *k[3])
改成
void bujige(int (*k)[3])
就可以了,但是原理还是不是很懂
求解释
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *chazhao(int q, int *p);
void bujige(int *k);
int a[5][3] = { {59,60,60},{61,60,61},{67,87,99} ,{66,77,88},{49,32,65} };
int n;
printf("输入学生学号:\n");
scanf_s("%d", &n);
printf("该学生成绩是:");
for (int i = 0; i <= 2; i++)
{
printf("%d ", *(chazhao(n, &a[0][0]) + i));
}
printf("\n");
printf("不及格的学生有:\n");
bujige(&a[0][0]);
system("pause");
}
int *chazhao(int q, int *p)
{
int *m;
m = p + q;
return m;
}
void bujige(int *k)
{
int x, y;
for (x = 0; x <= 4; x++)
{
for (y = 0; y <= 2; y++)
{
if (k[x*3+y] < 60)
{
printf("%d\n", x);
break;
}
}
}
}