跪求c++调试啊。要求能在vc6.0编译通过,我的程序编译已经通过,但是没达到预定效果阿

分别在a数组和b数组中放入若干个数,把两个数组中的数按由小到大的顺序归并到c数组中。
要求:(1)数组a和b的大小用动态分配内存方式确定
(2)至少调用一次子函数
#include<iostream.h>
void pow(int a,int x,int y);
void main ()
{int x1,y1,m;
cout<<" 请输入二个数:";
cin>>x1>>y1;
m=x1+y1;
pow(m,x1,y1);
}
void pow(int a,int x,int y)
{int *p1,*p2,*p3,i,j;
p1=new int[x];
cout<<"输"<<x<<"个数"<<endl;
for ( i=0;i<x;i++)
cin>>p1[i];
p2=new int[y];
cout<<"输"<<y<<"个数"<<endl;
for ( j=0;j<y;j++)
cin>>p1[j];
p3=new int[a];
for ( i=0;i<x;i++){p3[i]=p1[i];}
for ( j=0;j<y;j++){p3[j+i]=p2[j];}
for ( i=0;i<a;i++)
for ( j=i+1;j<a;j++)
{int temp;
if(p3[j]>p3[i])
{temp=p3[i];
p3[i]=p3[j];
p3[j]=temp;}
int *c;
c=new int[a];
for (int i=0;i<a;i++)
{c[i]=p3[i];}
for ( i=0;i<a;i++)
cout<<c[i]<<" ";
}
}

第1个回答  2012-07-19
你的代码只是简单的实现合并与排序,最终输出而已,所以没必要定义
int *c;
c=new int[a];

一点作用也没有,直接在排序函数中就可以实现打印
而且你申请了那么多的空间,就没想过要释放吗?
附代码:
#include<iostream.h>
void pow(int a,int x,int y);
void main ()
{
int x1,y1,m;
cout<<" 请输入二个数:";
cin>>x1>>y1;
m=x1+y1;
pow(m,x1,y1);
}
void pow(int a,int x,int y)
{
int *p1,*p2,*p3,i,j;
p1=new int[x];
cout<<"输"<<x<<"个数"<<endl;
for ( i=0;i<x;i++)
{
cin>>p1[i];
}
p2=new int[y];
cout<<"输"<<y<<"个数"<<endl;
for ( j=0;j<y;j++)
{
cin>>p2[j];
}
p3=new int[a];
for ( i=0;i<x;i++)
{
p3[i]=p1[i];
}
for ( j=0;j<y;j++)
{
p3[j+i]=p2[j];
}
for ( i=0;i<a;i++)
{
int temp;
for ( j=i+1;j<a;j++)
{
if(p3[j]<p3[i])
{
temp=p3[i];
p3[i]=p3[j];
p3[j]=temp;
}
}
cout<<p3[i]<<" ";
}
delete []p1;
delete []p2;
delete []p3;
}
第2个回答  2012-07-03
#include<iostream>
using namespace std;
void pow(int a,int x,int y);
void main ()
{int x1,y1,m;
cout<<" 请输入二个数:";
cin>>x1>>y1;
m=x1+y1;
pow(m,x1,y1);
}
void pow(int a,int x,int y)
{int *p1,*p2,*p3,i,j,temp;
p1=new int[x];
cout<<"输"<<x<<"个数"<<endl;
for ( i=0;i<x;i++)
cin>>p1[i];
p2=new int[y];
cout<<"输"<<y<<"个数"<<endl;
for ( j=0;j<y;j++)
cin>>p2[j];
p3=new int[a];
for ( i=0;i<x;i++)
{p3[i]=p1[i];}

for ( j=0;j<y;j++)
{p3[j+i]=p2[j];}

for ( i=0;i<a;i++)
{
for ( j=a-1;j>i;j--)
{
if(p3[j]<p3[j-1])
{
temp=p3[j];
p3[j]=p3[j-1];
p3[j-1]=temp;
}
}
}

int *c;
c=new int[a];
for ( i=0;i<a;i++)
{c[i]=p3[i];}
for ( i=0;i<a;i++)
cout<<c[i]<<" ";

}
(1)你给p2赋值的时候赋给p1了
(2)你的排序算法有问题本回答被提问者和网友采纳
第3个回答  2012-07-03
#include<iostream>
using namespace std;
void pow(int a,int x,int y);
void main ()
{int x1,y1,m;
cout<<" 请输入二个数:";
cin>>x1>>y1;
m=x1+y1;
pow(m,x1,y1);
}
void pow(int a,int x,int y)
{int *p1,*p2,*p3,i,j,temp;
p1=new int[x];
cout<<"输"<<x<<"个数"<<endl;
for ( i=0;i<x;i++)
cin>>p1[i];
p2=new int[y];
cout<<"输"<<y<<"个数"<<endl;
for ( j=0;j<y;j++)
cin>>p2[j];
p3=new int[a];
for ( i=0;i<x;i++)
{p3[i]=p1[i];}

for ( j=0;j<y;j++)
{p3[j+i]=p2[j];}

for ( i=0;i<a;i++)
{
for ( j=a-1;j>i;j--)
{
if(p3[j]<p3[j-1])
{
temp=p3[j];
p3[j]=p3[j-1];
p3[j-1]=temp;
}
}
}
int *c;
c=new int[a];
for ( i=0;i<a;i++)
{c[i]=p3[i];}
for ( i=0;i<a;i++)
cout<<c[i]<<" ";
}

