求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;
} 展开
#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;
} 展开
3个回答
展开全部
你的数组在初始化地方没有加封号。动态分配可以用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;
}
排序的地方貌似赋值反了
分配空间是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;
}
}
}
排序貌似有问题,我再想想
展开全部
#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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询