| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 797 人关注过本帖
标题:为什么输入成绩后,输入的成绩是错误的!
只看楼主 加入收藏
ldj34089850
Rank: 2
等 级:论坛游民
帖 子:22
专家分:12
注 册:2013-11-10
结帖率:60%
收藏
 问题点数:0 回复次数:2 
为什么输入成绩后,输入的成绩是错误的!
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#define MAXSIZE 100
typedef struct
{     
    char no[10];
    char name[10];
        char sex[10];
    char born[15];
    char worktime[10];
    char address[20];
    char tel[15];
    int score;
}Student;
typedef struct
{     
    int last;     
    Student data[MAXSIZE];
}Seqlist;



void displayAll(Seqlist *L)
{   
    int i,n;
    i=0;   
    n=L->last;   
    printf("学号    姓名        性别    出生年月    工作时间    家庭地址    电话号码    数据结构成绩\n");
    while(i<=n)   
    {        
        printf("%-8s",L->data[i].no);
        printf("%-12s",L->data[i].name);
        printf("%-8s",L->data[i].sex);
        printf("%-12s",L->data[i].born);
        printf("%-12s",L->data[i].worktime);
        printf("%-12s",L->data[i].address);
        printf("%-12s",L->data[i].tel);
        printf("%-12d",L->data[i].score);
        printf("\n");
        i=i+1;  
    }
}   
void display(Seqlist *L,int i)
{     
    printf("学号    姓名        性别    出生年月    工作时间    家庭地址    电话号码    数据结构成绩\n");     
    printf("%-8s",L->data[i].no);
    printf("%-12s",L->data[i].name);
    printf("%-8s",L->data[i].sex);
    printf("%-12s",L->data[i].born);
    printf("%-12s",L->data[i].worktime);
    printf("%-12s",L->data[i].address);
    printf("%-12s",L->data[i].tel);
    printf("%-12d",L->data[i].score);
    printf("\n");
}

Student *inputdata()
{      
    Student s1;  
    Student *s=&s1;   
    char no[10];   
    printf("\n请输入学号:");   
    scanf("%s",&no);   
    if(no[0]=='#')
        return NULL;   
    strcpy(s->no,no);  
    printf("\n请输入姓名:");
    scanf("%s",s->name);
    printf("\n请输入性别:");
    scanf("%s",s->sex);
    printf("\n请输入出生年月:");
    scanf("%s",s->born);
    printf("\n请输入工作时间:");
    scanf("%s",s->worktime);
    printf("\n请输入家庭地址:");
    scanf("%s",s->address);
    printf("\n请输入电话号码:");
    scanf("%s",s->tel);
    printf("\n请输入数据结构成绩:");   
    scanf("%d",&s->score);   
    return s;
}

Seqlist *initseq()
{   
    Seqlist *L;   
    L=(Seqlist *)malloc(sizeof(Seqlist));   
    L->last=-1;  
    Student *s;     
    printf("\n请输入学生信息,按#结束输入!");   
    s=inputdata();   
    while(s)  
    {
        L->last++;
        L->data[L->last]=*s;     
        s=inputdata();   
    }
    return L;
}

int insertElem(Seqlist *L,int i)     //在第i个位置上插入
{
    int j,k;  
    Student *s;     
    k=L->last;   
    if(L->last==MAXSIZE-1)
    {
        printf("\n----------overflow------------\n");  
        return 0;
    }
    if(i<1||i>k+2)   
    {
        printf("the insert place error.");
        return 0;   
    }      
    for(j=k;j>=i-1;j--)     
    {      
        L->data[j+1]=L->data[j];
    }
    s=inputdata();
    L->last++;
    L->data[i-1]=*s;return 1;
}

