| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 476 人关注过本帖
标题:我的程序为什么只能进菜单一,进不了后面的,求帮忙。。。
只看楼主 加入收藏
寂夜残影
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-5-10
收藏
 问题点数:0 回复次数:4 
我的程序为什么只能进菜单一,进不了后面的,求帮忙。。。
#include<stdio.h>
#include<string.h>
char k[5];
struct student          //定义结构体,存储学生姓名和成绩
{
    char name;
    float score;
}stu[20];

void choose();         //函数申明
void input();
void sort1();   
void sort2();
void search1();
void search2();
void back();
void look();
int find(int t,int m,int n);

void menu()                    //菜单
{
 printf("\n\n\n                 欢迎进入学生成绩管理系统\n\n");
 printf("          ~~~~~~~~~~~~~~~~菜单~~~~~~~~~~~~~~\n");
 printf("                      [1].输入学生成绩\n");
 printf("                      [2].直接法排序\n");
 printf("                      [3].冒泡法排序\n");
 printf("                      [4].线性查询\n");
 printf("                      [5].对分查询\n");
 printf("                      [6].浏览成绩\n");
 printf("                      [0].退出系统\n");
 choose();
}


void choose()                  
{
    int i;
    printf("请输入数字:\n");
    scanf("%d",&i);
    switch(i)
    {
     case 1:input();   break;
     case 2:sort1();   break;
     case 3:sort2();   break;
     case 4:search1(); break;
      case 5:search2(); break;
     case 6:look();    break;
     case 0:printf("正在退出\n"); break;
     default:printf("error!\n");
    }
}


void input()            //输入20个学生的成绩
{
 int i,j;
 for(i=0;i<20;i++)
 {
    j=i+1;
    printf("请输入第%d个学生的成绩:(60~99分)\n",j);
    scanf("%f",&stu[i].score);
    if(stu[i].score>99||stu[i].score<60)
    {
        printf("输入错误请重新输入");i=i-1;
    }
 }
 back();
}


void sort1()           //用自然排序法将学生成绩由低到高排列
{
     int i,j;
     float t;
     char a;
     for(i=0;i<19;i++)
        for(j=i+1;j<20;j++)
            if(stu[i].score>stu[j].score)
            {
                 t=stu[i].score;
                 stu[i].score=stu[j].score;
                 stu[j].score=t;
                 a=stu[i].name;
                 stu[i].name=stu[j].name;
                 stu[j].name=a;
            }
        back();
}


void sort2()            //用冒泡法将学生成绩由低到高排列
{
 int i,j;
 float t;
 char a;
 for(j=1;j<=19;j++)
    for(i=0;i<20-j;i++)
        if(stu[i].score>stu[i+1].score)
        {
            t=stu[i].score;
            stu[i].score=stu[i+1].score;
            stu[i+1].score=t;
            a=stu[i].name;
            stu[i].name=stu[i+1].name;
            stu[i+1].name=a;
        }
    back();
}


void search1()           //用线性搜索法检索某个学生的成绩
{
    int i;
    char name;
    printf("请输入所要查询的学生的名字:\n");
    gets(k);
    scanf("%c",&name);
    for(i=0;i<20;i++)
        if(stu[i].name==name)
        {  
            printf("\n\n你查询的学生成绩如下:\n");
            printf("姓名:%2c    ",stu[i].name);
            printf("成绩:%5.1f\n",stu[i].score);
        }
    back();
}


void search2()            //用对分搜索法检索某个学生的成绩
{
    int i,t;
    char name;
    printf("请输入你要查询的学生的名字:\n");
    gets(k);
    scanf("%c",&name);
    for(i=0;i<20;i++)
        if(stu[i].name==name)
            t=i;
  i=find(t,0,19);
  printf("\n\n你查询的学生成绩如下:\n");
  printf("姓名:%c     ",stu[i].name);
  printf("成绩:%.1f\n",stu[i].score);
  back();
}


int find(int t,int m,int n)
{
    int i;
    while(m<=n)
    {
        i=(m+n)/2;
        if(i<t)  m=i+1;
        else if(i>t)  n=i-1;
        else return(i);
    }
}


void back()                 //返回主菜单
{
    int i;
    printf("\n\n");
    printf("输入0返回主菜单\n");
    scanf("%d",&i);
    if(i==0)
        menu();
    else    back();
}


void look()                  //显示所有学生的成绩
{
 int i;
 printf("所有学生成绩如下:\n\n");
 for(i=0;i<20;i++)
 {
    printf("%4d 姓名:%c     ",i+1,stu[i].name);
    printf("成绩:%5.1f\n",stu[i].score);
 }
 back();
}


void main()
{
    int x;
    for(x=0;x<20;x++)
    {
        stu[x].name=x+97;
    }
    menu();
}
搜索更多相关主题的帖子: 申明 姓名 include 管理系统 结构体 
2011-12-19 14:01
寂夜残影
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-5-10
收藏
得分:0 
回复 2楼 cailinstar
你说的什么额....
2011-12-19 21:02
寂夜残影
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-5-10
收藏
得分:0 
怎么没人会吗,不可能啊,程序内容有点多额
2011-12-19 21:03
燃高
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:140
注 册:2011-12-13
收藏
得分:0 
程序没事啊!!那个排序在内里,所以不能显示什么呢!你先运行6.然后运行4 再运行6看咯!!
2011-12-19 22:19
快速回复:我的程序为什么只能进菜单一,进不了后面的,求帮忙。。。
数据加载中...
 
   



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

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