五个学生学三门课,用c++求每个同学平均分,用函数(请大家看看我的代码错在哪?)

   www.gaoxiao88.net
你好,问题出在pp函数只能返回第一个同学的平均成绩。

以下是修改后的代码,请参考:

#include <iostream>
using namespace std;

// 增加一个参数,表示返回第几个同学的平均值
float pp(float a[5][3],int n)
{
float sum=0;

for(int j=0;j<=2;j++)
{
sum=sum+a[n][j];
}
float aver = (float)sum / 3;
return aver;
}

int main()
{

float b[5][3];
//pp(b); // 函数在这里执行没有意义,可以去掉。
for(int i=0;i<=4;i++)
for(int j=0;j<=2;j++)
cin>>b[i][j];

for(int i=0;i<=4;i++)
cout<<pp(b,i)<<"\t";

cout<<endl;

getchar();
return 0;
}

#include <iostream>
using namespace std;

float pp(float a[5][3])
{
float sum=0;

float aver[5];
for(int i=0;i<=4;i++)
{
// **************************************************
{ // 你这里的"{"括号是多余的
for(int j=0;j<=2;j++)
sum=sum+a[i][j];
aver[i]=sum/3;

sum=0;
}
// **************************************************
return (aver[i]);
}
}

int main()
{
float b[5][3];
pp(b);
for(int i=0;i<=4;i++)
for(int j=0;j<=2;j++)
cin>>b[i][j];

for(int i=0;i<=4;i++)
cout<<pp(b);

cout<<endl;
}

//你首先得明白你的函数的作用,是求一个学生的平均成绩呢,还是所有的
#include <iostream>
using namespace std;
float pp(float *b)
{
return ((b[0]+b[1]+b[2])/3);
}
int main()
{
float b[5][3];
for(int i=0;i<=4;i++)
for(int j=0;j<=2;j++)
cin>>b[i][j];
for(i=0;i<=4;i++)
cout<<pp(b[i])<<" ";
cout<<endl;
}

for(int i=0;i<=4;i++)
cout<<pp(b);
每次调用这个函数都只执行i=0的那次循环,求得b[0][0],b[0][1],b[0][2]三个数的平均数,然后返回了,稍微帮你改了下
#include <iostream>
using namespace std;

float pp(float a[3])
{
float sum=0;
float aver;
for(int j=0;j<=2;j++)
sum=sum+a[j];
aver=sum/3;
return aver;
}

int main()
{
float b[5][3];
for(int i=0;i<=4;i++)
for(int j=0;j<=2;j++)
cin>>b[i][j];

for(i=0;i<=4;i++)
cout<<pp(b[i])<<endl;

return 0;
}

问题所在:
pp()函数
for(int i=0;i<=4;i++)
cout<<pp(b);这个地方i重复定义就不说了!

对pp函数分析可知,以b作为参数的时候i,最后返回的时候是aver[4]的值,
因此cout<<pp(b);输出的只是最后一个学生的平均成绩,而其他人的成绩不输出!
修改措施如下:将结果的输出放在pp函数中
#include <iostream>
using namespace std;
void pp(float a[5][3])
{
float sum=0;
float aver[5];
for(int i=0;i<=4;i++)
{
for(int j=0;j<=2;j++)
sum=sum+a[i][j];
aver[i]=sum/3;
cout<<aver[i]<<"\n";
sum=0;
}
}

int main()
{

float b[5][3];
for(int i=0;i<=4;i++)
for(int j=0;j<=2;j++)
cin>>b[i][j];
pp(b);
cout<<endl;
}

或者,增加pp函数的参数,也可以!
#include <iostream>
using namespace std;

float pp(float a[5][3],int i)
{
float sum=0;
float aver[5];
for(int j=0;j<=4;j++)
{
for(int k=0;k<=2;k++)
sum=sum+a[j][k];
aver[j]=sum/3;
sum=0;
}
return (aver[i]);
}

int main()
{
float b[5][3];
for(int i=0;i<=4;i++)
for(int j=0;j<=2;j++)
cin>>b[i][j];
for(i=0;i<=4;i++)
cout<<pp(b,i);
cout<<endl;
}

