C++ 通过值将类型结构传递给函数,错误:在';平均值'-

C++ 通过值将类型结构传递给函数,错误:在';平均值'-,c++,function,struct,C++,Function,Struct,大家好,我读到了 我有一个小问题(或者可能是大问题!),在编译时只有一个错误,但正如我们都知道的那样,一个错误就是阻碍进程的全部原因。 基本上我对C++是相当新的,并且已经编写了下面的代码,并将函数的类型Stutt参数传递给函数。但我收到以下错误消息: “平均值声明中有两种或两种以上的数据类型”,因此对于我的一个错误的任何解决方案都将不胜感激。 非常感谢 enter code here #include <iostream> #include <cstdio> #inc

大家好,我读到了

我有一个小问题(或者可能是大问题!),在编译时只有一个错误,但正如我们都知道的那样,一个错误就是阻碍进程的全部原因。 基本上我对C++是相当新的,并且已经编写了下面的代码,并将函数的类型Stutt参数传递给函数。但我收到以下错误消息: “平均值声明中有两种或两种以上的数据类型”,因此对于我的一个错误的任何解决方案都将不胜感激。 非常感谢

enter code here
#include <iostream> 
#include <cstdio>
#include <math.h>
using namespace std;


           struct student{

              char name[40];
              int student_id;
              int student_grades[3];
              int average;
           };

int main ()
{
   extern int average(student);
   student programming;

   int j;

         cout<<"\nPlease Enter the student name for student number: ";

         cin>>programming.name;

         cout<<"\nPlease Enter student i.d for student number: ";

         cin>>programming.student_id;

         cout<<"\nPlease Enter student grades for student number: ";

         for(j=0;j<3;j++){

                    cout<<"\nEnter student grade no: "<<j+1<<"\n";
                    cin>>programming.student_grades[j];               
         }

         programming.average=average(programming);

         cout<<"\nNo.      Name      ID Number      Average\n";
         cout<<programming.name;
         cout<<"      "<<programming.student_id <<"      ";
         cout<<programming.average<<"      ";             

     system ("PAUSE");
     return 0;
}

struct student;
int void average(student programming){

    int sum=0;
    int ave=0;
    int j;

    for(j=0;j<3;j++){
           sum=sum+programming.student_grades [j];
    }
    ave=sum/3;
    return ave;
}
enter code here
在此处输入代码
#包括
#包括
#包括
使用名称空间std;
结构学生{
字符名[40];
国际学生证;
国际学生大学成绩[3];
整数平均;
};
int main()
{
校外平均(学生);
学生编程;
int j;
coutprogramming.name;
coutprogramming.student\u id;
cout
int void average(学生编程)
不是有效语法。只有一个返回类型,即它应该是
int average(学生编程)
看到了吗

int void average(student programming){
这是一行中的“两个或多个类型”,在这一部分中,您可以说函数的返回类型是什么


你的代码还有其他几个问题,主要是风格上的问题。你不希望你的函数声明是
extern
(因为它就在同一个文件中);你希望该声明在main之外(它可以在内部工作,但实际上没有意义);你不需要
math.h
(反正是一个C头);您应该使用真正的字符串类型来表示字符串;将平均成绩存储回结构中并不是特别有用(您已经有了它,所以直接使用它);而且您的几个变量名没有任何意义(
编程
是一个特别明显的例子).

您的平均函数声明应为:

int average(student programming)

你有一个额外的“void”在里面。

你似乎很困惑。我甚至不能告诉你在你的代码中要做什么。你应该使用
std::string
而不是
char
数组作为名称。“int void average()”??这是什么意思?非常感谢……这是“void”我忘了把它拿出来了。我真傻!你帮我解决了这个问题,这是你的一个好名声。是的,我会详细检查你说的话,并努力学习。非常感谢你的一个记号。你可以详细说明一下“你应该使用真正的字符串类型来表示字符串”吗?例如,
库中的
std::string
类。