| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 760 人关注过本帖
标题:[求助]请高手帮忙看看这道题怎么错了
只看楼主 加入收藏
zhuyuanronaldo
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-11-29
收藏
 问题点数:0 回复次数:3 
[求助]请高手帮忙看看这道题怎么错了
[bo]题目:[/bo]设计一个有序顺序表,要求对两个顺序表中的元素进行排序后输出。有序顺序表和顺序表的主要区别是有序顺序表中的数据元素按数据元素值非递减有序。
数据输入:
第一行为要处理的第一个顺序表包含的数据个数m。
第二行为要处理的第一个顺序表,m个正整数之间用空格间隔。
第三行为要处理的第二个顺序表包含的数据个数n。
第四行为要处理的第二个顺序表,n个正整数之间用空格间隔。
数据输出:
输出合并后的有序顺序表,数据之间用空格间隔。
示例:
输入文件input2.txt:
2
1 4
2
3 2
输出:(标准输出)
1 2 3 4
[bo]下面是我做的程序:[/bo]#include<stdio.h>
#include<malloc.h>
void paixu(int *p,int num)//排序函数(冒泡排序)
{
    int i,j;
    int t;
    for(j=0;j<num;j++)
        for(i=j;i<num;i++)
            if(p[i]>p[i+1])
            {
                t=p[i];
                p[i]=p[i+1];
                p[i+1]=t;
            }
}
int main()
{
    int m,n;
    int *p,*q,*r;
    int i,j,k;
    printf("请输入要处理的第一个顺序表包含的数据个数:");
    scanf("%d",&m);
    p=(int *)malloc(sizeof(int)*m);
    printf("请输入要处理的第一个顺序表:");
    for(i=0;i<m;i++) scanf("%d",*(p+i));
    paixu(p,m);
    printf("请输入要处理的第二个顺序表包含的数据个数:");
    scanf("%d",&n);
    q=(int *)malloc(sizeof(int)*n);
    printf("请输入要处理的第二个顺序表:");
    for(i=0;i<m;i++) scanf("%d",q[i]);
    paixu(q,n);
    r=(int *)malloc(sizeof(int)*(m+n));
    for(i=0,j=0,k=0;i<m+n;i++)
    {
        if(p[j]>q[k])
        {
            r[i]=q[k];
            k++;
            if(k=n-1)
            {
                while(j!=m-1)
                {
                    r[i]=p[j];
                    i++;
                    j++;
                }
                break;
            }
        }
        else
        {
            r[i]=p[j];
            j++;
            if(j=m-1)
            {
                while(k!=n-1)
                {
                    r[i]=q[k];
                    i++;
                    k++;
                }
                break;
            }
        }
    }
}
为什么在我输入了第一个顺序表之后程序运行就结束了,说是遇到错误.请高手帮忙!
搜索更多相关主题的帖子: 顺序 数据 空格 间隔 
2008-03-21 08:50
applelik
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-3-20
收藏
得分:0 
printf("请输入要处理的第二个顺序表:");
    for(i=0;i<m;i++) scanf("%d",q[i]);

仔细看看
2008-03-21 09:26
applelik
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-3-20
收藏
得分:0 
楼主的排序也有问题,
void paixu(int *p,int n)
{
  int i,j;
  for(j=0;j<n;j++)
    for(i=0;i<n-1;i++)
      if(p[i]>p[i+1])
         {
           t=p[i];
           p[i]=p[i+1];
           p[i+1]=t;
          }
   for(i=0;i<5;i++)
     printf("%d ",p[i]);
}

}
2008-03-21 09:53
zhuyuanronaldo
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-11-29
收藏
得分:0 
不是,那改为n也不对啊
2008-03-21 22:23
快速回复:[求助]请高手帮忙看看这道题怎么错了
数据加载中...
 
   



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

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