标题:我是大一新生,期末考试答辩做的项目,指针没学,不太理解。求指点
只看楼主
木子洋
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-6-21
结帖率:0
已结贴  问题点数:20 回复次数:4 
我是大一新生,期末考试答辩做的项目,指针没学,不太理解。求指点
score *creat(void)
{   
    score *head;
    score *p1,*p2,*p3,*max;
    int i,j;
    char t[10];
    n=0;
    p1=p2=p3=(score *)malloc(LEN);/*head=p3; 开辟一个新单元*/
    printf("请输入学生资料,输0退出!\n");
    repeat1: printf("请输入学生学号(学号应大于0):");/*输入学号,学号应大于0*/
    scanf("   %d",&p1->number);
    while(p1->number<0)
     {
         getchar();
         printf("输入错误,请重新输入学生学号:");
         scanf("%d",&p1->number);
     }
  /*输入学号为字符或小于0时,程序报错,提示重新输入学号*/
    if(p1->number==0)
        goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/
    else
    {
        p3=head;
        if(n>0)
        {
            for(i=0;i<n;i++)
            {
                if(p1->number!=p3->number)
                    p3=p3->next;
                else
                {
                    printf("学号重复,请重输!\n");
                    goto repeat1;
     /*当输入的学号已经存在,程序报错,返回前面重新输入*/
                }
            }
        }
     }
       printf("请输入学生姓名:");
       scanf("%s",&p1->name);/*输入学生姓名*/
       printf("请输入消费情况:");/*输入消费情况;*/
       scanf("%d",&p1->xiaofei);

 while(p1->number!=0)
  {
    n=n+1;
    if(n==1)
        head=p1;
    else
        p2->next=p1;
        p2=p1;
        p1=(score *)malloc(LEN);
        printf("请输入学生资料,输0退出!\n");
        repeat2:printf("请输入学生学号(学号应大于0):");
        scanf("%d",&p1->number);/*输入学号,学号应大于0*/

   while(p1->number<0)
   {
       getchar();
       printf("输入错误,请重新输入学生学号:");
       scanf("%d",&p1->number);}
   /*输入学号为字符或小于0时,程序报错,提示重新输入学号*/
   if(p1->number==0)
    goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/
   else
    {
        p3=head;
   if(n>0)
    {
        for(i=0;i<n;i++)
        {
            if(p1->number!=p3->number)
            p3=p3->next;
            else
                {
                    printf("学号重复,请重输!\n");
                    goto repeat2;
      /*当输入的学号已经存在,程序报错,返回前面重新输入*/
                }
        }
    }
   }
   printf("请输入学生姓名:");
   scanf("%s",&p1->name);/*输入学生姓名*/
   printf("请输入消费情况:");
   scanf("%d",&p1->xiaofei);/*输入消费情况; */
 }
end: p1=head;
     p3=p1;
  for(i=1;i<n;i++)
    {
        for(j=i+1;j<=n;j++)
        {
            max=p1;
            p1=p1->next;
            if(max->number>p1->number)
                {
                    k=max->number;
                    max->number=p1->number;
                    p1->number=k;
         /*交换前后结点中的学号值,使得学号大者移到后面的结点中*/
                    strcpy(t,max->name);
                    strcpy(max->name,p1->name);
                    strcpy(p1->name,t);
         /*交换前后结点中的姓名,使之与学号相匹配*/
         /*交换前后结点中的消费情况,使之与学号相匹配*/
                }
        }
        max=head;p1=head;/*重新使max,p指向链表头*/
   }
   p2->next=NULL;/*链表结尾*/
   printf("输入的学生数为:%d个!\n",n);
   getch();
   return(head);
}
搜索更多相关主题的帖子: printf 输入 学生 学号 number 
2019-06-21 18:06
幻紫灵心
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山咔咔里面
等 级:贵宾
威 望:53
帖 子:395
专家分:2640
注 册:2018-3-30
得分:10 
教C怎么可能不教指针?

saber,别哭.
2019-06-21 19:22
吕孟伟
Rank: 8Rank: 8
等 级:贵宾
威 望:27
帖 子:200
专家分:870
注 册:2018-10-4
得分:10 
哪句不懂你指出来就行。

借用一下侯捷的话:勿在浮沙筑高台。
2019-06-21 19:36
木子洋
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-6-21
得分:0 
回复 楼主 木子洋
课时不够
2019-06-21 21:23
木子洋
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-6-21
得分:0 
他做了一个列表。然后不太理解上是咋做出来的。
2019-06-22 21:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-495412-1-1.html




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

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