1 #include <stdio.h> 2 /* 3 题目1:编写程序:读取6X5的整数数组,然后显示出每行的和与每列的和 4 例:enter row 1: 8 3 9 0 10 5 enter row 2: 3 5 17 1 1 6 enter row 3: 2 8 6 23 1 7 enter row 4:15 7 3 2 9 8 enter row 5: 6 14 2 6 0 9 enter row 6: 1 1 1 1 1 10 题目2:修改上面一题 使其提示用户输入每个学生5们测验的成绩,一共有6个学生,然后计算每个学生的总分和平均分,以及:每门测验的平均分 11 高分和低分。 12 */ 13 14 #define M 6 //6个学生 15 #define N 5 //5门成绩 16 #define K 2 //高分和低分 17 void get_row(int (*p)[N],int n); 18 void total(int (*p)[N],int *p2,int *p3,int (*p1)[K],int n); 19 void input_Student_ScoreSum(int *p,int m,int n); 20 void input_Tese_avg(int *p,int n); 21 void input_Tese_high_low(int (*p)[K],int n); 22 int main(void) 23 { 24 int arr[M][N];// 6个学生的5门成绩 25 int Student_ScoreSum[M] = {0};//每个学生的总分 26 int Tese_sum[N] = {0};//每门测验总分 27 int Tese_high_and_low[N][K] = {-1,101,-1,101,-1,101,-1,101,-1,101};//5门测验的高分和低分.初始化:高分初始为0分-1,即-1,低分初始为满分+1 即:101 28 //输入6个学生的5门成绩 29 get_row(arr,N); 30 //每个学生的总分与每门测验的总分 分别存入Student_ScoreSum和Tese_sum ,每门测验的高分,低分存入Tese_high_and_low 31 total(arr,Student_ScoreSum,Tese_sum,Tese_high_and_low,N); 32 //输出每个学生的总分和平均分 33 input_Student_ScoreSum(Student_ScoreSum,M,N); 34 //输出每门测验的平均分 35 input_Tese_avg(Tese_sum,M); 36 //输出每门测验的高分和低分 37 input_Tese_high_low(Tese_high_and_low,N); 38 39 40 return 0; 41 } 42 void get_row(int (*p)[N],int n) 43 { 44 for(int i = 0;i<M;i++) 45 { 46 printf("please enter student%d five score:",i+1); 47 for(int j = 0;j<n;j++) 48 scanf("%d",*(p+i)+j); 49 } 50 return ; 51 } 52 53 void total(int (*p)[N],int *Student_ScoreSum,int *Tese_sum,int (*p1)[K],int n) 54 { 55 for(int i = 0;i<M;i++) 56 { 57 // p1[i][0] = p[i][1] = **(p+i); //错误原因:第一行初始化了。程序继续运行,会将第二行的元素进行比较,但是第二行的元素没有初始化,内是垃圾值,并且是很大的负数 58 //所以结果是错误的。 59 for(int j = 0;j<n;j++) 60 { 61 Student_ScoreSum[i] += *(*(p+i)+j);//计算每个学生的总分 62 Tese_sum[j] += *(*(p+i)+j);//计算每门测验的总分 63 if(*(*(p+i)+j) >p1[j][0])//计算每门测试的最高分 64 p1[j][0] = *(*(p+i)+j); 65 if(*(*(p+i)+j) < p1[j][1])//计算每门测试的最低分 66 p1[j][1] = *(*(p+i)+j); 67 } 68 } 69 return ; 70 } 71 void input_Student_ScoreSum(int *p,int m,int n)//每个学生的总分和平均分 72 { 73 printf("-------------每个学生的总分和平均分----------------- "); 74 for(int i = 0;i< m;i++) 75 { 76 printf("Student%d ScoreSum = %d ",i+1,*(p+i));//输出学生的总分 77 printf("Student%d Scoreavg = %.2f ",i+1,(*(p+i)*1.0)/n);//输出学生的平均分 78 } 79 return ; 80 } 81 void input_Tese_avg(int *p,int n) 82 { 83 printf("-------------每门功课的平均分----------------- "); 84 for(int i = 0;i<n;i++) 85 { 86 printf("第%d们%.2f ",i+1,(*(p+i)*1.0)/n);//输出每门功课的平均分 87 } 88 putchar(10); 89 90 return ; 91 } 92 void input_Tese_high_low(int (*p)[K],int n) 93 { 94 printf("-------------每门功课的高分和低分----------------- "); 95 printf("序号 高分 低分 "); 96 for(int i = 0;i<n;i++) 97 { 98 printf("第%d门",i+1); 99 for(int j = 0;j < K;j++) 100 { 101 printf("%d ",*(*(p+i)+j)); 102 } 103 putchar(10); 104 } 105 return ; 106 }