| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 430 人关注过本帖
标题:找不出跳出循环的原因
只看楼主 加入收藏
q1826050194
Rank: 2
等 级:论坛游民
帖 子:67
专家分:19
注 册:2011-3-7
结帖率:77.78%
收藏
已结贴  问题点数:15 回复次数:6 
找不出跳出循环的原因
描述:老师想知道考勤情况,让三个班的学生依次到讲台上录入自己的学号,再对三个班学生登录的学号进行整合排序,以便登记;
要求:全部使用顺序表操作;每個班人數不多於30人;
输入:若干学号,三个班之间的数据用0隔开;
输出:各个班学生录入的学号,整合排序好的列表,以及人数;

#include<stdio.h>
typedef struct ass
{
   int data[90];
   int last;   
}sch;


void intput(sch *cla)//输出线性表
{
    int n,a=0;
    sch *p;
    p=cla;
   
    scanf("%d",&p->data[a]);
    for(a=1,p->last=0;n!=0;a++)
    {scanf("%d",&p->data[a]);p->last++;if(p->data[a]==0)break;}   
}

void queue(sch *head)//线性表的排列
{
    int a,b,c,d,temp,min;
    for(a=0;a<head->last-1;a++)
    {
      min=a;
      for(b=a+1;b<head->last;)
      {
          if(head->data[min]>head->data[b])
         min=b;
          temp=head->data[a];
          head->data[a]=head->data[min];
        head->data[min]=temp;
        }   
    }
}
void output(sch *p)//创建线性表
{
    int i,j,k;
    for(i=0;i<p->last;i++)
    printf("%d\n",p->data[i]);
}




int main()//先求三个班的学生,然后再整合在一个线性表
{
    int i,j,k,l,u=0;
    sch cla_1,cla_2,cla_3,all,*p,*q,*s,*r;
    p=&cla_1;
    q=&cla_2;
    s=&cla_3;
    r=&all;
    r->last=0;
    printf("请1班学生输入学号:\n");
    intput(p);
    k+=p->last;
    for(i=0;i<p->last;i++)
    {r->data[u]=p->data[i];u++;r->last++;}
    printf("请2班学生输入学号:\n");
    intput(q);
    k+=q->last;
    for(i=0;i<q->last;i++)
    {r->data[u]=q->data[i];u++;r->last++;}
    printf("请3班学生输入学号:\n");
    intput(s);
    k+=s->last;
    for(i=0;i<s->last;i++)
    {r->data[u]=s->data[i];u++;r->last++;}
    queue(p);
    output(p);
    return 0;
}
搜索更多相关主题的帖子: 线性表 
2011-04-02 08:30
q1826050194
Rank: 2
等 级:论坛游民
帖 子:67
专家分:19
注 册:2011-3-7
收藏
得分:0 
大虾们,帮帮手····
2011-04-02 08:53
w123012306
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:蜘蛛侠
威 望:4
帖 子:307
专家分:1180
注 册:2010-4-22
收藏
得分:0 
没有设置跳出! 设置一个跳出点!!!

楼上,楼下的一定要幸福开心哦!
2011-04-02 10:03
q1826050194
Rank: 2
等 级:论坛游民
帖 子:67
专家分:19
注 册:2011-3-7
收藏
得分:0 
回复 3楼 w123012306
运行到那个排列那个子函数,它排列完应该就去执行输出的那个函数,但是我不知道为什么它不能执行···
2011-04-02 12:14
keysto
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-4-2
收藏
得分:0 
有点乱,看花眼啦
2011-04-02 12:35
raingain
Rank: 2
等 级:论坛游民
帖 子:2
专家分:22
注 册:2011-2-10
收藏
得分:15 

#include<stdio.h>
typedef struct ass
{
   int data[90];
   int last;   
}sch;


void intput(sch *cla)//输出线性表
{
    int n=0,a=0;
    sch *p;
    p=cla;
   
    scanf("%d",&p->data[a]);
    for(a=1,p->last=0;n<30;a++,n++)
    {scanf("%d",&p->data[a]);p->last++;if(p->data[a]==0)break;}   
}

void queue(sch *head)//线性表的排列
{
    int a,b,temp,min;
    for(a=0;a<head->last-1;a++)
    {
      min=a;
      for(b=a+1;b<head->last;b++)
      {
          if(head->data[min]>head->data[b])
         min=b;
          temp=head->data[a];
          head->data[a]=head->data[min];
        head->data[min]=temp;
        }   
    }
}
void output(sch *p)//创建线性表
{
    int i;
    for(i=0;i<p->last;i++)
    printf("%d\n",p->data[i]);
}




int main()//先求三个班的学生,然后再整合在一个线性表
{
    int i,u=0;
    sch cla_1,cla_2,cla_3,all,*p,*q,*s,*r;
    p=&cla_1;
    q=&cla_2;
    s=&cla_3;
    r=&all;
    r->last=0;
    printf("请1班学生输入学号:\n");
    intput(p);
    for(i=0;i<p->last;i++)
    {r->data[u]=p->data[i];u++;r->last++;}
    printf("请2班学生输入学号:\n");
    intput(q);
    for(i=0;i<q->last;i++)
    {r->data[u]=q->data[i];u++;r->last++;}
    printf("请3班学生输入学号:\n");
    intput(s);
    for(i=0;i<s->last;i++)
    {r->data[u]=s->data[i];u++;r->last++;}
    queue(r);
    output(r);
    return 0;
}
 稍稍改了下,没用的变量删了,看看结果满不满意。
2011-04-02 13:20
q1826050194
Rank: 2
等 级:论坛游民
帖 子:67
专家分:19
注 册:2011-3-7
收藏
得分:0 
回复 6楼 raingain
嗯嗯,这正是我想要的,谢谢吖
2011-04-02 22:15
快速回复:找不出跳出循环的原因
数据加载中...
 
   



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

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