c语言冒泡排序问题!请高手解决

2025-03-24 23:00:30
推荐回答(6个)
回答1:

#include
int main(void)
{
int a[5],i,j,temp;
printf("please input 5 numbers!\n");
scanf("%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4]); /*输入5个数字*/
for(i=0;i<5;i++) printf("%d ",a[i]); /*输出输入的数字*/
printf("\n");
for(i=0;i<4;i++) /*每轮排好一个数字,需要执行四轮*/
for(j=0;j<4-i;j++) /*每一轮比较4-i次*/
if(a[j]>a[j+1]){ /*前面的数字大则交换位置*/
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
for(i=0;i<5;i++) printf("%d ",a[i]); /*输出排好的数字*/
printf("\n");
return 0;
}

回答2:

#include

void maopao(int*); //函数声明
int main()
{
int pa[5]; //数组
int i; //循环索引
printf("输入5个数字:");
for(i=0;i<5;i++)
scanf("%d",&pa[i]); //从键盘读入5个数字
printf("\n排序前:");
for(i=0;i<5;i++)
printf("%d\t",pa[i]); //排序前输出一次
printf("\n排序后:");
maopao(pa); //调用排序函数
for(i=0;i<5;i++)
printf("%d\t",pa[i]); //循环输出排序后的数组
printf("\n"); //换行
return 0;
}
void maopao(int *p)
{
for(int i=0;i<5;i++) //外循环,数组每个值都取一次
for(int j=i+1;j<5;j++) //内循环,j的值从比i的值大1开始取,直到数组末尾
{
int temp;
if(p[i]>p[j]) //按小从到大排序,所以如果p[i]大于p[j]的话,交换他们的值
{
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
}
}

回答3:

#include

#include

int main(int argc, char *argv[])

{

int i,n,x,b;

printf("你要输入几个数字?");

scanf("%d",&b);

int a[b];

printf("请输入这几个数字:\n");

for(i=0;i
for(i=0;i
{

for(n=0;n
{

if(a[n]>a[n+1])

{

x=a[n];

a[n]=a[n+1];

a[n+1]=x;

}

}

}

for(i=0;i
system("PAUSE");

return 0;

}
这就是冒泡程序了。可以输入任意多个数字

回答4:

#include
mian()
{
int i ,j,b,t;
int a[5];
for(i=1;i<=5;i++)
{
printf("请输入第%d个数",i); //屏幕提示用户输入数字
scanf(" %d",&b);
a[i-1] = b;
printf("%4d\n",a[i-1]); //输出排序前的第i个数
}
for(i=0;i<5;i++) //双层循环进行冒泡排序
{
for(j=0;j<5-i;j++)
{
if(a[j]>a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
for(i=0;i<5;i++) //循环输出排好序的5个数
printf("%4d",a[i]);
return 0;
}

回答5:

也可以用函数实现,用数组作为形参,但是这里我这里没这么写,你看看吧。
#include
#define N 5
main(){
int a[N];//定义一个整形数组,存放待排序的几个数字。
int i,j;
printf("请输入5个数字用于排序:\n");
for(i=0;i scanf("%d",&a[i]);
}
printf("排序之前的数字是:\n");
for(i=0;i printf("%d\t",a[i]);
}
for(i=0;i for(j=0;j if(a[j]>a[j+1]){//如果前面的数大于后面的就进行交换,把大的往后面移
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
else
break;
}
}
printf("\n排序之后的数是\n:");
for(i=0;i printf("%d\t",a[i]);
}
}

回答6:

#include
void main()
{
int inData[5];
printf("请依次输入5个数字:\n");
//输入数字
for(int x=0;x<5;x++)
{
scanf("%d",&inData[x]);
}
//输出排序前数字
printf("排序前:\n");
for(int x=0;x<5;x++)
{
printf("%d ",inData[x]);
}
//从大到小排序
for(int i=0;i<5;i++)
{
for(int j=4;j>i;j--)
{
if(inData[j]>inData[j-1])
{
int temp=inData[j];
inData[j]=inData[j-1];
inData[j-1]=temp;
}
}
}
//排序后
printf("排序后:\n");
for(int x=0;x<5;x++)
{
printf("%d ",inData[x]);
}

}