| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 593 人关注过本帖
标题:函数调用出问题了,大伙进来看一看
只看楼主 加入收藏
梦里仙
Rank: 2
等 级:论坛游民
威 望:2
帖 子:28
专家分:30
注 册:2012-2-24
结帖率:62.5%
收藏
已结贴  问题点数:6 回复次数:7 
函数调用出问题了,大伙进来看一看
#include<iostream>
using namespace std;


const int stuNum=5;


void main()
{

struct STUDENT *stu;
    int i;
    for(i=0;i<stuNum;i++)
    {
        cout<<"输入第"<<i+1<<"个学生信息\n";
        stu[i]=InputStudent();
    }
    CalAverage(stu,stuNum);
    PrintStudent(stu,stuNum);

}

void InputStudent()
{
struct STUDENT
{
double num;
float name[8];
float score[3];
float ave;
}stu[stuNum];
int i=0,j=0;
if(i<stuNum)
{
cin>>stu[i].num;
cout<<"分别输入三门成绩:";
if(j<3)
{
cin>>stu[i].score[j];
cout<<endl;
j++;
}
cin>>stu[i].ave;
cout<<endl;
i++;
}

void CalAverage(STUDENT *stu,int stuNum)
    {
      int i,j;
      double s=0;
      for(i=0;i<stuNum;i++)
      {
      for(j=0;j<3;j++)
      {
      s=s+stu[i].score[j]
      }
      s=s/3.0;
      stu[i].ave=s;
      }
      
      
}  


void PrintStudent(STUDENT *data,int stuNum)
{
    cout<<"\n学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分\n";
    for(int i=0;i<stuNum;i++)
    {
        cout<<data[i].num <<"\t"<<data[i].name ;
        for(int j=0;j<3;j++)
        {
            cout<<"\t"<<data[i].score [j];
        }
        cout<<"\t"<<data[i].ave<<endl;
    }
}












 
搜索更多相关主题的帖子: void include 三门 
2012-05-16 21:32
唯我独魔
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:176
专家分:782
注 册:2011-4-13
收藏
得分:2 
信息好少,就给个程序,哪里出问题了呢?
2012-05-18 13:03
梦里仙
Rank: 2
等 级:论坛游民
威 望:2
帖 子:28
专家分:30
注 册:2012-2-24
收藏
得分:0 
#include<iostream>
using namespace std;
const int stuNum=5;
struct STUDENT
{
double num;
float name[8];
float score[3];
float ave;
};

int InputStudent()
{

struct STUDENT *stu;
int i=0,j=0;
for(i=0;i<stuNum;i++)
{
cin>>stu[i].num;
cout<<"分别输入三门成绩:";
for(j=0;j<3;j++)
{
 cin>>stu[i].score[j];
cout<<endl;
return stu[i].score[j];
}
 cin>>stu[i].ave;
cout<<endl;
return stu[i].ave;
}


int CalAverage( struct STUDENT *stu,int stuNum)
    {
   
    int i,j;
      double s=0;
      for(i=0;i<stuNum;i++)
      {
      for(j=0;j<3;j++)
      {
      s=s+stu[i].score[j];
      }
      s=s/3.0;
      stu[i].ave=s;
       return  stu[i].ave;
      }
      
      
}  

void main()
{

struct STUDENT *stu;
   
int i;
    for(i=0;i<stuNum;i++)
    {
        cout<<"输入第"<<i+1<<"个学生信息\n";
        stu[i]=InputStudent();
    }
    CalAverage(stu,stuNum);
    PrintStudent(stu,stuNum);

}





void PrintStudent(struct STUDENT *data,int stuNum)
{
    int i;
    cout<<"\n学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分\n";
    for( i=0;i<stuNum;i++)
    {
        cout<<data[i].num <<"\t"<<data[i].name ;
        for( j=0;j<3;j++)
        {
            cout<<"\t"<<data[i].score [j];
        }
        cout<<"\t"<<data[i].ave<<endl;
    }
}
error C2601: 'CalAverage' : local function definitions are illegal
 error C2601: 'main' : local function definitions are illegal
 error C2601: 'PrintStudent' : local function definitions are illegal
 fatal error C1004: unexpected end of file found
2012-05-18 19:03
荡气回肠
Rank: 2
等 级:论坛游民
帖 子:33
专家分:40
注 册:2012-5-6
收藏
得分:2 
楼主程序问题多多,函数必须在被调用之前声明。还有就是逻辑要清楚,如果用函数调用的方式编写此程序,应注意诸多问题。

#include <iostream>
using namespace std;

const int stuNum = 5;

struct STUDENT
{
    char number[10];
    char name[8];
    float score1;
    float score2;
    float score3;
}stu[stuNum];

int main()
{
    struct STUDENT stu[stuNum];
    int i;
    float sum, average;
    /*输入学生数据*/
    cout << endl
         << "请分别输入五个学生的:学号 姓名 成绩1 成绩2 成绩3"
         << endl;
   
    for ( i = 0; i != stuNum; ++i )
        cin >> stu[i].number >> stu[i].name
            >> stu[i].score1 >> stu[i].score2
            >> stu[i].score3;
    cout << endl;
   
    for ( i = 0; i != stuNum; ++i ) {
        sum = stu[i].score1 + stu[i].score2 + stu[i].score3;
        average = sum / 3.0;
        cout << "\n学号:\t" << stu[i].number << "\n姓名:\t" << stu[i].name << "\n成绩1:\t"
             << stu[i].score1 << "\n成绩2:\t" << stu[i].score2 << "\n成绩3:\t"
             << stu[i].score3 << "\n平均成绩:  "
             << average << endl;
        cout << endl;
    }

    return 0;
}

[ 本帖最后由 荡气回肠 于 2012-5-18 22:29 编辑 ]
2012-05-18 22:20
梦里仙
Rank: 2
等 级:论坛游民
威 望:2
帖 子:28
专家分:30
注 册:2012-2-24
收藏
得分:0 
为什么运行后这种情况?求助——

#include<iostream>
using namespace std;
const int stuNum=5;
void PrintStudent(struct STUDENT *data,int stuNum);
void CalAverage( struct STUDENT *stu,int stuNum);
void InputStudent();
struct STUDENT
{
    int number;
    int score1;
    int score2;
    int score3;
    float ave;
};

void InputStudent()
{

struct STUDENT stu[stuNum];
int i=0,j=0;
for(i=0;i<stuNum;i++)
{
cout<<"输入学号:"<<endl;
cin>>stu[i].number;
cout<<"分别输入三门成绩:"<<endl;
cin>>stu[i].score1;
cin>>stu[i].score2;
cin>>stu[i].score3;
cout<<endl;
}
}

void CalAverage( struct STUDENT *stu,int stuNum)
 {
   
    int i,j;
      double s=0;
      for(j=0;j<stuNum;j++)
      {
      for(i=0;i<3;i++)
      {
      s=s+stu[i].score1+stu[i].score2+stu[i].score3;
      }
     
      stu[i].ave=s/3.0;;
      cout<<endl;
      }
      
 }  

void main()
{

struct STUDENT stu[stuNum];
InputStudent();
CalAverage(stu,stuNum);
PrintStudent(stu,stuNum);

}

void PrintStudent(struct STUDENT *data,int stuNum)
{
    int i,j;
    cout<<"\n学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分\n";
    for( j=0;j<stuNum;j++)
    {
        cout<<data[i].number;
        for(i=0;i<3;i++)
        {
            cout<<"\t"<<data[i].score1;
            cout<<"\t"<<data[i].score2;
            cout<<"\t"<<data[i].score3;
        }
        cout<<"\t"<<data[i].ave<<endl;
    }
}
2012-05-21 23:15
一只小妖
Rank: 2
等 级:论坛游民
帖 子:7
专家分:13
注 册:2012-2-27
收藏
得分:2 
运行了一下,没看出哪出了问题
2012-05-22 10:18
梦里仙
Rank: 2
等 级:论坛游民
威 望:2
帖 子:28
专家分:30
注 册:2012-2-24
收藏
得分:0 
你输入5组数据,试下,出现的东东,太可怕了
2012-05-22 22:53
lknight
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:37
专家分:187
注 册:2008-9-17
收藏
得分:2 
程序代码:
#include<iostream>
using namespace std;
const int stuNum=5;
void PrintStudent(struct STUDENT *data,int stuNum);
void CalAverage( struct STUDENT *stu,int stuNum);
void InputStudent();
struct STUDENT
{
    int number;
    int score1;
    int score2;
    int score3;
    float ave;
};

void InputStudent()
{

struct STUDENT stu[stuNum];//这是个局部变量,作用域仅在函数InputStudent()内,函数执行完后就不存在了
int i=0,j=0;
for(i=0;i<stuNum;i++)
{
cout<<"输入学号:"<<endl;
cin>>stu[i].number;
cout<<"分别输入三门成绩:"<<endl;
cin>>stu[i].score1;
cin>>stu[i].score2;
cin>>stu[i].score3;
cout<<endl;
}
}

void CalAverage( struct STUDENT *stu,int stuNum)
{
  

    int i,j;
      double s=0;
      for(j=0;j<stuNum;j++)
      {
      for(i=0;i<3;i++)
      {
      s=s+stu[i].score1+stu[i].score2+stu[i].score3;
      }
    

      stu[i].ave=s/3.0;;
      cout<<endl;
      }
     

} 


void main()
{

struct STUDENT stu[stuNum];//这个变量的作用域是main函数之内,但是你用InputStudent()函数内部的局部变量存放数据,这个变量始终都是空的,后面你输出的却是现在这个空的变量,输出当然是乱码
InputStudent();
CalAverage(stu,stuNum);
PrintStudent(stu,stuNum);

}

void PrintStudent(struct STUDENT *data,int stuNum)
{
    int i,j;
    cout<<"\n学号\t姓名\t成绩1\t成绩2\t成绩3\t平均分\n";
    for( j=0;j<stuNum;j++)
    {
        cout<<data[i].number;
        for(i=0;i<3;i++)
        {
            cout<<"\t"<<data[i].score1;
            cout<<"\t"<<data[i].score2;
            cout<<"\t"<<data[i].score3;
        }
        cout<<"\t"<<data[i].ave<<endl;
    }
}
2012-05-23 18:50
快速回复:函数调用出问题了,大伙进来看一看
数据加载中...
 
   



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

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