| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 423 人关注过本帖
标题:问题有不少,求解决,小弟先谢过啦!
只看楼主 加入收藏
蜗牛的蜕变
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-4-7
结帖率:75%
收藏
 问题点数:0 回复次数:3 
问题有不少,求解决,小弟先谢过啦!
#include<stdio.h>
#define N  2
struct student
{
    char name[20];//姓名
    char sex[10];//性别
    int str_num;//学号
    float cgrade;//C语言成绩
    float egrade;//英语分数
    float mgrade;//数学成绩
    float pgrade;//物理成绩
    float dgrade;//电路成绩
    float Ave;  // 平均分
    float sum;//总分

};
int M=0;
void Sum_andAve(struct student info[], int num);
void input(struct student info[],int num);//输入函数的声明0
void modification(struct student info[],int num);//修改函数的声明0
void deleteinfo(struct student info[],int num);//删除信息函数的声明0
void add(struct student info[],int num);//增加信息函数的声明
void rank(struct student info[],int num);//排序函数的声明0
void seek(struct student info[],int num);//查找函数的声明0
void output(struct student info[],int num);//输出函数的声明0
void input(struct student info[],int num)//输入函数//
{   
    int i;  //循环变量
    printf("请输入你要输入的人数:");
    scanf("%d",&M);  //下标C保存多少个学生
    M--;
    if(M>N)
    {
        printf("最多输入%d个学生\n",N);
        printf("按任意键返回");
        getchar();
        getchar();
        input(info,N);  //递归调用
 }
for(i=0;i<=M;i++)  //NUM是一个常量
 {
    printf("\t请输入学生的信息::\n");
    printf("\t姓名----学号----C语言----英语----数学----物理-----电路\n");
    for(i=0;i<num;i++)
    {
        printf("please input the %dth student's infomation::\n",i+1);
        printf("\t姓名::");scanf("%s",&info[i].name );//姓名
        printf("\n\t性别::");scanf("%s",&info[i].sex );//性别
        printf("\n\t学号::");scanf("%f",&info[i].str_num );//学号
        printf("\n\tC语言=");scanf("%f",&info[i].cgrade );//C语言成绩
        printf("\n\t英语=");scanf("%f",&info[i].egrade );//英语成绩
        printf("\n\t数学=");scanf("%f",&info[i].mgrade );//数学成绩
        printf("\n\t物理=");scanf("%f",&info[i].pgrade );//物理成绩
        printf("\n\t电路=");scanf("%f",&info[i].dgrade );//电路成绩
    }}
    Sum_andAve(info,N);
    main();
}
void seek(struct student info[],int k)
{
    int i;
    for(i=0;i<N;i++)
    {
        if(info[i].str_num==k)
        {
            printf("\t您要查找的学生是::\n");
            printf("姓名\t性别\t学号\tC语言\t英语\t数学\t物理\t电路\t平均分\t总分\n");
            printf("%-10s%-6s%-6d%-4.2f%-4.2f%-4.2f%-4.2f%-4.2f%-4.2f%-4.2f%\n",info[i].name ,info[i].sex ,info[i].str_num ,info[i].cgrade ,\
                info[i].egrade ,info[i].mgrade ,info[i].pgrade ,info[i].dgrade ,info[i].Ave ,info[i].sum );}}
    main();
}
void Sum_andAve(struct student info[], int num)//总分和平均分的函数以及按平均分排序
 {
     int i;
     printf("\t");
     for(i=0;i<num;i++)//求总分和平均分的循环
     {
         info[i].sum=info[i].cgrade +info[i].dgrade +info[i].egrade +info[i].mgrade +info[i].pgrade;
         info[i].Ave =(info[i].sum)/5;
     }//循环结束
}
void rank(struct student info[], int num)
{
    int i,j;
    struct student temp;
    Sum_andAve(info,num);
    for(i=num-1;i>0;i--){//按总成绩排序
        for(j=0;j<i;j++){
            if(info[j].sum>info[j+1].sum )
            {
                temp=info[j+1] ;
                info[j+1] =info[j];
                info[j]=temp;
            }}}
    printf("按课程总成绩排序::\n\t");
    printf("姓名       \t性别\t学号\t       平均分\t     总成绩\n");
    for(i=0;i<num;i++)
    {
        printf("\t%-20s%-8s%-10d%-4.2f%-4.2f\n",info[i].name ,info[i].sex ,info[i].str_num ,info[i].Ave ,info[i].sum );}
    main();
}
void modification(struct student info[],int num)
{
    int i,k;
    printf("请输入你要修改学生的学号::\n");
    scanf("%d\n",&k);
    seek(info,k);
    for(i=0;i<N;i++)
    {
        if(info[i].str_num ==k)
        {
            printf("请输入新的学生信息::\n");
            printf("\t姓名::");scanf("%s",&info[i].name );//姓名
            printf("\n\t性别::");scanf("%s",&info[i].sex );//性别
            printf("\n\t学号::");scanf("%f",&info[i].str_num );//学号
            printf("\n\tC语言=");scanf("%f",&info[i].cgrade );//C语言成绩        
            printf("\n\t英语=");scanf("%f",&info[i].egrade );//英语成绩
            printf("\n\t数学=");scanf("%f",&info[i].mgrade );//数学成绩
            printf("\n\t物理=");scanf("%f",&info[i].pgrade );//物理成绩
            printf("\n\t电路=");scanf("%f",&info[i].dgrade );//电路成绩
        }
        main();
    }
}
void deleteinfo(struct student info[],int num)
{
    int i,k;
    struct student arr={{'\0'},'\0',0,0,0,0,0,0};
    printf("请输入你要删除的学生学号::\n");
    scanf("%d\n",&k);
    seek(info,k);
    for(i=0;i<N;i++)
    {
        if(info[i].str_num ==k){
            info[i]=arr;
        }
    }
    main();
}
void add(struct student info[],int num)
{
    struct student temp;
    printf("请输入新增学生的信息::\n");
    printf("\t姓名::");scanf("%s",&temp.name );//姓名
    printf("\n\t性别::");scanf("%s",&temp.sex );//性别
    printf("\n\t学号::");scanf("%f",&temp.str_num );//学号
    printf("\n\tC语言=");scanf("%f",&temp.cgrade );//C语言成绩        
    printf("\n\t英语=");scanf("%f",&temp.egrade );//英语成绩
    printf("\n\t数学=");scanf("%f",&temp.mgrade );//数学成绩
    printf("\n\t物理=");scanf("%f",&temp.pgrade );//物理成绩
    printf("\n\t电路=");scanf("%f",&temp.dgrade );//电路成绩
    temp.sum=temp.cgrade +temp.dgrade +temp.egrade +temp.mgrade +temp.pgrade;
    temp.Ave =(temp.sum)/5;
     if(M<N)
     {
         if(M==0)
         {
             info[M]=temp;
             rank(info,N);
         }
     }
     else
     {
         M++;
         info[M]=temp;
         rank(info,N);
     }
     main();
}

