回 帖 发 新 帖 刷新版面

主题:[原创]小女是初学,还请各位高手近来指点

#include<stdio.h>
#include<malloc.h>
#include<string.h>
#define MAXSIZE 100

struct studen
{
  char name[20];
  int  math;
  int english;
  int chinese;
  int sum;


};

 

typedef struct
{
    struct studen stu[MAXSIZE];
    int last;

}   Seqlist;


Seqlist *Init_Seqlist()
{
     Seqlist *l;
  l=(Seqlist *)malloc(sizeof(Seqlist));
     l->last=-1;
 return l;
}
 

Seqlist *input(Seqlist *q)                     /*输入*/
{
 
      int i,num;
      printf("请输入要输入的学生个数:");
      scanf("%d",&num);

      for(i=q->last+1;i<num;i++)
                                                    /*当我想再次执行这个函数时我要输入的学生数却不能执行那么多输入,比如
                                                    在第一次执行这个函数时我要输入3个学生的信息,可再次执行时我还想输入3个学生
                                                    的信息,出现了实际输入的比要输入的少
                                                    */
       {

    
           printf("\n\t请输入姓名:");
           scanf("%s",(q->stu[i].name));

           printf("\n\t请输入数学成绩:");
           scanf("%d",&(q->stu[i].math));

           printf("\n\t请输入英语成绩:");
           scanf("%d",&(q->stu[i].english));

           printf("\n\t请输入语文成绩:");
           scanf("%d",&(q->stu[i].chinese));

           q->stu[i].sum=q->stu[i].math+q->stu[i].english+q->stu[i].chinese;

           q->last++;
           if(q->last==MAXSIZE-1)
                     printf("表满\n");

       }
        return q;
}

Seqlist *voi(Seqlist *q)                        /*排序*/
{
    int i,j;
 struct  studen stu;

    
    for(i=0;i<=q->last;i++)
        for(j=i+1;j<=q->last;j++)                     
    
         if( q->stu[i].sum<q->stu[j].sum)
         {
         stu = q->stu[i];
         q->stu[i]=q->stu[j];
          q->stu[j]=stu;
         }
    
    

return q;

}

int location_Seqlist(Seqlist *q,char name[])            /*查找*/
{
     int i;
     i=0;

     while((i<=q->last)&&strcmp(q->stu[i].name,name)==0)         /*感觉这个循环体不执行*/
     { i=i+1;}

     if(i>q->last)
         return (-1);
      else
          return(i);


}           
void output(Seqlist *l)                               /*输出*/
{
       int i=0;
       for(i=0;i<=l->last;i++)
       {
          printf("姓名:%-15s",l->stu[i].name);
          printf("数学成绩:%-6d",l->stu[i].math);
          printf("英语成绩:%-6d",l->stu[i].english);
          printf("语文成绩:%-6d",l->stu[i].chinese);
          printf("总成绩:%-6d",l->stu[i].sum);
          printf("\n");
       }
}


void main()
{      int i,j;
     char name[20];
            Seqlist *l;
            l=Init_Seqlist();
         while(i!=4)
         {
         printf("\n\n\n\n1.进入学生系统\n");
      
         printf("2.按成绩排名输出\n");
         printf("3.按姓名查找学生\n");
         printf("4.退出系统\n");

             printf("\n\t请选择(1-4):");
         scanf("%d",&i);
         switch(i)
         {
         case 1:  input(l);break;
        
         case 2: voi(l);
                printf("\n===============================排名是===============================\n");
                 output(l);break;
         case 3:
             {printf("请输入要查找的同学姓名:");
                 scanf("%s",name);
                 j=location_Seqlist(l,name);
                 if(j==-1)
                          printf("没有查到你输入的同学\n");    
                 else
                      printf("\n\n%s同学的排名是第%d位",name,j);   }    break;

         case 4:printf("谢谢使用\n");break;
         default:printf("输入有误,请重新输入\n");
         }
         }
            free(l);
         
}

回复列表 (共15个回复)

11 楼


哦``是这样滴啊~`我明白了~`谢谢喽``~


你真是好人`~`大大的好人`~``你说我要怎么学才能把软件着方面学好呢 ~?

12 楼

[quote]
真是太感谢你了 ```~现在可以正常运行了~`

可是我不是很明白为什么加个那个语句就可以了呢~?


能不能给我仔细讲下啊~```[/quote]

我从来不会看不起女生,但是编程的问题上我看不起文科生,不谈他们的思维的问题,因为这很难说,但是他们的知识结构是一定不适合的。

13 楼

[quote]
哦``是这样滴啊~`我明白了~`谢谢喽``~


你真是好人`~`大大的好人`~``你说我要怎么学才能把软件着方面学好呢 ~?
[/quote]
其实很简单:多练,多想,多交流!
编程最重要的是写代码,做项目;其次是思考,遇到问题先自己想,实在不会就看答案,不过只看答案,不要看解释,然后再根据答案自己思考原因;最后就是多上论坛和人交流,这里牛人很多的,最适合我们这种菜鸟来取经了。

14 楼

你太强了
我都学了好长时间的数据结构了也编不不了

15 楼


最近偶又用链表做了个比这个程序功能还强大的程序`

感觉特有成就感``

啊~`````好高兴哦~`

谢谢你哦~`

我来回复

您尚未登录,请登录后再回复。点此登录或注册