| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1310 人关注过本帖
标题:线性表的合并问题,其中判断数据的合法性难以实现
只看楼主 加入收藏
故尘
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-10-10
收藏
 问题点数:0 回复次数:5 
线性表的合并问题,其中判断数据的合法性难以实现
程序如下,请高手调试一下


/*程序人:李辉
    时间:2008年10月8日
    */
#include<stdio.h>
#include<stdlib.h>
int M,N;
int a;
void one(int a1[],int a2[],int a3[]);
void law(int e[],int f);
void Input(int u[],int g);
//主函数
void main()
{ int *arrA,*arrB,*arrC;
  int d;
  
     arrA=(int*)malloc(M*sizeof(int));
     arrB=(int*)malloc(N*sizeof(int));
     arrC=(int*)malloc((M+N)*sizeof(int));//动态分配内存

     //输入arrA中元素的个数及值
     printf("\nPlease input the num of the arrA:M=");
        scanf("%d",&M);
        
     printf("\ninput the data of arrA:\n");
     a=1;
     while(a==1)
     {  Input(arrA,M);
        law(arrA,M);
     }
     system("pause");

     //输入arrB中元素的个数及值
     printf("\nPlease input the num of the arrB:N=");
        scanf("%d",&N);
        
     printf("\ninput the data of arrB:\n");
          a=1;
     while(a==1)
     {  Input(arrB,N);
         law(arrB,N);
     }
         system("pause");
    one(arrA, arrB, arrC);
    
    //输出arrC
       printf("\narrC=\n");
       for(d=0;d<M+N;d++)
           printf("%10d",arrC[d]);
       printf("\n");
}
//整合输入的两组数据为一组新的非递减数
void one(int a1[],int a2[],int a3[])
{   int x=0,y=0;
    int k=0;
    while((x<M)&&(y<N))
       {   
          if(a1[x]<=a2[y])
              a3[k++]=a1[x++];
          else
              a3[k++]=a2[y++];
       }
    while(x<M)
           a3[k++]=a1[x++];
    while(y<N)
           a3[k++]=a2[y++];
    
}
//输入一组数据
void Input(int u[],int g)
{  int i;
     for(i=0;i<g;i++)
          scanf("%d",&u[i]);
           printf("\n");
}
//判断输入数据的合法性
void law(int e[],int f)
{   int z;
      for(z=0;z<f;z++)
      {   
          if((e[z]<=e[z+1])||(f==1))
          {   
            a=0;
          }
         else
        {   printf("\n此为非法数据!!!!!!!!!!!!\n Please input again!\n");
            a=1;
            break;
        }
           
    
      }
}
搜索更多相关主题的帖子: 线性 合法性 数据 判断 
2008-10-10 13:38
故尘
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-10-10
收藏
得分:0 
虚心求教


请给点意见


先谢过啦!!!!!
2008-10-10 15:11
伤狼
Rank: 1
等 级:新手上路
威 望:2
帖 子:58
专家分:0
注 册:2008-10-10
收藏
得分:0 
不知道 你想要问什么呢
2008-10-10 15:26
故尘
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-10-10
收藏
得分:0 
调试总是出错
又找不到到底错在哪儿
感觉是函数law()里面有问题或者是在main()中调用时出了错
2008-10-10 20:51
smltq
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:566
专家分:400
注 册:2008-1-21
收藏
得分:0 
这种问题自己单步最好发现问题所在啦。。。

简单的生活
2008-10-10 21:42
josen0205
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:307
专家分:52
注 册:2007-5-8
收藏
得分:0 
在void law(int e[],int f)函数中
if((e[z]<=e[z+1])||(f==1))数组e中有f个数,当循环到z等于f-1的时候,e[z+1]出界了,所以应该是for(z=0; z < f-1; z++),另外还有一点,就是你程序的三个数组都是动态分配内存的,然后你main函数的最后没有释放分配的内存,造成内存泄露。当然你这个是小程序,结束了之后操作系统自动会收回其内存,但是应该还是要注意。

只有想不到,没有做不到
2008-10-10 22:20
快速回复:线性表的合并问题,其中判断数据的合法性难以实现
数据加载中...
 
   



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

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