楼主写的函数float pp(float a[5][3]),不太正确,因为程序中有个循环体,循环体中有个return,程序运行到第一个return,这一个函数就执行完成了,也就是说,只能返回第一个学生的平均分。

建议重新写。

用C++语言程序编写求5组学生3门课的总分与平均分(用函数实现)

#include
#include
using namespace std;
float score[5][3],add[5],average[5];
void fun()
{
int i,j;
for(i=0;i<5;i++)
{
add[i]=0;
for(j=0;j<3;j++)
add[i]+=score[i][j];
average[i]=add[i]/3;
}
}
int main ()
{
int i,j;
for(i=0;i<5;i++)
{
cout <<"输入第"<<i+1<<"个学生3门课程的成绩"<<endl;
for(j=0;j<3;j++)
scanf("%f",&score[i][j]);
}
fun();
for(i=0;i<5;i++)
cout <<"第"<<i+1<<"个学生总分:"<<setprecision(4)<<add[i]<<"平均分:"<<setprecision(4)<<average[i]<<endl;
system("pause");
return 0;
}

void average(struct stud st[])
{int i,j;
float sum;
for(i=0;i<n;i++)
{sum= 0 ;
for(j=0;j<m;j++)
sum= sum+st[i].mark[j] ;
st[i].ave =sum/m;
}
}

相关参考:

