插入排序中,把数组元素赋值给整形
1 #include "iostream"2 using namespace std;
3 int main()
4 {
5 int quote;
6 int a=0;
7 for(int i=0;i<20;i++)
8
9
10 {
11
12 if(cin>>quote)
13 a++;
14 else
15 {
16 cin.clear();
17 cin.sync();
18 break;
19 }}
20 for(int j=1;j<a;j++)
21 {
22 int key;
23 key=quote;
24 int i=j-1;
25 while(i>0&"e>key){
26 quote=quote;
27 i-=1;
28 }
29 quote=key;
30 }
31 int i=0;
32 while(i<=a){
33 cout<<quote<<endl;
34 i++;
35 }
36
37 }
求大神帮我看一下这段代码,是一段简单的插入排序问题。
问题出在23行给key赋值上,给key的第一次赋值总是出错,在调试中确认了quote数组元素正确,j值正确,但是int key=quote却赋出来一个溢出值(大概是4196592 #include "iostream"
using namespace std;
int main()
{
int quote;
int a=0;
for(int i=0;i<20;i++)
{
if(cin>>quote)
a++;
else
{
cin.clear();
cin.sync();
break;
}}
for(int j=1;j<a;j++)
{
int key;
key=quote;
int i=j-1;
while(i>0&"e>key){
quote=quote;
i-=1;
}
quote=key;
}
int i=0;
while(i<=a){
cout<<quote<<endl;
i++;
}
}
更正一下代码,这段没有序号 #include <iostream>
using namespace std;
int main()
{
int quote;
int a=0;
for(int i=0;i<4;i++)
{
if(cin>>quote)
a++;
else
{
cin.clear();
cin.sync();
break;
}
}
for(int j=1;j<a;j++)
{
int key;
key=quote;
int i=j-1;
while(i>=0&"e>key){
quote=quote;
i-=1;
}
quote=key;
}
printf("a = %d\n", a);
int i=0;
while(i < a){
cout<<quote<<" ";
i++;
}
getchar();getchar();
return 0;
}
//ai = {1,2,3...,8,9,10}; iStart=0, iEnd=10;
void vInsertionSort(int ai[], int iStart, int iEnd)
{
int i = 0;
int j = 0;
int iTemp = 0;
for (i=iStart+1; i<iEnd; i++)
{
for (j=i; j>iStart; j--)
{
if(ai < ai)
{
iTemp = ai;
ai = ai;
ai = iTemp;
}
}
}
} #include <iostream>
using namespace std;
int main()
{
int quote;
int a=0;
for(int i=0;i<20;i++)
{
if(cin>>quote)
a++;
else
{
cin.clear();
cin.sync();
break;
}
}
for(int j=0;j<a;j++)
{
int key;
key=quote;
int i=j-1;
while(i>0 && quote>key)
{
quote=quote;
i-=1;
}
quote=key;
}
int i=0;
while(i<a)
{
cout<<quote<<endl;
i++;
}
return 0;
}
上面发的有点问题,这下应该没问题了。可以复制运行一下。#include <iostream>
using namespace std;
int main()
{
int quote;
int a=0;
for(int i=0;i<20;i++)
{
if(cin>>quote)
a++;
else
{
cin.clear();
cin.sync();
break;
}
}
for(int j=0;j<a;j++)
{
int key;
key=quote;
int i=j-1;
while(i>=0 && quote>key)
{
quote=quote;
i-=1;
}
quote=key;
}
int i=0;
while(i<a)
{
cout<<quote<<endl;
i++;
}
return 0;
}
mdgsf 发表于 2016-8-21 17:49
我想知道为什么第一步时把quote赋给key时会出错? 已解决,谢谢{:10_250:} 学习一下
页:
[1]