| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1361 人关注过本帖
标题:求助,为什么在case1中,当输入完学生的相关信息后,自定义函数void Calate ...
只看楼主 加入收藏
风说L
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-2-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
求助,为什么在case1中,当输入完学生的相关信息后,自定义函数void Calate1功能没有实现
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_STUDENT 30
#define MAX_COURSE 6
typedef struct student
{
    long studentID;
    char studentname[10];
    int score[MAX_COURSE];
    int total;
    float aver;
}STUDENT;
void menu();
void Add(int *pm,int*pn);
void Inputscore(STUDENT stu[],int m,int n);
void Calate2(STUDENT stu[],int m,int n);
void Calate1(STUDENT stu[],int m,int n);
int main()
{
    int k;
    int n,m;
    int *pm=&m,*pn=&n;
    STUDENT stu[MAX_STUDENT];
    printf("\t\t***************欢迎使用学生成绩管理系统*******************\n");
    menu();
    printf("Please enter your choice:\n");
    scanf("%d",&k);
    switch(k)
    {
    case 1:
        Add(&m,&n);
        Inputscore(stu,m,n);
        Calate1(stu,m,n);
        break;
    case 2:
        Calate1(stu,m,n);
        break;
    case 3:
        Calate2(stu,m,n);
        break;
    }
    return 0;
}
void menu()
{
    printf("1.Input record\n");
    printf("2.Caculate total and average score of every course\n");
    printf("3.Caculate total and average score of every student\n");
    printf("4.Sort in decending order by total score of every student\n");
    printf("5.Sort in ascending order by total score of every student\n");
    printf("6.Sort in ascending order by number\n");
    printf("7.Sort in ascending order by name\n");
    printf("8.Search by number\n");
    printf("9.Search by name\n");
    printf("10.Statistic analysis for every course\n");
    printf("11.List record\n");
    printf("0.Exit\n");
}
void Add(int *pm,int*pn)//输入学生人数和考试科目
{
    printf("请输入考试科目");
    scanf("%d",pm);
    printf("请输入学生人数");
    scanf("%d",pn);
}
void Inputscore(STUDENT stu[],int m,int n)//1、输入学生的 学号,姓名,及考试成绩
{
    int i,j;
    for(i=0;i<n;i++)
    {
        printf("Input record%d\n",i+1);
        printf("请输入学生学号");
        scanf("%ld",&stu[i].studentID);
        printf("请输入学生姓名");
        scanf("%s",&stu[i].studentname);
        printf("请输入学生成绩");
        for(j=0;j<m;j++)
        {
            scanf("%ld",&stu[i].score[j]);
        }
    }
}
void Calate2(STUDENT stu[],int m,int n)//3、计算每个学生的平均分及总分
{
    int i,j;
    int sum[MAX_STUDENT];
    for(i=0;i<n;i++)//使所用学生进入循环
    {
        sum[i]=0;
        for(j=0;j<m;j++)//所有科目进入循环
        {
            sum[i]=sum[i]+stu[i].score[j];
        }
        stu[i].total=sum[i];
        stu[i].aver=(float)sum[i]/m;
    }
}
void Calate1(STUDENT stu[],int m,int n)//2、计算每门课目的平均分及总分
{
    int sum[MAX_COURSE];
    float aver[MAX_COURSE];
    int i,j;
    for(j=0;j<m;i++)//单个课目  考试科目进入循环
    {
        sum[j]=0;
        for(i=0;i<n;i++)//所有学生进入循环
        {
            sum[j]=sum[j]+stu[i].score[j];
        }
        aver[j]=(float)sum[j]/m;
    }
    printf("Sumofcourse\t");//打印
    for(j=0;j<m;j++)
    {
        printf("%4d\t",sum[j]);
    }
    printf("\nAverofcourse\t");
    for(j=0;j<m;j++)
    {
        printf("%f\t",aver[j]);
    }
}
/*void Sumsortdecen(STUDENT stu[],int n)//按总分由高到低排出名次表
{
    int i,j,k;
    STUDENT t;
    for(i=0;i<n-1;i++)//
    {
        k=i;
        for(j=i+1;j<n;j++)//
        {
            if(stu[j].total>stu[k].total)
            {
                k=j;
            }
        }
        if(k!=i)
        {
            t=stu[i];
            stu[i]=stu[k];
            stu[k]=t;
        }
        for(i=0;i<n;i++)//打印出学生信息
        {
            printf("ID:%ld,NAME:%s,score:%d",stu[i].studentID,stu[i].total);
        }
    }
void Sumsortascen(STUDENT stu[],int n)//按总分由低到高排出名次表
{
    int i,j,k;
    STUDENT t;
    for(i=0;i<n-1;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
        {
            if(stu[j].total<stu[k].total)
            {
                k=j;
            }
        }
        if(k!=i)
        {
            t=stu[i];
            stu[i]=stu[k];
            stu[k]=t;
        }
        for(i=0;i<n;i++)//打印出学生信息
        {
            printf("ID:%ld,NAME:%s,score:%d",stu[i].studentID,stu[i].total);
        }
    }
    void Denumber(STUDENT stu[],int m,int n)//6
    {
        int i,j,k;
        STUDENT t;
        for(i=0;i<n-1;i++)
        {
            k=i;
            for(j=i+1;j<n;j++)
            {
                if(stu[k].studentID>stu[j].studentID)
                {
                    k=j;
                }
                if(k!=i)
                {
                    t=stu[k];
                    stu[k]=stu[i];
                    stu[i]=t;
                }
                for(i=0;i<n;i++)
                {
                    printf("ID:%ld,name:%s\n",stu[i].studentID,stu[i].studentname);
                    for(j=0;j<m;j++)
                    {
                            printf("Project%d,score:%d\n",j+1,stu[i].score[j]);
                    }
                }
            }
        }
    }
void Dicts(STUDENT stu[],int m,int n)//7
    {
        int i,j;
        STUDENT t;
        for(i=0;i<n-1;i++)
        {
            for(j=i+1;j<n;j++)
            {
                if(strcmp(stu[i].studentname,stu[j].studentname)>0)
                {
                    t=stu[k];
                    stu[k]=stu[i];
                    stu[i]=t;
                }
                for(i=0;i<n;i++)
                {
                    printf("ID:%ld,name:%s\n",stu[i].studentID,stu[i].studentname);
                    for(j=0;j<m;j++)
                    {
                            printf("Project%d,score:%d\n",j+1,stu[i].score[j]);
                    }
                }
            }
        }
    }
void Searchbynum(STUDENT  stu[],int n ,int m,int x)
{
    int i,j,c=1,find=0,k=0;
    for(i=0;i<n;i++)
    {
        if(stu[i].studentID==x)
        {
            k=i;
            find=1;
            break;
        }
    if(find==0)
    printf("NOT FIND\n");
    else
    {
        for(j=0;j<n:j++)
        {
            if(stu[j].total>stu[k].total)
                c++;
        }
        printf("ID:%ld,NAME:%s\n",stu[k].studentID,stu[k].studentname);
        for(j=0;j<m;j++)
            printf("Prjoect:%d,score%d\n",j+1,stu[k].score[j]);
        
        printf("All score :%d,Order:%d\n",stu[k].total,c);
    }
    }*/













