| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5014 人关注过本帖
标题:写一个学生管理系统的程序,有个错误调不出来 请各位大侠指教
只看楼主 加入收藏
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
回复 18楼 吹水佬
好的谢谢你。
2017-05-12 20:26
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
回复 19楼 wp231957
void score_max(struct student *p)
{
    int xh,max=(*p).score[0],t;
    printf("请输入要查找成绩最大的学生的学号:\n");
       scanf("%d",&xh);
    if((*p).stu_id==xh)
    {
        for(int i=1;i<3;i++)
        {
            if((*p).score[i]>max)
            {
                t=max;
                max=(*p).score[i];
                (*p).score[i]=t;
            }
        }
        printf("%d",max);
        //break;
    }
}
void score_average(struct student *p)
{
    int xh;
    float aver=0,sum=0;
    printf("请输入你要算平均值的学生的学号:\n");
     scanf("%d",&xh);
    if((*p).stu_id==xh)
    {
        for(int i=0;i<3;i++)
        {
            sum=sum+(*p).score[i];
        }
           aver=sum/3.0;
           printf("%f",aver);
    }
   
}
帮忙看下这两个函数呗,计算平均值和查找最大的成绩
输入的时候 有的学号能查出来有的不能。
2017-05-12 20:41
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:4 
真奇葩的两个函数,把寻找相同数字的判断放在循环的外面。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-12 20:49
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
回复 23楼 renkejun1942
???究竟什么地方错了 还请多指教 在下小白
2017-05-12 20:51
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用花脸在2017-5-12 20:41:31的发言:

void score_max(struct student *p)
{
    int xh,max=(*p).score[0],t;
    printf("请输入要查找成绩最大的学生的学号:\n");
       scanf("%d",&xh);
    if((*p).stu_id==xh)
    {
        for(int i=1;i<3;i++)
        {
            if((*p).score>max)
            {
                t=max;
                max=(*p).score;
                (*p).score=t;
            }
        }
        printf("%d",max);
        //break;
    }
}
void score_average(struct student *p)
{
    int xh;
    float aver=0,sum=0;
    printf("请输入你要算平均值的学生的学号:\n");
     scanf("%d",&xh);
    if((*p).stu_id==xh)
    {
        for(int i=0;i<3;i++)
        {
            sum=sum+(*p).score;
        }
           aver=sum/3.0;
           printf("%f",aver);
    }
   
}
帮忙看下这两个函数呗,计算平均值和查找最大的成绩
输入的时候 有的学号能查出来有的不能。

缺少一层循环。就是控制P++的外层循环

DO IT YOURSELF !
2017-05-12 21:00
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
革命尚未成功。同志仍需努力

N层循环算是基本语法了

DO IT YOURSELF !
2017-05-12 21:02
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
回复 25楼 wp231957
图片附件: 游客没有浏览图片的权限,请 登录注册


这是怎么回事。
2017-05-12 21:07
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
把相关代码發出来。我帮你调试一下

DO IT YOURSELF !
2017-05-12 21:10
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
回复 26楼 wp231957
恩,,,对的 谢谢 刚开始没理解p++什么意思。。

我改过之后为什么还不对。。
2017-05-12 21:10
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
回复 28楼 wp231957
#include<stdio.h>
void inquiry(struct student *p);
void score_max(struct student *p);
void score_average(struct student *p);
void score_alter(struct student *p);
void score_delete(struct student *p);
void score_count(struct student *p);

struct student
{
    char name[10];
    int stu_id;        
    int score[3];
    char sex;
    int age;
}a[3]={{"li ming",123456,a[0].score[0]=60,a[0].score[1]=67,a[0].score[2]=80,a[0].sex='w',a[0].age=10},
    {"wang ming",123457,a[1].score[0]=70,a[1].score[1]=90,a[1].score[2]=80,a[1].sex='m',a[1].age=12},
    {"li fei",123458,a[2].score[0]=30,a[2].score[1]=60,a[2].score[2]=100,a[2].sex='w',a[2].age=15}};;

int main()
{
    struct student *p;
    p=a;
    int xuanze;
    printf("菜单\n\
           0 退出 :\n\
           1 请输入学号查询学生的信息:\n\
           2 求某个学生的最高成绩: \n\
           3 求某个学生的平均成绩: \n\
           4 修改某个学生的第n门课程的成绩: \n\
           5 删除某个学生的成绩: \n\
           6 统计某个学生不及格课程的门数: \n");
    printf("请输入你的选择:0-6:");
    scanf("%d",&xuanze);
    switch(xuanze)
    {
    case 0:return 0;
    case 1:inquiry(p);break;
    case 2:score_max(p);break;
    case 3:score_average(p);break;
       /* case 4:score_alter(p);break;
        case 5:score_delete(p);break;
        case 6:score_count(p);break;*/
        default:printf("enter date error!:\n");
        return 0;
    }
    return 0;
}
void inquiry(struct student *p)
{
   
    int xh;
    printf("请输入学号:\n");
       scanf("%d",&xh);
    while(p!=NULL)
    {
        if((*p).stu_id==xh)
        {
            printf("姓名为:%s\n 学号为%d\n 成绩为%d %d %d\n 性别为%c\n 年龄为%d\n ",
                  (*p).name,(*p).stu_id,(*p).score[0],(*p).score[1],(*p).score[2],(*p).sex,(*p).age);
            break;
        }
        ++p;//相当于学生
    }
}
void score_max(struct student *p)
{
    int xh,max=(*p).score[0],t;
    printf("请输入要查找成绩最大的学生的学号:\n");
       scanf("%d",&xh);
     while(p!=NULL)
     {
         if((*p).stu_id==xh)
        {
          for(int i=1;i<3;i++)
           {
                if((*p).score[i]>max)
                {
                t=max;
                max=(*p).score[i];
                (*p).score[i]=t;
                }
           }
           printf("%d",max);
           break;
        }
        p++;
      }
}
void score_average(struct student *p)
{
    int xh,sum=0;
    float aver=0;
    printf("请输入你要算平均值的学生的学号:\n");
        scanf("%d",&xh);
    while(p!=NULL)
    {
        if((*p).stu_id==xh)
        {
          for(int i=0;i<3;i++)
           {
                sum=sum+(*p).score[i];
           }
              aver=sum/3.0;
              printf("%f",sum);
              break;
         }
       p++;
    }
}

谢谢你。
2017-05-12 21:11
快速回复:写一个学生管理系统的程序,有个错误调不出来 请各位大侠指教
数据加载中...
 
   



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

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