刚开始学c语言,为什么两位数和一位数混合排序时会出错,有时候准确,有时候又不准确,求指点

C语言 码拜 9年前 (2016-05-24) 1117次浏览
#include<stdio.h>
void main()
{
void sort(int number[],int n);
int i,a[5];
printf(“enter the number:\n”);
for(i=0;i<5;i++)
{
scanf(“%d”,&a[i]);
}
sort(a,5);
printf(“the sorted number:\n”);
for(i=0;i<5;i++)
{
printf(“%5d”,a[i]);
}
}
void sort(int number[],int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(number[k]>number[j]) k=j;
t=number[k];
number[k]=number[i];
number[i]=t;
}
}
}
解决方案

40

 if(number[k]>number[j]) k=j;
t=number[k];
number[k]=number[i];
number[i]=t;
这段代码有问题,if(number[k]>number[j]) k=j;后,假如后面有number[k]<=number[j]的话,就会出问题了,原因是k的值不是i了

20

void sort(int number[],int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(number[i]>number[j])
{
t=number[i];
number[i]=number[j];
number[j]=t;
}
}
}
}
改成这样就对了,记得给分哈刚开始学c语言,为什么两位数和一位数混合排序时会出错,有时候准确,有时候又不准确,求指点

20

代码功能归根结底不是别人帮本人看或讲解或注释出来的;而是被本人静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生本人领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明刚开始学c语言,为什么两位数和一位数混合排序时会出错,有时候准确,有时候又不准确,求指点
喜欢 (0)
[1034331897@qq.com]
分享 (0)