一个学习小组有5个人,每个人有三门课的考试成绩。编程实现求每科的...
用数组。我是c++ include<bits\/stdc++.h>using namespace std;int main(){ int a[6][4]; double sum[5]; cout<<"请输入每个人各科考试成绩"; for(int i=1;i<=5;i++) for(int j=1;j<=3;j++) cin>>a[i][j]; for(int i=1;i<=3;i++) sum[i]=...

C++:输入3位学生3门课(语文、英语、数学)的成绩,找出总分最高的分数所...
scanf("%d%d%d",&s[1][0],&s[1][1],&s[1][2],&s[1][3]);double a = s[1][4]=三门成绩相加 同上操作学生2,3得到成绩之和b,c 然后定义一个temp比较学生的成绩找出最大的那一个 如果学生多于3 人的话 可以用两个for循环嵌套的模式找出最大的一个 之后输出就Ok 了 。程序还...

一个C++简单问题
cout<<"学生1的三门课的平均成绩是"<<ave[0]<<endl;cout<<"学生2的三门课的平均成绩是"<<ave[1]<<endl;cout<<"学生3的三门课的平均成绩是"<<ave[2]<<endl;} void student::dis_h(){ for(i=0;i<4;i++){if(ave[i]>80)cout<<"平均分大于80分的学生"<<ave[i]<<endl;} ...

C语言问题(输入2个学生3门课的成绩并求每个学生的平均分和成绩和...
用数组或者结构都可实现,我这里用数组写。循环输入同时累加总分计算平均值。include<stdio.h> define MS 2\/\/最大学生人数 define MC 3\/\/最大科目数 int main(){ int i,j;float scs[MS][MC],avg[MC],sum[MC]={0};for(i=0;i<MS;i++){ printf("请输入学生%d的%d门成绩:",i+1,...

定义一个结构体类型的结构体数组stud,输入学生三门课成绩,然后按总分成 ...
include"string.h"struct student { int num;char name[20];float yingyu;float shuxue;float cc;float sum;};struct student stud[100];int main(){ int i,n,k,j,z=1;float t;char m[20];printf("输入有N个学生数");scanf("%d",&n);printf("学号 姓名 英语 数学 c++\\n"...

C++编程:已知某班由N名学生(N不超过30),学生信息记录包括学号、姓名和三...
}int main() {string st;int n,i,j;cout << "请输入学生人数:" << endl;cin >> n;cout<<"请输入学生信息:"<<endl;for ( i = 1; i <= n; i++) {\/\/成绩输入cin >>stu[i].id >> stu[i].name >> stu[i].course1 >> stu[i].course2 >> stu[i].course3;stu[i...

c++ 定义一个学生类,有学号、姓名、三门课程的成绩,求平均分 怎么破
}static float average2(){return(sum2\/count);}void total3(){sum3+=c;}static float average3(){return(sum3\/count);}}; float Student::sum1=0;float Student::sum2=0;float Student::sum3=0;int Student::count=0;int main(){ int n; cout<<"请输入学生人数:";cin...

用c++编写一个程序,要求创建一个类,输入若干个学生的数据,包括学号,姓名...
4、cin >> s[i].num;cout << "输入第" << i + 1 << "个学生的姓名:";cin >> s[i].name;s[i].total = 0;for (int j = 0; j < 3; j++){cout << "输入第" << j + 1 << "门课的成绩:";cin >> s[i].subject[j];s[i].total += s[i].subject[j];}...

用C++语言编写一个程序计算分别选修2,3和4门课程学生的平均分。其中,求...
include<iostream> using namespace std;float aver(int a,int b){return (a+b)\/2.0;} float aver(int a,int b,int c){return (a+b+c)\/3.0;} float aver(int a,int b,int c,int d){return (a+b+c+d)\/3.0;} int main(){ cout<<aver(67,89)<<endl;cout<<aver(67,...

C++ 有10个学生,从键盘输入10个学生的学号,姓名和3门课的成绩
}Student,*pStudent; \/\/不是有多少个学生就要定义多少个结构体名出来,typedef的用法如果不清楚,可以查一下 void print(pStudent stu);void holdScreen();int main(){ int i=0, max=0; \/\/养成良好习惯,变量定义时最好要自己初始化(虽然C++编译器会自动初始化,但是如果是指针的话,在C...

相关评论

  • 顾音4587: C语言编程:编写程序实现,5个学生,每个学生的数据包括学号、姓名、3门课的成绩 -
    15260649608: #include "stdafx.h" #include <stdio.h> struct student { int num; char name[20]; float sorce[3]; }stu[5];//10个选手 int main(int argc, char* argv[]) { for(int i=0;i<5;i++) { printf("请输入第%d个人的学号,姓名,三门课分数\n",i+1); scanf("%d%...

  • 顾音4587: 从键盘输入5个学生的姓名和三门课的成绩,用C++编程计算每个学生的平均成绩,并按从高到底的排列. -
    15260649608: #include <stdio.h> struct student { char name[5]; int mat; int eng; int com; int sum; float ave; }stu[5]; void range(struct student *p) { struct student change; for(int m=1;m<5;m++) { if((*(p+m)).ave<(*(p+m-1)).ave) { change=*(p+m-1); *(p+m-1)=*(p+m); *(p...

  • 顾音4587: 录入5个学生3门课的成绩,然后求班级每门课的平均成绩 用C++ -
    15260649608: #include<iostream> int eve(int x,int y,int z,int m,int n) { return((x+y+z+m+n)/5); //求平均值的函数 } void main() { int a[5][3]={0}; //定义一个数组存入成绩 int chinese=0; //定义语文成绩 int math=0; //定义数学成绩 int english=0; //定义英语成绩 ...

  • 顾音4587: 五个学生学三门课,用c++求每个同学平均分,用函数(请大家看看我的代码错在哪?) -
    15260649608: 你好,问题出在pp函数只能返回第一个同学的平均成绩.以下是修改后的代码,请参考:#include using namespace std;// 增加一个参数,表示返回第几个同学的平均值float pp(float a[5][3],int n){ float sum=0; for(int j=0;j<=2;j++) { sum=sum+a[n][j];...

  • 顾音4587: 用C语言求5个同学的3门课成绩要求按列输出,求每个同学的总分每门课的总成绩 -
    15260649608: 1、每门课一个数组.可计算总成绩. 2、构造同学类,每个同学建一个对象,同学类里包括3门课,和总分计算方法.

  • 相关话题

    ap在线精英在线最新简短笑话,好笑的段子,搞笑句子,男女朋友校园冷笑话,搞笑歌词对白台词,夫妻搞笑对话,手机流行笑话,逗人笑的动物经典笑话,最新幽默搞笑图文,好笑的视频分享给朋友
    若有事情,请联系电邮
    © <搞笑吧