参考资料:c++语言程序设计

...c++ 6.0 无法执行 程序编号后编译和组建都正常,但一点击执行就毫无反...
调试编译器会生成好后,DEBUG文件夹,文件夹中的EXE文件,这是你想要的运行,将可以双击它。debug文件夹中,你可能会释??放产生的,它会释放EXE文件的文件夹,。

为什么我用VC6.0软件编译正确的c++代码会发生错误?
方法3: “CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录 \\VC98\\Bin”下面,你可以到相应的路径下找到这个应用程序。因此问题可以按照以下方法解决:打开vc界面,点击VC“TOOLS(工具)”—>“Option(选择)” —>“Directories(目录)”重新设置“Excutable Fils、Include Files、L...

用vc++6.0调试c++程序 怎么看输出结果,我想看但是每次时间很短_百度...
Debug调试的结果确实是一闪而过;不过主函数末可以先加一点内容:比如“char ch;cin >> ch;”...另外不妨用执行代替调试

vc6.0c++多文件程序编译成功,运行时老是提示类成员函数定义没有,main...
.h是头文件,编译器编译步骤主要有预处理,编译,汇编,链接这些过程。其中预处理就是中有一步操作就是将源文件(.cpp)中#include包含的头文件插入到源文件(大概这个意思,说的不太准确,但大体含义是这个意思)。这些主要是编译方面的东西。所以提示没有类成员函数,估计你是没有包含头文件。

C++编程问题,代码如下,用的是VC++6.0,编译没错,结果也出来。但是结果出...
int a[2],temp; 你定义两个空间,却要输入三个数,撑爆了(数组越界访问,溢出)!改大数组就好了 int a[20],temp;

用C语言编程程序没有错误为什么结果不对
1,保存为c或c++文件 2,根据断点调试找到错误处。3,采用F10或F11单步调试找到精确的错误处。其中f10是跳过函数盗用,f11是进入函数体调试。一般是先用f10,确定函数输入输出是否正确(与自己想的一样),如不一样,则用f11进入函数体一步一步调试。4,在调试过程中,肯定得监视程序中的变量。在vc6...

使用Microsoft visual c++ 6.0编译生成的程序不能停留界面,一闪就过 ...
你这个问题就出在你的代码上了,因为代码没有让它停留的命令,你就在main主函数中加上getchar();或者system("pause");就是停留的命令,不过这个要放在你的结束前面,不要放在main结束字符为return ;就放在return前面就行。运行后,你就可以直接看你的生成程序运行结果了 ...

代码,DEV C++ 以及VC6.0 编译通过。但是运行显示内存不能为 "written...
string strData = BaseLib::removeOf(strData,"","");改成 string strData = BaseLib::removeOf(str,"","");

...的第二章垃圾回收器,但是我用VC6.0编译通过运行时却有错误...
你在运行时候尝试删除了一个已经删除的指针

vc++6.0编译后无法构建.exe程序无法运行
“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\\VC98\\Bin”下面,你可以到相应的路径下找到这个应用程序。因此问题可以按照以下方法解决:打开vc界面 点击VC“TOOLS(工具)”—>“Option(选择)”—>“Directories(目录)”重新设置“Excutable Fils、Include Files、Library Files、...

相似回答
大家正在搜