| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 757 人关注过本帖, 1 人收藏
标题:帮忙看下我编的程序有错没
取消只看楼主 加入收藏
zz2556927
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-6-18
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:4 
帮忙看下我编的程序有错没
下楼发代码
2012-06-18 11:35
zz2556927
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-6-18
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 10

struct student
{
    int flag;//标记:未赋值时为0复制后为1判断数组是否为空的标记!很重要的思想
    int number;
    char name[20];
    int Englishscore;
    int Chinesescore;
};//此处不要忘记;

struct student stu[N];

int main()
{   
    int i=0;
    while(i<N)
    {
        stu[i].flag=0;
        i++;
    }
    char count;
    int delet();
    void input();
    int increase();
    int insert();
    int query();
    int sort();
    //初始化工作
    //FILE *fp;
    //fp=fopen("student","w+");
   
    while(1)
    {
        printf("************欢迎使用学生成绩管理系统*************\n");
        printf("*                1.录入学生成绩                 *\n");
        printf("*                2.修改学生成绩                 *\n");
        printf("*                3.增加学生成绩                 *\n");
        printf("*                4.查询学生成绩                 *\n");
        printf("*                5.删除学生成绩                 *\n");
        printf("*                6.排序                         *\n");
        printf("*                7.退出系统                     *\n");
        printf("*************************************************\n");
        scanf("%d",&count);
        switch(count)
        {
            case 1: input();break;        //录入成绩
            case 2: insert();break;        //修改成绩
            case 3: increase();break;    //增加成绩
            case 4: query();break;        //查询成绩
            case 5: delet();break;      //删除成绩
            case 6: sort();break;      //排序
            case 7: printf("     感谢您使用本系统,欢迎下次使用!\n"); exit(0);      break;

        }
    }
    return 0;
}

void input()
{
    int i=0;
   
    while(i<N)
    {
        printf("输入学生%d的信息:number,  Englishscore,  Chinesescore,  name:\n",(i+1));
        scanf("%d,%d,%d,%s",&stu[i].number,&stu[i].Englishscore,&stu[i].Chinesescore,stu[i].name);//char[]类型的 输入和输出放到最后,不然不识别是否结束,若结构体数组里有两个char[],那要用两次SCANF()函数。多一次回车。
        //scanf("%s",stu[i].name);一定注意char[]输入问题
        stu[i].flag=1;
        printf("录入成功\n");
        i++;
    }
}

int delet()                                                                       //删除
{   
    int count;
    printf("请输入您要删除的学生学号:\n");    //没想到解决输出"要删除的信息不存在"的问题。
    scanf("%d",&count);
   
    for(int i=0;i<N;i++)
    {
        if(stu[i].number==count && stu[i].flag == 1)
        {
              stu[i].flag=0;
              printf("删除成功!\n");
              return 0;//作用结束当前整个函数,比如for循环共五次,后三次没必要继续,那就用Return0结束,并且下面的语句也不再继续进行执行。break结束循环,但是会继续执行下面的PRINT语句,注意区别。
        }
    }
    printf("要删除的学生不存在!\n");

    return 0;
}

int insert()                                                               //修改
{
    printf("按学号修改\n");
    int choice;
    scanf("%d",&choice);
   
        int num;
        printf("请输入您要修改学生的学号\n");
        scanf("%d",&num);  
            for(int j=0;j<N;j++)
            {
                if((stu[j].number==num)&&(stu[j].flag==1))//这么写好像很省奥很概括
                {
                    printf("请重新输入学生信息:number,  Englishscore,  Chinesescore,  name:\n");
                    scanf("%d,%d,%d,%s",&stu[j].number,&stu[j].Englishscore,&stu[j].Chinesescore,stu[j].name);
                    printf("修改成功!\n");
                    return 0;
                }
               
            }
            printf("修改内容不存在\n");
            return 0;

}
int query()                                                                       //输出
{   
    printf("number   name   Englishscore   Chinesescorec     flag\n");
    for(int i=0;i<N;i++)
    {
        if(stu[i].flag==1)
            printf("%5d  %5s  %10d  %10d  %12d\n",stu[i].number,stu[i].name,stu[i].Englishscore,stu[i].Chinesescore,stu[i].flag);
    }
   
    return 0;
}
sort()
{
    int data[N];
    int i,j,t;
    data[N]=stu[N].number ;
    for(i=0;i<N;i++)
        for(j=0;j<N-i;j++)
            if(data[j]>data[j+1])
            {
                t=data[j];
                data[j]=data[j+i];
                data[j+i]=t;
            }  
      printf("排序结果为:\n");
    return 0;
}

int increase()
{
    for(int i=0;i<N;i++)
    {
        if(stu[i].flag==0)
        {
            printf("请输入学生信息\n");
            printf("number   name   Englishscore   Chinesescorec     flag\n");
            scanf("%d,%d,%d,%s",&stu[i].number,&stu[i].Englishscore,&stu[i].Chinesescore,stu[i].name);
            stu[i].flag=1;
            printf("输入学生信息成功!\n");
            return 0;
        }            
    }
            printf("对不起,信息库已满,不能输入!\n");
            return 0;
        
}
2012-06-18 11:35
zz2556927
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-6-18
收藏
得分:0 
本人新手
2012-06-18 11:36
zz2556927
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-6-18
收藏
得分:0 
一有字母打上运行就会崩溃
2012-06-18 11:43
zz2556927
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-6-18
收藏
得分:0 
没人? 在线等的啊
2012-06-18 11:43
快速回复:帮忙看下我编的程序有错没
数据加载中...
 
   



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

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