标题:求解答,不懂得怎么调用函数,帮忙修改一下代码
取消只看楼主
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
结帖率:100%
已结贴  问题点数:8 回复次数:1 
求解答,不懂得怎么调用函数,帮忙修改一下代码
#include<stdio.h>
int main()
{
struct Student
{
    char name[5];
    int A;
    int B;
    int C;
    float average;
};
struct Student stu[3];
int i;
printf("请输入学生的信息:\n");
for(i=0;i<3;i++)
{
    printf("请输入第%d个学生的信息:\n",i+1);
    printf("姓名:");
    scanf("%s",stu[i].name);
    printf("A课程成绩:");
    scanf("%d",stu[i].A);
    printf("B课程成绩:");
    scanf("%d",stu[i].B);
    printf("C课程成绩:");
    scanf("%d",stu[i].C);
}
for(i=0;i<3;i++)
{
    stu[i].average=(stu[i].A+stu[i].B+stu[i].C)/3.0;
    printf("平均分%f",stu[i].average);
}
printf("学生成绩列表:\n");
for(i=0;i<3;i++)
{
    printf("姓名:%s A课程成绩:%d B课程成绩:%d C课程成绩:%d 平均分:%f\n",stu[i].name,stu[i].A,stu[i].B,stu[i].C,stu[i].average);
}
printf("\n");
return 0;
}
对于以上的代码,我要是想用void input(Student s[], int n),void average(Student s[], int n),void print(Student s[], int n)这些函数来实现函数调用,该怎么用法,下面是我的写法,可是出错了,不知道怎么修改。
#include<stdio.h>
#define c 3
struct Student
{
    char name[5];
    int A;
    int B;
    int C;
    float average;
};
struct Student stu[3];
int main()
{
    void input(Student s[], int n);
    void average(Student s[], int n);
    void printf(Student s[], int n);
    input(stu[3],3);
    average( stu[3],3);
    printf(stu[3],3);
   
return 0;
}
void input(student s[], int n)
{
    int i;
    printf("请输入学生的信息:\n");
   for(i=0;i<c;i++)
   {
    printf("请输入第%d个学生的信息:\n",i+1);
    printf("姓名:");
    scanf("%s",stu[i].name);
    printf("A课程成绩:");
    scanf("%d",&stu[i].A);
    printf("B课程成绩:");
    scanf("%d",&stu[i].B);
    printf("C课程成绩:");
    scanf("%d",&stu[i].C);
}
}
   void average(student s[], int n)
   {
       int i;
   for(i=0;i<3;i++)
{
    stu[i].average=(stu[i].A+stu[i].B+stu[i].C)/3.0;
}
   }
   void printf(student s[], int n)
   {
       int i;
   printf("学生成绩列表:\n");
for(i=0;i<3;i++)
{
    printf("姓名:%s,A课程成绩:%d,B课程成绩:%d,C课程成绩:%d,平均分:%f\n",stu[i].name,stu[i].A,stu[i].B,stu[i].C,stu[i].average);
}
   }
下面是调试的结果(让我很纠结啊,不知道怎么办,各位高手帮忙修改一下。怎样实现函数调用吧):
1>  源.cpp
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(17): error C2664: “input”: 不能将参数 1 从“Student”转换为“Student []”
1>          没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(18): error C2664: “average”: 不能将参数 1 从“Student”转换为“Student []”
1>          没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(19): error C2665: “printf”: 2 个重载中没有一个可以转换所有参数类型
1>          d:\window7\vc\include\stdio.h(271): 可能是“int printf(const char *,...)”[通过使用参数相关的查找找到]
1>          e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(16): 或       “void printf(Student [],int)”
1>          尝试匹配参数列表“(Student, int)”时
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(23): error C2065: “student”: 未声明的标识符
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(23): error C2146: 语法错误: 缺少“)”(在标识符“s”的前面)
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(23): error C2182: “input”: 非法使用“void”类型
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(23): error C2059: 语法错误:“)”
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(24): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(24): error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(40): error C2065: “student”: 未声明的标识符
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(40): error C2146: 语法错误: 缺少“)”(在标识符“s”的前面)
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(40): error C2182: “average”: 非法使用“void”类型
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(40): error C2059: 语法错误:“)”
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(41): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(41): error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(48): error C2065: “student”: 未声明的标识符
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(48): error C2146: 语法错误: 缺少“)”(在标识符“s”的前面)
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(48): error C2182: “printf”: 非法使用“void”类型
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(48): error C2365: “printf”: 重定义;以前的定义是“函数”
1>          d:\window7\vc\include\stdio.h(271) : 参见“printf”的声明
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(48): error C2059: 语法错误:“)”
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(49): error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>e:\users\lovecaiyun\documents\visual studio 2012\projects\consoleapplication9\consoleapplication9\源.cpp(49): error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
搜索更多相关主题的帖子: 课程 信息 average include 课程 信息 average include 
2012-12-14 10:18
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
得分:0 
但题目就是要用到void print(Student s[], int n),void average(Student s[], int n),void input(Student s[], int n)
//对input()、average()、print()三个函数进行声明
//调用input()、average()、print()三个函数
我实在搞不懂为什么还要在自定义函数input()、average()、print()加入形参Student s[], int n,但是加入了形参后,我真的不知道怎么调用了

思考赐予新生,时间在于定义
2012-12-14 12:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-391220-1-1.html




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

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