C语言,用冒泡排序实现10个数字由小到大输出,为什么我弄出来是乱码

作者&投稿:锁高 (若有异议请与网页底部的电邮联系)
输入10个数,用冒泡排序法按由小到大顺序排序并输出??c语言的~

冒泡排序的程序代码如下:
#include
int main()
{
int a[10]={0};
int i=0,j=0,t=0;
for(i=0;i<10;i++)
{scanf("%d",&a[i]);}
for(i=0;i<10;i++)
{for(j=0;j<10-i;j++){
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}}}
for(i=0;i<10;i++)
{printf("%d ",a[i]);}
return 0;}
任意输入十个数据,程序运行结果:

扩展资料:
冒泡排序算法的原理如下:
1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3、针对所有的元素重复以上的步骤,除了最后一个。
4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

1、新建一个工程和.c文件。

2、定义变量类型。

3、用一个for语句遍历整个数组。

4、引入一个子函数,该子函数的作用是调整数组元素的顺序,使之由小到大排列。

5、最后通过for函数一次输出调整后的数组元素。

6、介绍一下子函数的实现语句,首先定义子函数。

7、定义变量类型。

8、该子函数实现顺序的调整。

9、编译,执行即可。

void make(int b[10])

{

   int j,k,m;

   for(j=0;j<=9;j++)

   {

     for(k=0;k<9-j;k++)

     if(b[k]>b[k+1])

{

      m=b[k];

      b[k]=b[k+1];

      b[k+1]=m;

}

   }

}


整体的

#include <stdio.h>

//void in(int a[10])

//{

 //int i;

 //   for(i=0;i<10;i++)

 //   {

// scanf("%d",&a[i]);

 //     //  return a[i];

// }

   

//}

void make(int b[10])

{

   int j,k,m;

   for(j=0;j<=9;j++)

   {

     for(k=0;k<9-j;k++)

     if(b[k]>b[k+1])

{

      m=b[k];

      b[k]=b[k+1];

      b[k+1]=m;

}

   }


}

void out(int c[10])

{

   int j;

   for(j=0;j<10;j++)

   printf("%3d",c[j]);

  // return c[10];

}

int main()

{

int i;

int a[10];

    for(i=0;i<10;i++)

    {

scanf("%d",&a[i]);

      //  return a[i];

}

  //int d[10];

  //in(d);

  make(a);

  out(a);

  return 0;

}



int make(int b[10])
{
int j,k,m;
for(j=0;j<=9;j++)
{
for(k=0;k<=9-j;k++)
if(b[k]<b[k-1])
{
m=b[k];
b[k]=b[k-1];
b[k-1]=m;
}
}
return b[10];
}

make函数改一下




#include <stdio.h>
int in(int a[10])
{
int i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
return a[10];
}
int make(int b[10])
{
int j,k,m;
for(j=0;j<9;j++)
{
for(k=0;k<9-j;k++)
//这个循环体跟循环变量没有关系,只跟 j有关,只是调换相邻两个,并不是针对整体而言的
if(b[j]<b[j-1])
{
m=b[j];
b[j]=b[j-1];
b[j-1]=m;
}
}
return b[10];
}
int out(int c[10])
{
int j;
for(j=0;j<10;j++)
printf("%2d",c[j]);
return c[10];
}
int main()
{
int d[10];
in(d);
make(d);
out(d);
return 0;
}

而且在被调函数中你return a[10]是什么意思,其实这已经越界访问了



int make(int b[10])
{
int j,k,m;
for(j=0;j<9;j++)
{
for (k = 0; k < 9-j;k ++)
if(b[k]>b[k+1])
{
m=b[k];
b[k]=b[k+1];
b[k+1]=m;
}
}
return 0;
}
//冒泡的代码需要改一下,
//还有建议 所有地方 都 return 0;


