| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 800 人关注过本帖
标题:修改程序,老师说print陷入死循环,这个程序怎么改?我只有20分
只看楼主 加入收藏
阿坤爱吃肉
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-7-12
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
修改程序,老师说print陷入死循环,这个程序怎么改?我只有20分
程序代码:
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#define NUM 100
struct student
{
    int term;
    int num;
    int classes;
    char name[10];
    int score[4];
    int sum;
    float average;
}stu[NUM];
void input()
{
    system("cls");
    int i;
    char a;
    for(i=0;i<NUM;i++)
    {
        printf("\n请输入学生的学期:");
        scanf("%d",&stu[i].term);
        printf("\n请输入学生的学号:");
        fflush(stdin);
        scanf("%d",&stu[i].num);
        printf("\n请输入学生的班级:");
        scanf("%d",&stu[i].classes);
        printf("\n请输入学生的姓名:");
        scanf("%s",stu[i].name);
        printf("\n请输入语文成绩:");
        scanf("%d",&stu[i].score[0]);
        printf("\n请输入学生的数学成绩:");
        scanf("%d",&stu[i].score[1]);
        printf("\n请输入学生的英语成绩:");
        scanf("%d",&stu[i].score[2]);
        printf("\n请输入学生的计算机成绩:");
        scanf("%d",&stu[i].score[3]);
        stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3];
        stu[i].average=(float)stu[i].sum/4.0;
        printf("是否要继续添加(按N&n退出)");
        fflush(stdin);
        a=getchar();
        if(a=='n'||a=='N')
        break;
    }
}
void search()
{
    system("cls");
    int number=0,i;
    printf("\t\t\t 请输入要查找学生的学号:");
    scanf("%d",&number);
    printf("学号\t姓名\t班级 语文 数学 英语 计算机 总分 平均分\n");
    for(i=0;i<NUM;i++)
        if(number==stu[i].num)break;
        if(i<NUM)
        {printf("%d\t%s\t%d%5d%5d%5d%6d%7d%8.2f\n",stu[i].num,stu[i].name,stu[i].classes,
    stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].average);
        }
        else
            printf("没找到该学生的信息\n");
        system("pause");
}
void print1()
{
    int i,m;
    printf("请输入学期:\n");
    scanf("%d",&m);
    printf("学号\t姓名\t班级 语文 数学 英语 计算机 总分 平均分\n");
    for(i=0;i<NUM;i++)
    {
        if(m==stu[i].term)
            printf("%d\t%s\t%d%5d%5d%5d%6d%7d%8.2f\n",stu[i].num,stu[i].name,stu[i].classes,
    stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].average);
    }
    system("pause");system("cls");print();
}
void print2()
{
    int i,j,k;
    printf("请输入班级:\n");
    scanf("%d",&k);
    printf("学号\t姓名\t班级 语文 数学 英语 计算机 总分 平均分\n");
    for(i=0;i<NUM;i++)
    {
        if(k==stu[i].classes)
        {
                stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3];
        stu[i].average=(float)stu[i].sum/4.0;
        printf("%d\t%s\t%d%5d%5d%5d%6d%7d%8.2f\n",stu[i].num,stu[i].name,stu[i].classes,
    stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].average);
    }
    }
    printf("输出不及格学生名单及成绩:\n");
    printf("学号\t姓名\t班级 语文 数学 英语 计算机 \n");
    for(i=0;i<NUM;i++)
    {for(j=0;j<4;j++)
    {
        if(stu[i].score[j]<60&&k==stu[i].classes)
            printf("%d\t%s\t%d%5d%5d%5d%6d\n",stu[i].num,stu[i].name,stu[i].classes,
    stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3]);
        break;
    }
    }
    system("pause");system("cls");print();
}
void print()
{
    system("cls");
    char a;
    printf("1 按学期输出\n");
    printf("2 按班级输出\n");
    printf("3 返回\n");
    fflush(stdin);
    a=getchar();
    switch(a)
    {
    case'1':print1();
    case'2':print2();
    case'3':zcd();
    default:print();
    }
}
void sort()
{
    int i,j=0;
    int temp;
    for(i=0;i<NUM;i++)
    {
        stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3];
        stu[i].average=(float)stu[i].sum/4.0;
   
    }
    for(i=0;i<NUM;i++)
    {
        for(j=i+1;j<NUM;j++)
        {
            if(stu[i].sum<stu[j].sum)
            {
                temp=stu[i].sum;
                stu[i].sum=stu[j].sum;
                stu[j].sum=temp;
            }
        }
    }
    printf("学号\t姓名\t班级 语文 数学 英语 计算机 总分 平均分\n");
    for(i=0;i<NUM;i++)
    printf("%d\t%s\t%d%5d%5d%5d%6d%7d%8.2f\n",stu[i].num,stu[i].name,stu[i].classes,
    stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].average);
system("pause");system("cls");print();
}
void modify()
{
    system("cls");
    int number,i;
    printf("\t\t\t请输入要修改信息的学生学号:");
    scanf("\t\t\t%d",&number);
    for(i=0;i<NUM;i++)
        if(number==stu[i].num) break;
        if(i<NUM)
        {
            printf("请输入修改后的学生信息:");
            printf("\n请输入学生的学期:");
            scanf("%d,&stu[i].temp");
            printf("\n请输入学生的学号:");
            fflush(stdin);
            scanf("%d",&stu[i].num);
            printf("\n请输入学生的班级:");
            scanf("%d",&stu[i].classes);
            printf("\n请输入学生的姓名:");
            scanf("%d",&stu[i].name);
            printf("\n请输入学生的语文成绩:");
            scanf("%d",&stu[i].score[0]);
            printf("\n请输入学生的数学成绩:");
            scanf("%d",&stu[i].score[1]);
            printf("\n请输入学生的英语成绩:");
            scanf("%d",&stu[i].score[2]);
            printf("\n请输入学生的计算机成绩:");
            scanf("%d",&stu[i].score[3]);
        }
        else
            printf("没找到该学生的信息\n");
        system("pause");system("cls");zcd();
}
void zcd()
{
    int n=0;
    char m;
    system("cls");
    printf("按任一键进入主菜单\n");
    printf("*******************************************************\n");
    printf("\t\t贺州学院欢迎您\n");
    printf("\n\t\t\t-----欢迎使用学生管理系统\n\n\t\t\t\t\t-----\n");
    printf("***********************MENU****************************\n");
    printf("\t\t\t1. 输入学生成绩记录\n");
    printf("\t\t\t2. 排序并显示\n");
    printf("\t\t\t3. 按班级显示成绩单\n");
    printf("\t\t\t4. 查找个人成绩\n");
    printf("\t\t\t5. 修改\n");
    printf("\t\t\t6. 退出\n");
    printf("*******************************************************\n");
    printf("\n\t\t\t 输入你的选择(1~7):");
    fflush(stdin);
    m=getchar();
    do
    {
        switch(m)
        {
            case'1':input();zcd();break;
            case'2':sort();system("pause");zcd();break;
            case'3':print();system("pause");break;
            case'4':search();zcd();break;
            case'5':modify();system("pause");zcd();break;
            case'6':exit(0);
            default:printf("错误命令");getchar();zcd();
        }
    }while(1);
}
int main()
{
    zcd();
}
搜索更多相关主题的帖子: classes 
2016-07-12 19:24
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:20 
   switch(a)
    {
    case'1':print1();break;
    case'2':print2();break;
    case'3':zcd();break;
    default:print();
    }
少了break,所以无论你的a输入什么,最终都会执行default:print();所以就变成无限调用void print();函数了。
2016-07-12 20:35
快速回复:修改程序,老师说print陷入死循环,这个程序怎么改?我只有20分
数据加载中...
 
   



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

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