c语言排大小
❶ c语言排列大小
#include"stdio.h"
#include"stdlib.h"//使用malloc函数必须的头文件
intmain()
{
inti=0,j=0,k=0;
intn,m;
int*a,*b;//动态数组应该定义为指针
scanf("%d",&n);//输入格式中去掉
a=(int*)malloc(n*sizeof(int));//然后由malloc函数根据输入的n分配空间
b=(int*)malloc(n*sizeof(int));
m=n-1;
for(k=0;k<=m;k++)
{
scanf("%d",&a[k]);//输入格式中去掉
}
for(k=0;k<=m;k++)//范围是到k<=m,原来少一个元素所以最后有个0
b[k]=0;
for(k=0;k<=m;k++)//范围是到k<=m,原来少一个元素所以最后有个0
{
i=0;
j=0;
do
{
if(b[j]<=a[k])
{
for(i=m;i>j;i--)
{
b[i]=b[i-1];
}
b[j]=a[k];
break;
}
else
j=j+1;
}
while(j<=m);
}
for(k=0;k<=m;k++)
printf("%d ",b[k]);
return0;
}
可以拷贝试验,已验证结果正确
❷ C语言比较大小排序问题
#define N 10//宏定义,用N代替10
#include "stdio.h"//标准输入输出库,你在控制台输入数据和显示数据用的
main()//主函数
{
int a[N],i,j,temp;//声明需要排序的数组a和排序用的的一些“小工具”,i、j、temp
printf("请输入%d个整数:\n",N);
for(i=0;i<N;i++)//这个循环是和用户交互,手动输入10个数理组成数组
scanf("%d",&a[i]);
for(i=0;i<N-1-i;i++)//i从前往后数
for(j=0;j<N-1-i;j++)//在每一个i(比如0,比如1)下从前往后数j
if(a[j]>a[j+1])//如果j比他后边的大,交换
{temp=a[j];a[j]=a[j+1];a[j+1]=temp;}//两数前后互换
//上边这个循环就是从前往后数a的元素,比如到a[0],那么最大的数移到最后一位;在比如a[1],倒数第二大的数移到倒数第二位(因为最大的在后边,你移步过去了?)
//为什么要走这么多次。每次j的循环都好比一个波浪,一次只能保证一个最大数到了最后一位,其他的可能还是乱序,所以要一浪接一浪。
//这个算法的巧妙之处在于,i只走一半,也就是i从0到4,而j每次也不用到最后一位(j<N-1-i),因为最后那i+1位已经排好了
//比较次数,i=0时9次,i=1时8次,i=2时7次,i=3时6次,i=4时5次,一共35次
printf("排序之后的数据序列:\n");
for(i=0;i<N;i++)//把排序后的数列显示出来,%5d代表每一个数占5位,就是排列的整齐点。
printf("%5d",a[i]);
printf("\n");
}
#include"stdio.h"
#define N 10
main()
{
int a[N],i,j,r,temp;
printf("请输入%d个整数:\n",N);
for(i=0;i<N;i++)
scanf ("%d",&a[i]);
for(i=0;i<N-1;i++)//用i遍历数组a。
{r=i;//局部的r值,i从0到8每次不同,r也不同。
for(j=i+1;j<N;j++)//j是从i当前的值一直到最后(前一种排序时每次j的结尾位置不同,到9,到8.到7。)
if(a[j]<a[r])r=j;//用r标记最小的一个值,
if(r!=i)//如果这个最小的值不是a[i],对换,让i所在值变成最小,意思是a[0]最小,a[1]第二小,以此类推
{temp=a[r];a[r]=a[i];a[i]=temp;}
}
printf("排序之后的数据序列:\n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("\n");
//i=0,j循环9次;i=1,j循环8次。。。。一共45次
}
我把函数改了,这样可以测试,你去跑一下就明白过程了
#include"stdio.h"
#define N 10
main()
{
int count = 0;
int a[N],i,j,r,temp;
printf("请输入%d个整数:\n",N);
for(i=0;i<N;i++)
scanf ("%d",&a[i]);
for(i=0;i<N-1;i++)
{r=i;
for(j=i+1;j<N;j++){
if(a[j]<a[r])r=j;
count++;
printf("i:%d\tj:%d\tcount:%d\n",i,j,count);
}
if(r!=i)
{temp=a[r];a[r]=a[i];a[i]=temp;}
}
printf("排序之后的数据序列:\n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("\n%d\n",count);
}
❸ C语言排大小问题
第一个if之后,得到的是 a<b
第二个if之后,得到的是 a<c
第三个if之后,得到的是 b<c
所以是 a<b<c 你的是从小到大了
解释第一个if
如果a>b,则a b互换,所以最后得到a<b
其它同理
❹ C语言中要把三个数从大到小排列出来应该怎么编
初学简单版本代码如下:
#include<stdio.h>
int main( )
{
int a, b, c;//定义三个数的变量
int t ;//定义作为交换的变量
scanf ( "%d%d%d" , &a, &b, &c ) ; //取值
if ( a < b )
{t = a; a = b; b = t ;};//如果a,b,进行交换,反之不动
if ( a < c )
{t = a; a = c; c = t ;};//同上
if ( b < c )
{t = b; b = c; c = t ;};
printf( "%-5d%-5d%-5d " , a, b, c);//输出
}
(4)c语言排大小扩展阅读:
C语言中其他多个数排序的方法:
1、冒泡排序法
#include <stdio.h>
#define SIZE 8
void bubble_sort(int a[], int n);
void bubble_sort(int a[], int n)
{
int i, j, temp;
for (j = 0; j < n - 1; j++)
for (i = 0; i < n - 1 - j; i++)
{
if(a[i] > a[i + 1])
{
temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
} } }
int main()
{
int number[SIZE] = {95, 45, 15, 78, 84, 51, 24, 12};
int i;
bubble_sort(number, SIZE);
for (i = 0; i < SIZE; i++)
{
printf("%d ", number[i]);
}
}
2、选择排序
#include<stdio.h>
void main()//主函数
{
int a[10];
int i,j,w;
printf("请输入10个数字: ");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
for(j=i+1;j<10;j++)
if(a[i]<a[j])//进行比较
//比较后进行交换
{
w=a[i];
a[i]=a[j];
a[j]=w;
}
❺ 该如用C语言程序排列大小
排序数组可以使用冒泡算法:如果前一个数据比后一个大,则交换。
#include<stdio.h>
//使用冒泡算法升序数组src
voidsort(int*src,intlen)
{
inttem;
for(inti=0;i<len;i++)
{
for(intj=0;j<len-i-1;j++)//每循环一次,则少一次
if(src[j]>src[j+1])//如果前一个数据比后一个大,则交换
{
tem=src[j];
src[j]=src[j+1];
src[j+1]=tem;
}
}
}
intmain()
{
inta[10]={2,5,9,6,4,7,8,1,0,3};
sort(a,10);//排序
for(inti=0;i<10;i++)//输出结果
printf("%d",a[i]);
return0;
}
❻ 如何用C语言设计程序排列6个数字的大小顺序
排序数组可以使用冒泡算法:如果前一个数据比后一个大,则交换。
{
int i,j,t,a[6];
printf("Please input 6 integers: ");
for(i=0;i<6;i++)
scanf("%d",&a[i]);
for(i=0;i<5;i++) /* 冒泡法排序 */
for(j=0;j<6-i-1;j++)
if(a[j]>a[j+1])
{t=a[j];/* 交换a[i]和a[j] */
a[j]=a[j+1];
a[j+1]=t;
}
优点:
简洁紧凑、灵活方便:C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
以上内容参考:网络-c语言程序设计
❼ c语言中输入20个数排列大小顺序
代码如下:
inta[20];
inti,j,t;
printf("请输入20个数字,以回车间隔:");
for(i=0;i<20;i++)
scanf("%d",&a[i]);
printf(" ");
for(j=0;j<20;j++)
for(i=0;i<20-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("排序好的数组为: ");
for(i=0;i<20;i++)
printf("%d",a[i]);
printf(" ");
}
❽ 求C语言将数组元素大小排序!!
#include <stdio.h>
int main(){
int numbers[10] = { 10,2,3,4,5,6,9,8,7,1 };
int a,b, text, hello;
for(a=0; a<10-1; a=a+1) { //在这里进行比较的开始的代码
hello = 1; //假如剩下的元素已经被排序好了,然后接着进行下面的比较
for(b=0; b<10-1-i; b=b+1){
if(numbers[b] > numbers[b+1]){
text= numbers[b];
numbers[b] = numbers[b+1];
numbers[b+1] = text;
hello= 0;
}
}
if(hello) break;
}
for(a=0; a<10; a=a+1){
printf("%d ", numbers[a]);
}
printf(" ");
return 0;
}
(8)c语言排大小扩展阅读:
C语言中数组元素大小的相关排序规则:
一、首先需要对数组中的元素进行排列,默认是以字符串的规则进行从小到大排序;可接收一个参数:自定义的规则相关排序。参数的具体要求如下:
1、参数首先必须是一个函数;
2、函数必须有一个明确的返回值;
3、返回值必须是number类型,但不可以是NaN。
二、排序中的具体规则:
1、首先每次从数组中挑选出两个元素传入函数中,进行比较,直到所有进行排列的元素都被挑选完毕以后就不要再进行挑选;
2、如果返回值是一个正数,就交换这彼此的位置,实现大小的正确排列;
3、如果返回值是一个负数或0,此时说明大小位置的顺序是正确的,此时就不需要交换彼此的位置。
4、默认同一字符的全角字符看做半角字符。不区分同一个字符(如日文的片假字)的半角与全角状态。相同元素,维持原序,默认区分字母大小写,同一个字符小写在前,大写在后。
注意:对数组的元素进行排序需要不断比较两个数字的大小,10个元素排序一共需要比较9次,直到所有的元素被都完完全全地被比较一次。