c++ 有一个已排好序的数组,今输入一个数,要求按原来排序方式将它插入数
#include<iostream>usingnamespacestd;intmain(){inta[10],n,i;cout<<"输入一个数组"<<endl;for(i...
#include<iostream>
using namespace std;
int main()
{
int a[10],n,i;
cout<<"输入一个数组"<<endl;
for(int k=0;k<=6;k++)
cin>>a[k];
cout<<"输入一个数"<<endl;
cin>>n;
int m=0;
for(int q=0;a[q]!='\0';q++) //测试出数组第几位是'\0'
m++;
for(int s=0;a[s]!='\0';s++) //测试出n应该插入在第几位
{
if(a[s]>n)
{int i=s;break;}
}
for(int p=m;p>=i+1;p--) //n位以后,依次移动
a[p]=a[p-1];
a[i]=n;
a[m+1]='\0';
for(int r=0;a[r]!='\0';r++)
cout<<a[r];
return 0;
}
运行后结果出错了,哪位高手帮忙看看哪错了,谢谢!!! 展开
using namespace std;
int main()
{
int a[10],n,i;
cout<<"输入一个数组"<<endl;
for(int k=0;k<=6;k++)
cin>>a[k];
cout<<"输入一个数"<<endl;
cin>>n;
int m=0;
for(int q=0;a[q]!='\0';q++) //测试出数组第几位是'\0'
m++;
for(int s=0;a[s]!='\0';s++) //测试出n应该插入在第几位
{
if(a[s]>n)
{int i=s;break;}
}
for(int p=m;p>=i+1;p--) //n位以后,依次移动
a[p]=a[p-1];
a[i]=n;
a[m+1]='\0';
for(int r=0;a[r]!='\0';r++)
cout<<a[r];
return 0;
}
运行后结果出错了,哪位高手帮忙看看哪错了,谢谢!!! 展开
3个回答
展开全部
#include<iostream>
using namespace std;
int main()
{
int a[10],n,i;
cout<<"输入一个数组"<<endl;
for(int k=0;k<=6;k++)
cin>>a[k];
cout<<"输入一个数"<<endl;
cin>>n;
int m=0;
for(int q=0;a[q]!='\0';q++) //测试出数组第几位是'\0'
m++;/*超出数组长度的部分取随机值,请问m加到什么时候能测试到0?*/
for(int s=0;a[s]!='\0';s++) //测试出n应该插入在第几位
{//上面那行程序的!='\0'达不到你所要的效果
if(a[s]>n)
{ i=s;break;}//这里不要重复定义
}
for(int p=m;p>=i+1;p--) //n位以后,依次移动
a[p]=a[p-1];
a[i]=n;
a[m+1]='\0';
for(int r=0;r<8;r++)/*这里请不要用a[r]!='\0',因为只有字符型数组末尾才存在元素'\0'。对于数字型,没有定义的域(即越界的元素)为随机数,而你那个m什么时候随机到0值谁知道?因此,请把前面的a什么!='\0'都改掉。由于你这个程序元素个数是定值,你简单运用r<常数 就行了*/
cout<<a[r]<<'\t';
return 0;
}
此外,你的程序题目有点问题,你的程序功能是只是按照大小关系找插入位置,而你的题目是“按照原来的排序方式”,原来的排序方式取决于用户输入数字的顺序,明显程序没有实现那个功能。
using namespace std;
int main()
{
int a[10],n,i;
cout<<"输入一个数组"<<endl;
for(int k=0;k<=6;k++)
cin>>a[k];
cout<<"输入一个数"<<endl;
cin>>n;
int m=0;
for(int q=0;a[q]!='\0';q++) //测试出数组第几位是'\0'
m++;/*超出数组长度的部分取随机值,请问m加到什么时候能测试到0?*/
for(int s=0;a[s]!='\0';s++) //测试出n应该插入在第几位
{//上面那行程序的!='\0'达不到你所要的效果
if(a[s]>n)
{ i=s;break;}//这里不要重复定义
}
for(int p=m;p>=i+1;p--) //n位以后,依次移动
a[p]=a[p-1];
a[i]=n;
a[m+1]='\0';
for(int r=0;r<8;r++)/*这里请不要用a[r]!='\0',因为只有字符型数组末尾才存在元素'\0'。对于数字型,没有定义的域(即越界的元素)为随机数,而你那个m什么时候随机到0值谁知道?因此,请把前面的a什么!='\0'都改掉。由于你这个程序元素个数是定值,你简单运用r<常数 就行了*/
cout<<a[r]<<'\t';
return 0;
}
此外,你的程序题目有点问题,你的程序功能是只是按照大小关系找插入位置,而你的题目是“按照原来的排序方式”,原来的排序方式取决于用户输入数字的顺序,明显程序没有实现那个功能。
展开全部
for(int s=0;a[s]!='\0';s++) //测试出n应该插入在第几位
{
if(a[s]>n)
{int i=s;break;}
}
上面这里面有问题,在前面已经定义了一个变量i ,在这段语句中又定义了变量i,“{int i=s;break;}”中变量i根据变量作用范围,只在该括号内起作用,
而在下面语句中的i,则是上面第一个变量i,在计算过程中,其数值没有变化,因此会出错。
将 {int i=s;break;} 改为{i=s;break;} 即可。
{
if(a[s]>n)
{int i=s;break;}
}
上面这里面有问题,在前面已经定义了一个变量i ,在这段语句中又定义了变量i,“{int i=s;break;}”中变量i根据变量作用范围,只在该括号内起作用,
而在下面语句中的i,则是上面第一个变量i,在计算过程中,其数值没有变化,因此会出错。
将 {int i=s;break;} 改为{i=s;break;} 即可。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream>
using namespace std;
int main()
{
int a[10],n,i;
cout<<"输入一个数组"<<endl;
for(int k=0;k<=6;k++)
cin>>a[k];
a[k]='\0'; //此处更改
cout<<"输入一个数"<<endl;
cin>>n;
int m=0;
for(int q=0;a[q]!='\0';q++) //测试出数组第几位是'\0'
m++;
for(int s=0;a[s]!='\0';s++) //测试出n应该插入在第几位
{
if(a[s]>n)
{i=s;break;} //此处更改
}
for(int p=m;p>=i+1;p--) //n位以后,依次移动
a[p]=a[p-1];
a[i]=n;
a[m+1]='\0';
for(int r=0;a[r]!='\0';r++)
cout<<a[r];
return 0;
}
using namespace std;
int main()
{
int a[10],n,i;
cout<<"输入一个数组"<<endl;
for(int k=0;k<=6;k++)
cin>>a[k];
a[k]='\0'; //此处更改
cout<<"输入一个数"<<endl;
cin>>n;
int m=0;
for(int q=0;a[q]!='\0';q++) //测试出数组第几位是'\0'
m++;
for(int s=0;a[s]!='\0';s++) //测试出n应该插入在第几位
{
if(a[s]>n)
{i=s;break;} //此处更改
}
for(int p=m;p>=i+1;p--) //n位以后,依次移动
a[p]=a[p-1];
a[i]=n;
a[m+1]='\0';
for(int r=0;a[r]!='\0';r++)
cout<<a[r];
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询