改正c++程序很简单

来源:百度知道 编辑:UC知道 时间:2024/05/24 20:10:00
用冒泡排序 请指出错误 写出程序 谢谢

#include<stdio.h>
void f(char a[10])
{int n,m;char t;
for(n=0;n<9;n++)
for(m=0;m<10-n;m++)
{if(a[m]>a[m+1])
t=a[m];a[m]=a[m+1];a[m+1]=t;}}
void main()
{char a[10];
printf("请输入一个字符串:\n");
gets(a);
f(a);
puts(a);
}

void f(char a[10])
{
int n,m;
char t;
for(n=0;n<9;n++)
{
for(m=0;m<10-n-1;m++)

if(a[m]>a[m+1])
{
t=a[m];
a[m]=a[m+1];
a[m+1]=t;
}
}
}
int main()
{
char a[10];
printf("请输入一个字符串:\n");
gets(a);
puts(a);
f(a);
puts(a);

system("pause");
return 0;
}
你的这个程序必须得输入十个数 不然就会越界产生乱码
冒泡法排序(升序)

基本思想:(将相邻两个数比较,小的调到前头)
1)有n个数(存放在数组a(n)中),第一趟将每相邻两个数比较,小的调到前头,经n-1次两两相邻比较后,最大的数已“沉底”,放在最后一个位置,小数上升“浮起”;
2)第二趟对余下的n-1个数(最大的数已“沉底”)按上法比较,经n-2次两两相邻比较后得次大的数;
3)依次类推,n个数共进行n-1趟比较,在第j趟中要进行n-j次两两比较。
程序段如下
void main()
{ int a[10];
int i,j,t;
printf("input 10 numbers\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<=8;j++)
for(i=0;i<