有一个班4个学生,5门课程。①求第一门课程的平均分②找出有两门以上课程不及格的学生,输出她们的学号和全部课程成绩及平均成绩③找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编3函数实现之
/*第一问*/
#include<stdio.h>
int main(){float ave(int (*p)[5]); //函数声明 int score[4][5]={{78,86,55,59,90},{93,86,95,83,97},{89,88,90,86,91},{87,79,87,81,92}};printf("第一门课程平均分:%.2f",ave(score)); //函数调用及结果输出 return 0;
}
float ave(int (*p)[5]){ //形参为指向一维数组的指针变量 int i;float sum=0; //平均分可能为小数,故用浮点型 for(i=0;i<4;i++,p++){sum+=(*p)[0]; //累加每个学生的第一门课成绩 }return (sum/4);
}
/*第二问*/
#include<stdio.h>
int main(){void rev(int (*p)[5]); //函数声明 int score[4][5]={{78,86,55,59,90},{93,86,95,83,97},{89,88,90,86,91},{87,56,87,55,92}};printf("两门以上成绩不及格的学生:n"); //函数调用及结果输出 rev(score); //函数调用及其结果输出 return 0;
}
void rev(int (*p)[5]){ //形参为指向一维数组的指针变量 int i,j,sign=0; //0-1变量sign,用以判断该学生的成绩是否有两门及其以上科目不及格 for(i=0;i<4;i++,p++) //从第一个学生开始判断 for(j=0,sign=0;j<5;j++) //从第一个科目开始判断 if((*p)[j]<60) //如果当前科目成绩不及格if(sign==1){ //且sign为1(之前有科目也不及格 )printf("学号:%d;各科成绩:",i+1); //输出这个学生的学号 for(j=0;j<5;j++) //输出这个学生的所有科目成绩 printf("%d,",(*p)[j]);printf("n");}else sign=1; //如果sign不为1,这是该学生第一个不及格的科目,将sign置1
}
/*第三问*/
#include<stdio.h>
int main(){void pd(int (*p)[5]); //函数声明 int score[4][5]={{78,86,55,59,90},{90,88,91,86,92},{89,84,97,95,91},{87,56,87,55,92}};printf("平均成绩在90分以上或全部课程成绩在85分以上的学生学号:n"); pd(score); //函数调用及结果输出 return 0;
}
void pd(int (*p)[5]){int i,j,sign=0; //0-1变量sign,用以判断该学生的成绩是否有两门及其以上科目不及格 float sum;for(i=0;i<4;i++,p++){ //从第一个学生开始判断 for(j=0,sign=0;j<5;j++){ //从第一个科目开始判断 if((*p)[j]<85) { //若当前分数小于于85分 sign=1; break; //置sign=1(及已经不满足所有科目成绩都大于85分)跳出循环进入下一情况的判断 }else if(j==4&&sign==0) //当前科目是否是最后一个科目且sign=0(这位学生没有低于85分的科目) printf("NO.%dt",i+1); //满足条件则输出该生学号 }if(sign==1){ //若sign=1,开始第二种情况的判断 for(j=0,sum=0;j<5;j++) sum+=(*p)[j]; //累加该生没科成绩 if(sum/5>90) //平均分是否大于90 printf("NO.%dt",i+1); //是则输出该生学号 }}
}
本文发布于:2024-01-29 18:12:21,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170652314417333.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |