问题: 有若干个学生的成绩(每个学生有4门课程),要求在用户输入学生序号(学生序号从0号算起),要求在用户输入学生序号以后,能输出该学生的全部成绩。
方法一: 常规输出二维数组的方法
#include <stdio.h> int main(int argc, char *argv[]) { float score[3][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}}; printf("please enter num: "); int n,i; scanf("%d",&n); for(i=0;i<4;i++) printf("%5.2f\t",score[n][i]); // printf("%5.2f\t",*(*(score+n)+i)); printf("\n"); return 0; }
方法二: 用指针函数(返回制指针值的函数)
#include <stdio.h> int main(int argc, char *argv[]) { float score[3][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}}; float *search(float (*pointer)[4],int n); float *p; int i,m; printf("enter the number of student:"); scanf("%d",&m); p=search(score,m); for(i=0;i<4;i++)printf("%5.2f\t",*(p+i)); printf("\n"); return 0; } float *search(float (*pointer)[4],int n){ float *pt; pt=*(pointer+n); return(pt); }
float (*pointer) [4] 表示pointer是一个指针变量,它指向包含4个浮点型元素的一维数组;