int deleteElem(Seqlist *L,char ch[10])
{
    int j,i;
    for(i=0;i<=L->last+1;i++)
    {
        if(strcmp(L->data[i].no,ch)==0||strcmp(L->data[i].name,ch)==0)
        {
            if (L->last == 0)
            {
                free(L);
            }
            else
            {
                for(j=i;j<=L->last+1;j++)
                {
                    if (j+1 <= L->last+1)
                    {
                        L->data[j]=L->data[j+1];
                    }
                }
            }
        }
    }
    L->last--;  
    return 1;
}

void locateElem(Seqlist *L,char ch[10])
{
    int i;
    for(i=0;i<=L->last;i++)
        if(strcmp(L->data[i].no,ch)==0||strcmp(L->data[i].name,ch)==0)
        {  
            display(L,i);  
            break;
        }
}

void locateElemByplace(Seqlist *L,int i)
{
    display(L,i-1);
}

int lengthList(Seqlist *L)
{
    return L->last+1;
}

void insertsort(Seqlist *L)
{
    Seqlist *L1=(Seqlist *)malloc(sizeof(Seqlist));  
    Student temp;
    int len,i,j;   
    len=L->last;
    for(i=0;i<=len;i++)  
    {         
        L1->data[i]=L->data[i];   
    }      
    L1->last=L->last;     
    for(i=1;i<=len;i++)  
    {         
        if(L1->data[i].score>L1->data[i-1].score)   
        {         
            temp.score=L1->data[i].score;           
            strcpy(temp.no,L1->data[i].no);      
            strcpy(temp.name,L1->data[i].name);   
            L1->data[i]=L1->data[i-1];         
            for(j=i-2;(temp.score>L1->data[j].score)&&(j>=0);j--)     
                L1->data[j+1]=L1->data[j];        
            L1->data[j+1].score=temp.score;        
            strcpy(L1->data[j+1].no,temp.no);     
            strcpy(L1->data[j+1].name,temp.name);     
        }     
    }   
    printf("\n排序后为:\n");  
    displayAll(L1);
}
int main()
{     
    printf("\n\n==========================================\n");   
    printf("                顺序表学生成绩管理系统         \n ");   
    printf("\n\n==========================================\n");  
    Seqlist *L;   
    char ch[10];
    int i,res,a,b=1;   
    while(b)   
    {        
        printf("\n\n");  
        printf("1.创建         2.指定位置插入    3.按位置删除\n");   
        printf("4.求学生总数   5.按学号查找     6.按位置查找\n ");     
        printf("7.显示所有学生 8.成绩排序       9.退出\n");      
        scanf("%d",&a);         
        switch(a)   
        {            
        case 1:   
            L=initseq();
            displayAll(L);                    
            break;            
        case 2:  
            printf("\n输入插入的位置:\n");      
            scanf("%d",&i);                    
            res=insertElem(L,i);                  
            if(res==1)              
                displayAll(L);         
            break;           
        case 3:  
            printf("\n输入删除学生的学号或姓名:");           
            scanf("%s",&ch);                     
            res=deleteElem(L,ch);              
            if(res==1)                     
                displayAll(L);            
            break;            
        case 4:   
            printf("\n学生总数为%d:\n",lengthList(L));  
            break;           
        case 5:
            printf("请输入姓名或学号:");      
            scanf("%s",ch);                  
            locateElem(L,ch);
            break;         
        case 6:   
            printf("\n输入要查找学生的位置:");     
            scanf("%d",&i);                     
            locateElemByplace(L,i);
            break;      
        case 7:  
            displayAll(L);
            break;      
        case 8:   
            insertsort(L);
            break;  
        case 9:  
            printf("已退出");        
            b=0;                  
            break;         
        }   
    }
}
搜索更多相关主题的帖子: address include 姓名 
2014-01-01 23:42
MuseoO
Rank: 2
等 级:论坛游民
威 望:1
帖 子:4
专家分:44
注 册:2013-10-18
收藏
得分:0 
长的程序。。
2014-01-22 00:11
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
不明白你说什么错误,至少说明清楚一点,
太长,调试一下

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2014-01-23 08:25
快速回复:为什么输入成绩后,输入的成绩是错误的!
数据加载中...
 
   



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

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