void output(struct student info[], int num)//定义输出函数//
 {
     int i;
      printf("姓名\t性别\t学号\tC语言\t英语\t数学\t物理\t电路\t平均分\t总分\n");
     for(i=0;i<num;i++)
     {
         printf("%-10s%-6c%-6d%-4.2f%-4.2f%-4.2f%-4.2f%-4.2f%-4.2f%-4.2f%\n",info[i].name ,info[i].sex ,info[i].str_num ,info[i].cgrade ,\
             info[i].egrade ,info[i].mgrade ,info[i].pgrade ,info[i].dgrade ,info[i].Ave ,info[i].sum );}
    main();
}
int main()
{
    struct student info[N];
    int k;
    //struct student temp;
    int a;//定义一个操作数
    printf("-----------------------------------------------------------------------\n");
    printf("-----------------------------学生管理系统------------------------------\n");
    printf("-------------------------------------------------计科一班刘文---------\n");
    printf("-----------------------------------------------------学号:1005010120---\n");
    printf("---------------------------------操作菜单------------------------------\n");
    printf("          1.输入并储存学生信息              2.修改学生信息\t\n");
    printf("          3.删除学生信息                    4.新增学生信息\t\n");
    printf("          5.排序学生成绩                    6.查询学生成绩\t\n");
    printf("          7.输出学生信息                    0.退出\t\n");
    printf("\n\t提示:请按照操作菜单输入\n\n");
    printf("\t请输入你要进行的操作::\n");
    scanf("%d",&a);
    switch(a)
    {
    case 1:input(info,N);
    case 2:modification(info,N);
    case 3:deleteinfo(info,N);
    case 4:add(info,N);
    case 5:rank(info,N);
    case 6:
        printf("请输入你要查找的学生学号::\n");
        scanf("%d\n",&k);
        seek(info,k);
    case 7:output(info,N);
    case 0:return 1;
    default:printf("\tError!\n\t");

}
return 0;
}
搜索更多相关主题的帖子: 英语 C语言 数学 姓名 info 
2011-07-06 23:53
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
#include<stdio.h>
#define N  2
。。。。。。。
。。。。。。。
void seek(struct student info[],int num);//查找函数的声明0
void output(struct student info[],int num);//输出函数的声明0
int main();

我们都在路上。。。。。
2011-07-07 12:41
liuyuanhui92
Rank: 1
来 自:武汉市华中科技大学
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-7-7
收藏
得分:0 
建议不要用全局变量M!   函数参数用指针即可代替!    用指针更好,更快!

[ 本帖最后由 liuyuanhui92 于 2011-7-7 16:29 编辑 ]

我爱各种语言!
   一定成为业内顶级人物!
2011-07-07 16:25
wjm22
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:44
专家分:118
注 册:2011-7-5
收藏
得分:0 
太长
2011-07-07 19:29
快速回复:问题有不少,求解决,小弟先谢过啦!
数据加载中...
 
   



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

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