| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 749 人关注过本帖
标题:[求助一个有关数组当作函数参数的问题
只看楼主 加入收藏
dachaoqichao
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-7-29
收藏
 问题点数:0 回复次数:6 
[求助一个有关数组当作函数参数的问题

请帮我看看这个程序问题在哪?
题:5个学生,4门课,要求主函数分别调用各函数实现:
(1)找出成绩最高的学生序号和课程;
(2)找出不及格课程的学生序号及其各门课的全部成绩;
(3)求全部学生各门课程的平均分数,并输出;
程序:
#include <iostream.h>
void findMax(int a[][4], int row,int col);
void findBad(int a[][4], int row,int col);
void average(int a[][4], int row,int col);
void main()
{
int array[5][4]={{88,67,48,91},
{61,65,37,77},
{92,81,73,60},
{51,55,60,60},
{77,63,70,80}};
findMax(array,5,4);
findBad(array,5,4);
average(array,5,4);
}
void findMax(int a[][4], int row,int col)
{
int r=0,c=0;
for(int i=0; i<row; i++)
for(int j=0; j<col; j++)
if(a[i][j]>a[r][c])
r=i,c=j;
cout <<"成绩最高的学生序号: " <<(r+1) <<" ";
for(int i=0; i<col; i++)
cout <<a[r][i]<<" ";
cout <<endl;
}

void findBad(int a[][4], int row,int col)
{
for(int i=0; i<row; i++)
for(int j=0; j<col; j++)
if(a[i][j]<60){
cout <<"有不及格课程的学生序号: " <<(i+1) <<" ";
for(int k=0; k<col; k++)
cout <<a[i][k] <<" ";
cout <<endl;
break;
}
}

void average(int a[][4], int row,int col)
{
double sum=0;
for(int i=0; i<row; i++)
for(int j=0; j<col; j++)
sum+=a[i][j];

cout <<"所有课程平均分数为: " <<sum/row/col <<endl;
}

搜索更多相关主题的帖子: 函数 参数 课程 学生 序号 
2006-08-03 22:52
ecbtnrt
Rank: 1
等 级:新手上路
威 望:1
帖 子:189
专家分:0
注 册:2006-4-16
收藏
得分:0 
以下是引用dachaoqichao在2006-8-3 22:52:28的发言:

请帮我看看这个程序问题在哪?
题:5个学生,4门课,要求主函数分别调用各函数实现:
(1)找出成绩最高的学生序号和课程;
(2)找出不及格课程的学生序号及其各门课的全部成绩;
(3)求全部学生各门课程的平均分数,并输出;
程序:
#include <iostream.h>
void findMax(int a[][4], int row,int col);
void findBad(int a[][4], int row,int col);
void average(int a[][4], int row,int col);
void main()
{
int array[5][4]={{88,67,48,91},
{61,65,37,77},
{92,81,73,60},
{51,55,60,60},
{77,63,70,80}};
findMax(array,5,4);
findBad(array,5,4);
average(array,5,4);
}
void findMax(int a[][4], int row,int col)
{
int r=0,c=0;
for(int i=0; i<row; i++)
for(int j=0; j<col; j++)
if(a[i][j]>a[r][c])
r=i,c=j;
cout <<"成绩最高的学生序号: " <<(r+1) <<" ";
for(int i=0; i<col; i++) //定义了i两次在同一的函数中只需去掉int
cout <<a[r][i]<<" ";
cout <<endl;
}

void findBad(int a[][4], int row,int col)
{
for(int i=0; i<row; i++)
for(int j=0; j<col; j++)
if(a[i][j]<60){
cout <<"有不及格课程的学生序号: " <<(i+1) <<" ";
for(int k=0; k<col; k++)
cout <<a[i][k] <<" ";
cout <<endl;
break;
}
}

void average(int a[][4], int row,int col)
{
double sum=0;
for(int i=0; i<row; i++)
for(int j=0; j<col; j++)
sum+=a[i][j];

cout <<"所有课程平均分数为: " <<sum/row/col <<endl;
}

如果你自己运行一下的话,很容易就能发现啊


我为你痴,为你狂!
2006-08-03 23:11
dachaoqichao
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-7-29
收藏
得分:0 
谢谢2楼的朋友的帮忙,这个程序编出来我也运行过了,只是出现了错误提示error C2374: 'i' : redefinition; multiple initialization和see declaration of 'i'。不太清楚是什么意思。现在在你的提示下,知道了。在这里谢谢了!
2006-08-04 23:02
boboguan
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-6-14
收藏
得分:0 
恩,在vc++6.0中编译确实有这样的问题
但在标准c++中这样是可以的呀
两个i都是各自for循环中的局部变量
所以没什么问题啊
这是为什么啊?
难道vc++6.0是标准c++前的产品?
2006-08-05 08:33
触电
Rank: 1
等 级:新手上路
威 望:1
帖 子:228
专家分:0
注 册:2006-7-26
收藏
得分:0 
用DEV C++不会有这种问题
估计是编译器做过优化了
2006-08-05 11:29
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
不用管他
估计是BUG
就这个有这样情况
VC++ BUG很多

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-08-08 14:44
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 

是編譯器判斷 {} 作用域的問題

對於 for 循環
for(......)
{
}

這個大括弧並不包括循環變數 int i, VC 就是根據這個來判斷變數作用域的,

對於樓主的問題, 在
for 前後加上 {} 就可以了
-----------------------------------------------------------------------------------------------------
for(int i=0..........)
.......;

{
for(int i=0......)
.......;
}
這樣就可以明確作用域了


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-08-09 00:22
快速回复:[求助一个有关数组当作函数参数的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027124 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved