| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 513 人关注过本帖
标题:这个东西怎么错了?求指点,谢谢
只看楼主 加入收藏
冯jungle
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2012-12-16
结帖率:87.5%
收藏
已结贴  问题点数:20 回复次数:9 
这个东西怎么错了?求指点,谢谢
// 成绩管理.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"



struct Student
{
    int number;
    char name[10];
    float cj[7];
    float min,max,ave,total;
}stu[20],  temp[20];

int i,j,choice,num;
float deal[8][4];
float sum;


FILE *fp1;
FILE *fp2;


int main(int argc, char* argv[])
{
    void student();
    void sort();
    void subject();
    void rank();
   
    printf("********************成绩管理********************\n");
    fp1 = fopen("a.txt","r");

    printf("输入学生信息:\n");
    printf("学号  姓名 \t 高数  \t工图  \t英语  \tC语言 \t 航概 \t 体育 \t 思修 \t\n");
    for(i = 1; i <= 20; i++){
        fscanf( fp1, "%d%s", &stu[i].number, stu[i].name);
        printf( "%d   %s  \t", stu[i].number, stu[i].name);
        for(j = 1; j <= 7; j++){
            fscanf( fp1, "%f", &stu[i].cj[j]);
            printf( "%5.2f \t", stu[i].cj[j]);
        }
        printf("\n");
    }


    fp2 = fopen("b.txt", "w");
    fprintf( fp2, "\t\t\t***********成绩单************\t\t\t\n");
    fprintf( fp2, "学号  姓名 \t 高数  \t工图  \t英语  \tC语言 \t 航概 \t 体育 \t 思修 \t 最高分\t 最低分\t 平均分\t 总分\t\n");
    for( i = 1; i <= 20; i++){
        stu[i].max = stu[i].cj[1];
        stu[i].min = stu[i].cj[1];
        stu[i].total = 0;
        for(j = 1; j <= 7; j++){
                stu[i].total = stu[i].total+stu[i].cj[j];
            if(stu[i].cj[j] > stu[i].max)
                stu[i].max = stu[i].cj[j];
            if(stu[i].cj[j] < stu[i].min)
                stu[i].min = stu[i].cj[j];
        }
        stu[i].ave = stu[i].total/7;
    }
    for( i = 1; i <= 20; i++){
        fprintf( fp2, "%d\t%s\t", stu[i].number, stu[i].name);
        for( j = 1; j <= 7; j++)
            fprintf( fp2, "%5.2f\t", stu[i].cj[j]);
        fprintf( fp2, "%5.2f\t%5.2f\t%5.2f\t%5.2f\t\n", stu[i].max,  stu[i].min,  stu[i].ave,  stu[i].total);
    }



    printf( "\t*************************************************************\n" );
    printf( "\t\t\t\t学生成绩管理系统\n\t\t\t\t  欢迎使用!\n" );
    printf( "\t*************************************************************\n" );

   
    printf( "\n\n\n\t\t\t1--查询某学生成绩\n\t\t\t2--查询某学科成绩\n\t\t\t3--不及格信息统计\n\t\t\t4--成绩排名\n\t\t\t5--退出\n" );
    printf( "请选择:\n" );
    scanf( "%d",  &choice );
    while(  choice != 5  )
    {
        switch(choice)
        {
        
        case 1:  student();  break;
        case 2:  subject();  break;
        case 3:  sort();  break;
        case 4:  rank();  break;
        }
        printf( "\n请继续输入要进行的操作\n" );
        scanf( "%d", &choice );
    }
    printf( "\t\t欢迎再次使用本系统。\n\n" );
            
        
        
   
        printf( "Hello World!\n" );
        return 0;
   
   

}

void student()
{
    fp2 = fopen( "b.txt", "r" );

    printf( "输入学生学号(不超过20):\n" );
    scanf( "%d", &num );
    for( i = 1; i <= 20; i++ )
        if(num == i){
            printf( "学号  姓名 \t 高数  \t工图  \t英语  \tC语言 \t 航概 \t 体育 \t 思修 \t 最高分\t 最低分\t 平均分\t 总分\t\n" );
            fscanf( fp2, "%d%s", &stu[i].number,  stu[i].name );
            printf( "%d\t%s\t", stu[i].number,  stu[i].name );
            for( j = 1; j <= 7; j++ ){
                fscanf( fp2, "%5.2f", &stu[i].cj[j] );
                printf( "%5.2f\t", stu[i].cj[j] );
            }
            fscanf( fp2, "%5.2f%5.2f%5.2f%5.2f" , &stu[i].max,  &stu[i].min,  &stu[i].ave,  &stu[i].total );
            printf( "%5.2f\t%5.2f\t%5.2f\t%5.2f\t\n", stu[i].max,  stu[i].min,  stu[i].ave,  stu[i].total );
            
        }
};

void rank()
{
    fp2 = fopen( "b.txt","r" );
    for(  i = 1; i < 21; i++ ){//成绩排名
        for( j = 1; j < 21-i; j++ )
            if( stu[j].total < stu[j+1].total ){
                temp[i] = stu[j+1];
                stu[j+1] = stu[j];
                stu[j] = temp[i];
            }
    }
    printf( "\n\n\n\n总成绩排名:\n" );
    printf( "学号 姓名\t高数\t工图\t英语\tC语言\t航概\t体育\t思修\t总分\t\n" );
    for( i = 1; i <= 20; i++ ){
        fscanf( fp2, "%d%s" , &stu[i].number,  stu[i].name );
        printf( "%d\t%s\t", stu[i].number,  stu[i].name );
        for( j = 1; j <= 7 ; j++ ){
            fscanf( fp2 , "%5.2f", &stu[i].cj[j] );
            printf( "%5.2f\t", stu[i].cj[j] );
        }
            fscanf( fp2, "%5.2f", &stu[i].total );
            printf( "%5.2f\t", stu[i].total );
            
            
    }
};

void subject()
{
    float ave, max, min;
    fp2=fopen( "b.txt", "r" );

    printf( "\t\t\t1--查询学科总情况\n\t\t\t2--查询某学科情况\n" );
    printf( "请选择:\n" );
    scanf( "%d", &num );
    switch( num ){
    case 1:{
        printf( "\n\n单科最高分   最低分   平均分:\n" );
        for( i = 1; i <= 20; i++ ){
            for( j = 1; j <= 7; j++ )
                fscanf( fp2, "%5.2f", &stu[i].cj[j] );
        }

        for( j = 1; j <= 7; j++ ){
            
            deal[j][1] = stu[1].cj[j];//max
            deal[j][2] = stu[1].cj[j];//min
            for( i = 1; i <= 20; i++ ){
                sum = sum + stu[i].cj[j];//总分
                if( stu[i].cj[j] > deal[j][1] )
                    deal[j][1] = stu[i].cj[j];
                if( stu[i].cj[j] < deal[j][2] )
                    deal[j][2] = stu[i].cj[j];
            }   
            deal[j][3] = sum/20;
            sum = 0;//平均分
        }
        printf( "\t高数\t工图\t英语\tC语言\t航概\t体育\t思修\t\n" );
        printf( "最高分\n最低分\n平均分\n" );
        for( j = 1; j <= 3; j++ )
        {
            printf( "\n" );
            for( i = 1; i <= 7; i++ )
            {
                printf( "\t%5.2f", deal[i][j] );
            }
            printf( "\n" );
        }
    }
        break;
    case 2:{
        printf( "\t\t\t1--高数\n\t\t\t2--工图\n\t\t\t3--英语\n\t\t\t4--C语言\n\t\t\t5--航概\n\t\t\t6--体育\n\t\t\t7--思修\n" );
        printf( "请选择:\n" );
        scanf( "%d", &choice );
        for( j = 1; j <= 7; j++ ){
            max = stu[1].cj[j];
            min = stu[1].cj[j];
            if( choice == j ){
                for( i = 1; i <= 20; i++ )
                    sum = sum + stu[i].cj[j];
                if( stu[i].cj[j] > max )
                    max = stu[i].cj[j];
                if( stu[i].cj[j] < min )
                    min = stu[i].cj[j];
                    ave = sum/20;
               
                    
        }
        }
            printf( "\t\t最高分\t最低分\t平均分\t\n" );
            printf( "\t\t%5.2f\t%5.2f\t%5.2f\t", max, min, ave );
           }
    }
   
};
   