[此贴子已经被作者于2016-2-22 13:38编辑过]

搜索更多相关主题的帖子: include 信息 
2016-02-22 11:45
蓝色风暴cl
Rank: 8Rank: 8
来 自:新疆
等 级:蝙蝠侠
威 望:3
帖 子:163
专家分:704
注 册:2015-9-6
收藏
得分:5 
成绩输入哪里就存在问题。。选择三门课程,只能输入一门的成绩。
                ***************欢迎使用学生成绩管理系统*******************
1.Input record
2.Caculate total and average score of every course
3.Caculate total and average score of every student
4.Sort in decending order by total score of every student
5.Sort in ascending order by total score of every student
6.Sort in ascending order by number
7.Sort in ascending order by name
8.Search by number
9.Search by name
10.Statistic analysis for every course
11.List record
0.Exit
Please enter your choice:
1
请输入学生人数1
请输入考试科目3
Input record1
请输入学生学号1
请输入学生姓名1
请输入学生成绩1
Input record2
请输入学生学号1
请输入学生姓名1
请输入学生成绩1
Input record3
请输入学生学号1
请输入学生姓名1
请输入学生成绩1
收到的鲜花
  • 风说L2016-02-22 23:07 送鲜花  3朵   附言:谢谢

欢迎大家加好友哦,多找我聊聊吧!
2016-02-22 12:09
风说L
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-2-16
收藏
得分:0 
回复 2楼 蓝色风暴cl
嗯嗯  是的我已经改过了  你能帮我看看是怎么回事吗  输入哪里的问题  我已经改了  可是Caculate2的功能还是无法实现

[此贴子已经被作者于2016-2-22 13:48编辑过]

2016-02-22 13:46
风说L
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-2-16
收藏
得分:0 
回复 2楼 蓝色风暴cl
我发的原帖子 已经改了
2016-02-22 13:50
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
学会跟踪调试,比什么答案都重要。
收到的鲜花
  • 风说L2016-02-22 22:53 送鲜花  3朵   附言:你说的很对 我也认识到这个问题了,我今天 ...

授人以渔,不授人以鱼。
2016-02-22 15:03
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
可是Caculate2的功能还是无法实现,这个是什么意思,结果不对还是不显示计算结果?

   唯实惟新 至诚致志
2016-02-22 16:06
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:10 
Calate1里面:
for(j=0;j<m;i++)//单个课目  考试科目进入循环
这里要改成j++

另外    case 2:
        Calate1(stu, m, n);
        break;
    case 3:
        Calate2(stu, m, n);
这里也要输入数据才行,就像case 1一样。
收到的鲜花
  • 风说L2016-02-22 22:50 送鲜花  3朵   附言:我很赞同
  • 风说L2016-02-22 23:13 送鲜花  3朵   附言:感谢
2016-02-22 17:27
风说L
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-2-16
收藏
得分:0 
回复 7楼 grmmylbs
非常感谢
2016-02-22 22:53
风说L
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-2-16
收藏
得分:0 
回复 6楼 qq1023569223
由于我在Cacula2中没有设置输出,也没有单独编写输出函数,所以结果不会显示 还有就是我Cacula1编写有问题,也是不显示结果
2016-02-22 23:06
快速回复:求助,为什么在case1中,当输入完学生的相关信息后,自定义函数void C ...
数据加载中...
 
   



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

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