求c++大神,输入一个数自定义数组大小,出现错误求帮忙改写,用动态分配内存空间!!程序如下,

#include<iostream.h>#include<stdio.h>voidmain(){intN;cout<<"pleaseinputN:"<<endl<<"N=... #include<iostream.h>
#include<stdio.h>
void main()
{
int N;
cout<<"please input N:"<<endl<<"N=";
cin>>N;
cout<<endl<<"please input a[N]:"<<endl<<"a[N]=";
int *p;
int i,k,m,j,t,a[];
p=a;
p=(int a[N]*)malloc(sizeof(int a[N]))
for(i=0;i<N;i++)
{
cin>>p[i];
}
cout<<endl<<"please input k,m:"<<endl<<"k=";
cin>>k;
cout<<'\t'<<"m=";
cin>>m;
for(i=k;i<k+m;i++)
{
for(j=k+i;j<k+m;j++)
{
if(p[i]<p[j])
{
p[i]=t;
p[i]=a[j];
p[j]=t;
}
}
}
cout<<endl;
for(i=0;i<N;i++)
{
cout<<p[i]<<' ';
}
free(p);
cout<<endl;

}
展开
 我来答
度娘算你狠555
2014-05-25 · TA获得超过300个赞
知道小有建树答主
回答量:136
采纳率:100%
帮助的人:119万
展开全部
你的数组在初始化地方没有加封号。动态分配可以用malloc,也可以用new
排序的地方貌似赋值反了
分配空间是p=(int *)malloc(sizeof(int)*N),计算分配空间(int类型*个数)
a[]数组没有存在必要,直接用p就可以(指针指向数组)
#include<iostream>
#include<stdio.h>
#include <stdlib.h>
using namespace std;
void main()
{
int N;
cout<<"please input N:"<<endl<<"N=";
cin>>N;
cout<<endl<<"please input a[N]:"<<endl<<"a[N]=";
int *p;
int i,k,m,j,t;
p=(int *)malloc(sizeof(int)*N);
for(i=0;i<N;i++)
{
cin>>p[i];
}
cout<<endl<<"please input k,m:"<<endl<<"k=";
cin>>k;
cout<<'\t'<<"m=";
cin>>m;
for(i=k;i<k+m;i++)
{
for(j=k+i;j<k+m;j++)
{
if(p[i]<p[j])
{
t=p[i];
p[i]=p[j];
p[j]=t;
}
}
}
cout<<endl;
for(i=0;i<N;i++)
{
cout<<p[i]<<' ';
}
free(p);
cout<<endl;
}
更多追问追答
追问

您这个最后没有交换数据。。。求帮助。。。

追答
for(j=k;j<k+m;j++) 
{
for(i=k;i<N-k-m;i++)
{
if (p[i]<p[i+1])
{
t=p[i];
p[i]=p[i+1];
p[i+1]=t;
}

}
}
排序貌似有问题,我再想想
lhy137910144
2014-05-25 · TA获得超过115个赞
知道答主
回答量:48
采纳率:0%
帮助的人:26.6万
展开全部
#include<iostream>
using namespace std;
int main()
{
int N;
cout<<"please input N:"<<endl<<"N=";
cin>>N;
cout<<endl<<"please input a[N]:"<<endl;
int *p;
int i,k,m,j,t,*a;
p=a;
p=(int *)malloc(N*sizeof(int));
for(i=0; i<N; i++)
{
cout<<"a["<<i<<"]=";
cin>>p[i];
}
cout<<endl<<"please input k,m:"<<endl<<"k=";
cin>>k;
cout<<'\t'<<"m=";
cin>>m;
for(i=k;i<k+m;i++)
{
for(j=k+i;j<k+m;j++)
{
if(p[i]<p[j])
{
p[i]=t;
p[i]=a[j];
p[j]=t;
}
}
}
cout<<endl;
for(i=0;i<N;i++)
{
cout<<p[i]<<' ';
}
free(p);
cout<<endl;

}
追问

这个好像达不到最终目的。。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阔气克克
2014-05-25 · TA获得超过485个赞
知道小有建树答主
回答量:527
采纳率:0%
帮助的人:473万
展开全部
如果你的数组指针是p,我只能告诉你正确的分配空间的方法是:
p=(int *)malloc(N*sizeof(int));

其他的地方我真的没法帮你了,不知道你的程序都要干什么。。。。
更多追问追答
追问

其实主要问题就是不会动态定义数组大小

追答
分配空间就是我上面那句话了,楼下那位也把程序给你改好了。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式