有3个学生,每个学生有4门课程的成绩,要求在用户输入学生序号以后,能输出该学生的全部成绩
#include <stdio.h>
//有3个学生,每个学生有4门课程的成绩,要求在用户输入学生序号以后,能输出该学生的全部成绩
int* getPosPerson(int pos, int(*pstu)[4])//函数指针,返回指针的函数
{
int *p;
p = pstu + pos;//取出一维数组
return p;
}
int main()
{
int scores[3][4] = {
{55,66,77,88},
{66,77,88,99},
{22,33,44,55}
};
int pos;
int *ppos;
int *p;
printf("请输入你需要看的学生号数:0、1、2\n");
scanf_s("%d", &pos);
ppos = getPosPerson(pos,scores);
for (int i = 0; i < 4; i++) {
printf("%d\t", *ppos++);
}
return 0;
}
有3个学生,每个学生有4门课程的成绩,找出其中有不及格的课程的学生及其学生号
//有3个学生,每个学生有4门课程的成绩,找出其中有不及格的课程的学生及其学生号
#include<stdio.h>
float *search(float(*pointer)[4])
{
int i;
float *pt;
pt = NULL;
for (i = 0; i < 4; i++) {
if (*(*pointer + i) < 60) pt = *pointer;
}
return pt;
}
int main()
{
float scores[3][4] = { {60,70,80,90},{56,89,67,88},{34,78,90,66} };
float *p;
int i, j;
for (i = 0; i < 3; i++) {
p = search(scores + i);//取出分数含有小于60的一维数组
if (p == *(scores + i))//如果取出来的数组相同(证明里面有小于60的值)
{
printf("the No.%d ", i);
for (j = 0; j < 4; j++) {
printf("%5.2f ", *(p + j));//p是一维数组,scores是二维数组
}
printf("\n");
}
}
return 0;
}