用C语言编程:从键盘输入10个学生的成绩,由高到低排序输出成绩
答:你好,我们这里需要用到数组镶套使用for函数以及冒泡算法,具体的代码如下。include <iostream> using namespace std;int main(){ int s [10], i, j, t;cout << "输入10个数:";for (i = 0; i < 10; i++){ cout << "请输入第" << i+1 << "名学生的成绩;" << endl;cin >...

C语言题:输入十个数用一维数组分别用冒泡法与选择排序法进行排序
答:include <stdio.h>#include <conio.h>#define ARR_LEN 255 /*数组长度上限*/#define elemType int /*元素类型*//* 冒泡排序 *//* 1. 从当前元素起,向后依次比较每一对相邻元素,若逆序则交换 *//* 2. 对所有元素均重复以上步骤,直至最后一个元素 *//* elemType arr[]: 排序目标数组;...

C语言 从键盘上输入10个整数保存在数组中,用冒泡法排序将其按降序
答:include <stdio.h>int main (){ int num[10],i,j,nSave; printf("输入10个数:"); for(i=0;i<10;i++) scanf("%d",&num[i]); printf("原数组:"); for(i=0;i<10;i++) printf("%d ",num[i]); printf("\n"); for(i=0;i<10;i++)//...

用冒泡排序法对输入的10个数进行升序排序 并存入数组中
答:1、打开sublime text 3,点击左上方的“文件”,选择“新建文件”,新建一个后缀名为.html的文件,并命名标题。2、在Body中添加一个简单的input按钮,添加一个点击事件mymaopao,用来在浏览器中查看效果。3、定义两个变量i,j。使用两个for循环嵌套遍历数组,第一个i作用为循环次数,第二个j作用是...

C语言冒泡法排序:任意输入十个数排序(从小到大;从大到小)
答:从大到小:include<stdio.h> define N 10 void main(){ int i,j;float a[N],t;printf("排序前:\n");for(i=0;i<N;i++){ scanf("%d",&a[i]);} for(i=0;i<N;i++){ printf("%6.1f",a[i]);} printf("\n");for(i=0;i<N-1;i++){ for(j=0;j<N-i-1;j++...

C语言问题:从键盘输入十个数,用冒泡对输入的数据从小到大的顺序进行排序...
答:include "stdio.h"int main(){int a[10],b;int i,j;for (i = 0; i < 10; i++){printf("输入第%d个数字:",i+1);scanf("%d", &a[i]);getchar();}//冒泡排序for (i = 0; i < 10 - 1; i++){for (j = 0; j < 10-i - 1; j++){if (a[j]>a[j + 1])...

用冒泡排序法对10个字符串排序,并按从小到大的顺序输出.需要用c语言...
答:include "stdio.h"#include "string.h"int main(){ char co[10][20]={0}; char *p[10]={NULL},*tmp=NULL; int i,j; for(i=0;i<10;i++) p[i]=co[i]; printf("请输入10个字符串:\n"); for(i=0;i<10;i++) gets(co[i]); for(i=0;i<...

C语言题目: 用冒泡法对任意输入的10个整数由小到大的顺序排序
答:1、新建一个工程和.c文件。2、定义变量类型。3、用一个for语句遍历整个数组。4、引入一个子函数,该子函数的作用是调整数组元素的顺序,使之由小到大排列。5、最后通过for函数一次输出调整后的数组元素。6、介绍一下子函数的实现语句,首先定义子函数。7、定义变量类型。8、该子函数实现顺序的调整。...

c语言。 输入10个数 利用冒泡法排序 输出排序结果 使用符号常量表示数 ...
答://希望我的回答对你的学习有帮助#include <stdio.h>#define N 10//符号常量int main(){int a[N];for (int i = 0; i < N; i++){scanf("%d", &a[i]);}for (int i = 0; i < N - 1; i++){for (int j = 0; j < N - i - 1; j++){int temp;if (a[j] > ...

求c语言冒泡法排序十个数
答:include<stdio.h> int main(void){ int i,j,k,len,temp;int arr[] = {22,1,3,5,9,8,677,123,10};len = sizeof(arr)/sizeof(int);//取得数组长度,因为sizeof(arr)代表了整个int型空间个数的长度,所以除sizeof(int)就能得到元素个数 for(i=1;i<len;++i)//外循环=比较的轮数...