void sort()
{
    fp2 = fopen( "b.txt", "r" );
    int flag[7],  amount;

    printf( "\t\t\t1--不及格人数统计\n\t\t\t2--不及格门数统计\n" );
    printf( "请选择:\n" );
    scanf( "%d" , &num );
        switch( num )
    {
        case 1:{
            for( j = 1; j <= 7; j++ ){
                flag[j] = 0;
                for( i = 1; i <= 20; i++ ){
                    if( stu[i].cj[j] < 60 )
                        flag[j]++;
                }
            }
            printf( "\t高数\t工图\t英语\tC语言\t航概\t体育\t思修\t\n" );
            printf( "人数\t" );
            for( j = 1; j <= 7; j++ )
                printf( "%d\t", flag[j] );
            printf( "\n" );
            break;
               }
        case 2:{
            amount = 0;
            for(i = 1; i <= 20; i++ ){
                for( j = 1; j <= 7; j++ )
                    if( stu[i].cj[j] < 60 )
                        amount++;
            }
            printf( "不及格总门数:   " );
            printf( "%d\n", amount );
            break;
               }
        }
};


        



搜索更多相关主题的帖子: void total include number choice 
2012-12-22 23:20
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:5 
这个个错法?编译错误?代码好长~~~

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-22 23:26
冯jungle
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2012-12-16
收藏
得分:0 
回复 2楼 yuccn
您能说具体点吗?我的好像就是这一部分有问题
case 2:{
        printf( "\t\t\t1--高数\n\t\t\t2--工图\n\t\t\t3--英语\n\t\t\t4--C语言\n\t\t\t5--航概\n\t\t\t6--体育\n\t\t\t7--思修\n" );
        printf( "请选择:\n" );
        scanf( "%d", &choice );
        for( j = 1; j <= 7; j++ ){
            max = stu[1].cj[j];
            min = stu[1].cj[j];
            if( choice == j ){
                for( i = 1; i <= 20; i++ )
                    sum = sum + stu[i].cj[j];
                if( stu[i].cj[j] > max )
                    max = stu[i].cj[j];
                if( stu[i].cj[j] < min )
                    min = stu[i].cj[j];
                    aver = sum/20;
               
                    
2012-12-22 23:42
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:5 
好长啊,看的我头晕眼花

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-23 11:39
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:5 
这么长的代码,最好自己先调试,别人没法一点一点看,论坛里对点不对面的解决问题

小小战士,战士中的战斗机!
2012-12-23 11:43
唐兵
Rank: 2
来 自:四川泸州合江
等 级:论坛游民
帖 子:150
专家分:12
注 册:2012-12-1
收藏
得分:0 

一个人如果不比自己一把,你永远不知道自己究竟有多厉害
2012-12-23 13:08
nanicesky
Rank: 2
来 自:元外元
等 级:论坛游民
帖 子:31
专家分:76
注 册:2012-1-20
收藏
得分:5 
回复 3楼 冯jungle
你定义的数组的个数是20个,但他们是从0开始到19的,并没有20这个元素的
2012-12-23 13:19
技术生涯
Rank: 1
等 级:新手上路
帖 子:7
专家分:6
注 册:2012-12-29
收藏
得分:0 
代码太长了眼都看花了!!!!!
2012-12-29 18:01
尹金魁2031
Rank: 3Rank: 3
来 自:河南省南阳市
等 级:论坛游侠
帖 子:156
专家分:162
注 册:2012-12-29
收藏
得分:0 
能把编译使出来的错误,上传吗?这样方便大家思考。
2012-12-30 09:27
尹金魁2031
Rank: 3Rank: 3
来 自:河南省南阳市
等 级:论坛游侠
帖 子:156
专家分:162
注 册:2012-12-29
收藏
得分:0 
楼主,这个就是我们的作业呀!我的也是错误累累.而且越改错误越多。
2012-12-31 17:46
快速回复:这个东西怎么错了?求指点,谢谢
数据加载中...
 
   



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

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