| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 504 人关注过本帖
标题:求个函数!
取消只看楼主 加入收藏
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
结帖率:92.86%
收藏
已结贴  问题点数:5 回复次数:2 
求个函数!
问题描述

学生信息由学号,姓名,性别,语文成绩,数学成绩,英语成绩,平均分和总分构成。
学号、姓名长度不超过20,学生人数不超过100。
写一个处理学生信息的程序,要求有以下功能
1)插入学生信息,当待插入的学号是从来就没有插入过的,则插入成功;否则插入不成功。
命令格式如下:
INSERT id name sex s1 s2 s3
表示插入一个学生信息。
插入成功显示插入的学生信息,格式如下:
学号 姓名 性别 语文成绩 数学成绩 英语成绩 平均成绩 总成绩
中间有一个空格分开,所有成绩保留2位小数。
插入不成功,则显示“Failed”
2)显示所有学生信息,命令格式如下:
LIST
按照学号从小到大的顺序显示所有学生信息。每个学生信息一行,格式如下
学号 姓名 性别 语文成绩 数学成绩 英语成绩 平均成绩 总成绩
中间有一个空格分开,所有成绩保留2位小数。
3)
FIND id
查找学号为id的学生,查找成功就显示学生信息,格式如下
学号 姓名 性别 语文成绩 数学成绩 英语成绩 平均成绩 总成绩
查找不成功,则显示“Failed”
4)学生信息删除,命令格式如下
DELETE id
删除学号为id的学生信息,如果删除成功,输出"Deleted“,否则输出"Failed"
5)退出程序,命令格式如下:
QUIT
输出"Good bye!"后结束程序。

现在给定一个学生学号、姓名和三门课成绩,请输出该生的信息。
输入的最后一条命令总是QUIT
设计一个结构体表示学生信息。
分别设计两个函数,来处理学生信息的插入与输出。
设计一个函数对所有学生信息按学号进行排序。
再设计一个函数输出所有学生信息。在主函数中调用插入学生信息与显示所有学生信息的函数。


求个Deleted函数?
搜索更多相关主题的帖子: 函数 
2009-12-23 19:49
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
收藏
得分:0 
怎么了?

学无止境!
2009-12-25 19:49
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
收藏
得分:0 
我编了个:
#include<stdio.h>
#include<string.h>
struct student
{
    char xuehao[20];
    char name [20];
    char sex;
    double score[3];
    double ave;
    double sum;
};
struct temp
{
    char xuehao[20];
    char name [20];
    char sex;
    double score[3];
    double ave;
    double sum;
}top;
int Insert(struct student stu[],int m)
{
    int i,j,k=0;
    scanf("%s %s %c",top.xuehao,top.name, &top.sex);
    top.sum=0;
    for(i=0; i<3; i++)
    {
        scanf("%lf", &top.score[i]);
        top.sum += top.score[i];
    }
    top.ave=top.sum/3;
    for(i=0;i<=m-1;i++)
    {
        if(strcmp(stu[i].xuehao,top.xuehao)==0 )
        {
            printf("Failed\n");
            k=1;
        }
    }
    if(k==0)
    {
        strcpy(stu[m].xuehao,top.xuehao);
        strcpy(stu[m].name,top.name);
        stu[m].sex=top.sex;
        for(j=0; j<3; j++)
        {
            stu[m].score[j]=top.score[j];
        }
        stu[m].ave=top.ave;
        stu[m].sum=top.sum;
    }
    return k;
}
void Find (struct student stu[],char a[],int n)
{
    int j,l=0,i,k;
    for (j=0;j<n;j++)
    {
        if (strcmp(stu[j].xuehao,a)==0)
        {
            l=1;
            k=j;
        }
    }
    if (l==1)
    {
        printf("%s %s %c ",stu[k].xuehao,stu[k].name,stu[k].sex);
        for(i=0; i<3; i++)
        {
            printf("%.2f ",stu[k].score[i]);
        }
        printf("%.2f %.2f\n",stu[k].ave,stu[k].sum);
    }
    if (l==0)
        printf ("Failed\n");
}
int Deleted(struct student a[],char b[],int n)
{
    struct student c[100];
    int i,j=0,k=0;
    int w=0;
    for(i=0;i<n;i++)
    {
        if(strcmp(a[i].xuehao,b)!=0)
        {
            c[k++]=a[i];
            j++;
        }
    }
    if(j==0)
    {
        printf("Failed\n");
        w=0;
    }
    else
    {
        printf("Deleted\n");
        for(i=0;i<k;i++)
            a[i]=c[i];
        w=1;
    }
    return w;
}
void List(struct student stu[], int n)
{
    int i,j;
    for(i=0;i<n;i++)
    {
        printf("%s %s %c ",stu[i].xuehao,stu[i].name,stu[i].sex);
        for(j=0;j<3;j++)
        {
            printf("%.2f ", stu[i].score[j]);
        }
        printf("%.2f %.2f\n",stu[i].ave,stu[i].sum);
    }
}
void output(struct student stu[],int m)
{
    int j;
    printf("%s %s %c ", stu[m].xuehao, stu[m].name, stu[m].sex);
    for(j=0; j<3; j++)
    {
        printf("%.2f ", stu[m].score[j]);
    }
    printf("%.2f %.2f\n", stu[m].ave, stu[m].sum);
}
void selSort(struct student *a, int n)
{
    int i, j, k;
    struct student t;
    for(i=0; i<n-1; i++)
    {
        k=i;
        for(j=i+1; j<n; j++)
            if (strcmp(a[k].xuehao,a[j].xuehao)>0)
                k=j;
        if(k != i)
        {
            t=a[i];
            a[i]=a[k];
            a[k]=t;
        }
    }
}
int main()
{
    struct student stu[100];
    char op[101];
    char a[20];
    char s[20];
    int b,p;
    int d=0;
    while(scanf("%s", op))
    {
        switch(op[0])
        {
            case 'I':
                b=Insert(stu,d);
                if(b==0)
                {
                    d++;
                    output(stu,d-1);
                }
                break;
            case 'L':
                selSort(stu,d);
                List(stu,d);
                break;
            case 'Q':
                printf("Good bye!\n");
                return 0;
            case 'F':
                scanf("%s",a);
                Find(stu,a,d);
                break;
            case 'D':
                scanf("%s",s);
                p=Deleted(stu,s,d);
                if(p==1)
                    d=d-1;
                break;
        }
    }
    return 0;
}

大家看看好不好?

学无止境!
2009-12-26 15:35
快速回复:求个函数!
数据加载中...
 
   



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

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