图1第十几行代码看不清,希望题主把图发得更详细一点。
不过根据代码中 Input 函数来看,题主输入一个数据到num[i]和score[i]数组时,之后进行了i自加,即i指向了数组的下一个元素的位置,而此时的num[i]和score[i]里是还没有输入数据的,拿此时的score[i]来判断是否大于0显然是错误的。这应该是无法跳出循环的原因
题主将while语句里改成score[i-1] >=0应该就能解决问题了
#include<iostream>
using namespace std;
int partition(int a[],int low,int high)
{
int pivotkey=a[low];
int i=low,j=high+1;
while(i<j)
{
do { i++; } while(i<=high && a[i]<pivotkey);// && i<=high);
do { j--; } while(j>=low && a[j]>pivotkey);// && j>=low);
swap(a[i],a[j]);
}
swap(a[i],a[j]);
swap(a[low],a[j]);
return j;
}
void quicksort(int a[],int low,int high)
{
if(low<high)
{
int pivotloc=partition(a,low,high);
quicksort(a,low,pivotloc-1);
quicksort(a,pivotloc+1,high);
}
}
void main()
{
int i,x,a; //申请一个指针变量存放动态数组
//cin>>n;
a=new int[11]; //申请长度为11的动态数组
for(i=0;i<10;i++)
cin>>a[i];
quicksort(a,0,9);
for( i=0;i<10;i++)
cout<<a[i]<<'\t'; //插入前,输出排序后的数组
cout<<"\n\n";
cin>>x;
if(x<=a[0]) //如果插入的元素比数组的第一个元素还要小,则先输出X,再输出原来的数组
{
cout<<x<<" ";
for(int i=0;i<10;i++)
cout<<a[i]<<'\t';
cout<<endl;
}
if(x>=a[9]) //如果插入的元素比数组的最大的元素还要大,则先输出数组,再输出X
{
for(i=0;i<10;i++)
cout<<a[i]<<'\t';
cout<<x<<endl;
}
if((x>a[0])&&(x<a[9])) //如果插入的元素处于数组中的某一个位置,则从后往回找,一边比 较,元素比X大的往后移动一个位置,直到
{ //找到比X小的a[j],就停止比较和移动,把X放在a[j+1]的地方
int j;
for( j=10;j>0;j--)
{
if(x<a[j])
a[j+1]=a[j]; //往后移动
else
a[j+1]=x; //插入
}
for( i=0;i<11;i++)
cout<<a[i]<<'\t'; //输出数组
cout<<endl;
}
}
#include <stdioh>void main( )
{
double a[10],max,min;//输入几个数可以自己决定。
int i;
for(i=0;i<10;i++)
scanf("%lf",&a[i]);
max=min=a[0];
for(i=1;i<10;i++)
{
if(max<a[i]) max=a[i];
if(min>a[i]) min=a[i];
}
printf("max=%lf,min=%lf\n",max,min);
}
以上就是关于C语言数组,函数程序问题全部的内容,包括:C语言数组,函数程序问题、c++用数组编程一下程序、编写一个计算一个数组中所有元素之和的c++程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)