C语言程序编写三个数由大到小排序

C语言程序编写三个数由大到小排序,第1张

#include<stdioh>

void main()

{

int a,b,c,k;

printf("\nplease a,b and c:");/提示输入三个数/

scanf("%d,%d,%d",&a,&b,&c);

if(a<b)/如果a<b,交换a与b的值/

{

k=a;

a=b;

b=k;

}

if(a<c)/如果a<c,交换a与c的值/

{

k=a;

a=c;

c=k;

}

if(b<c)/如果b<c,交换b与c的值/

{

k=b;

b=c;

c=k;

}

printf("a=%d\t,b=%d\t,c=%d\n",a,b,c);/因为比较的时候是a<b<c,交换以后

的结果是a>b>c,所以输出句子是a=%d\t,b=%d\t,c=%d这个顺序/

}

经过TC30测试完全正确。你题目也没说用不用到调用函数,或者用其它编译器的,所以只写最简单的给你

#include

<stdioh>

#include

<timeh>

#include

<stdlibh>

void

Swap(int

a,

int

b)

//

交换

{

int

t;

t

=

a;

a

=

b;

b

=

t;

}

void

AsceSort(int

begin,

int

end)

//

升序排序

{

for(int

p

=

begin;

p

!=

end;)

if(p

==

begin

||

(p-1)

<=

p)

++p;

else

Swap(p---1,

p);

}

void

DescSort(int

begin,

int

end)

//

降序排序

{

for(int

p

=

begin;

p

!=

end;)

if(p

==

begin

||

(p-1)

>=

p)

++p;

else

Swap(p---1,

p);

}

void

Print(int

a,

int

n)

//

10个一行输出

{

int

i;

for(i

=

0;

i

<

n;

++i)

{

if(i

!=

0

&&

i

%

10

==

0)

putchar('\n');

printf("%4d

",

a[i]);

}

putchar('\n');

}

#define

N

1000

int

main()

{

int

a[N],

i;

srand(time(0));

for(i

=

0;

i

<

N;

++i)

a[i]

=

rand()

%

1001

+

1;

puts("整理前排列:");

Print(a,

N);

puts("递增排列:");

AsceSort(a,

a

+

N);

Print(a,

N);

puts("递减排列:");

DescSort(a,

a

+

N);

Print(a,

N);

return

0;

}

#include <stdioh>

#include <stdlibh>

int cmp(const void a,const void b)

{

    return (int )a-(int )b;

}

int main(int argc,char argv)

{

    int a[]={1,-2,53,49,144,65,267,98,112};

    int i;

    qsort(a,sizeof(a)/sizeof(int),sizeof(int),cmp);

    for(i=0;i < sizeof(a)/sizeof(int);++i)

        printf("%d ",a[i]);

    printf("\n");

    return 0;

}

如果要自己实现排序函数的话

#include <stdioh>

void qsort(int a,int left,int right)

{

    int p=(left+right)/2; //以中间数作为主元

    int k=a[p];

    int i=left,j=right;

    while(i < j)

    {

        //从左边开始将大于主元的数放在主元右边

        while((i <= p) && (a[i] <= k))

            ++i;

        if(i < p)

        {

            a[p]=a[i];

            p=i;

        }

        //从右边开始将小于主元的数放在左边

        while((j >= p) && (a[j] >= k))

            --j;

        if(j > p)

        {

            a[p]=a[j];

            p=j;

        }

    }

    a[p]=k;

    //如果左边的数大于1个则递归左边

    if(p-left > 1)

        qsort(a,left,p-1);

    //如果右边的数大于1个则递归右边

    if(right-p > 1)

        qsort(a,p+1,right);

}

int main(int argc,char argv)

{

    int a[]={1,-2,53,49,144,65,267,98,112};

    int i;

    qsort(a,0,sizeof(a)/sizeof(int)-1);

    for(i=0;i < sizeof(a)/sizeof(int);++i)

        printf("%d ",a[i]);

    printf("\n");

    return 0;

}

我这里正好有这个!

但稍微不同,你只要改一下数字就好了!

一、 大奖赛现场统分

已知:某大奖赛有n个选手参赛,m(m>2)个评委为依次参赛的选手评判打分:最高10分,最低0分。统分规则为:每个选手所得的m个得分中,去掉一个最高分,去掉一个最低分,然后平均为该选手的最后得分。要求编程:

(1)根据n个选手的最后得分,从高到低排出名次表,以便确定获奖名单;

(2)根据各选手的最后得分与各评委给该选手所评分的差距,给各个评委评分的准确性一个定量的评价。

/

变量说明:

n:n个学生

m:m个评委

score[100][20]:最多可存20个评委对100位选手的打分

num[100]:保存选手序号

sum[100]:保存每位选手的平均分

ping[20]:保存对评委打分能力的指数 用它的评分减去各先手平均分之差的绝对值。

pingnum[20]:保存评委的序号

lower:保存最低分

/

#include<stdioh>

#include<mathh>

void main()

{

int i,j,n,m,sum[100],ping[20],pingnum[20],num[100],p=0;

int score[100][20],lower,temp=0;

printf("enter n m:");

scanf("%d",&n);

scanf("%d",&m);

for(i=0;i<m;i++) /对评委指数和评委序号进行初始化/

{

ping[i]=0;

pingnum[i]=i+1;

}

for(i=0;i<n;i++) /对选手序号进行初始化/

num[i]=i+1;

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

{

printf("enter player %d score:\n",i+1); /输入每位选手的m位评委的打分/

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

{

printf("\tenter ping wei %d score:",j+1);

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

if(lower>score[i][j])

{

lower=score[i][j]; /保存最低分/

}

sum[i]+=score[i][j]; /计算每位选手的总分/

}

sum[i]-=lower; /减去最低分/

sum[i]/=(m-1); /计算选手的平均得分/

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

{

ping[j]+=abs(score[i][j]-sum[i]);/保存评委的打分指数/

}

}

for(i=0;i<n;i++) /根据选手的平均分进行排序/

{p=i;

for(j=i+1;j<n;j++)

if(sum[p]<sum[j])

p=j;

if(p!=i)

{

temp=sum[p];

sum[p]=sum[i];

sum[i]=temp;

temp=num[p];

num[p]=num[i];

num[i]=temp;

}

}

for(i=0;i<m;i++) /根据评委打分指数对评委进行排序/

{p=i;

for(j=i+1;j<m;j++)

if(sum[p]<sum[j])

p=j;

if(p!=i)

{

temp=ping[p];

ping[p]=ping[i];

ping[i]=temp;

temp=pingnum[p];

pingnum[p]=pingnum[i];

pingnum[i]=temp;

}

}

printf("print player list:\n");

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

{

printf("%d %d\n",i+1,num[i]);

}

printf("\nprint ping wei list:\n");

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

{

printf("%d %d\n",i+1,pingnum[i]);

}

}

#include <stdioh>

void main()

{

int a[10];

int i,j,t;

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

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

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

for(j=i+1;j<10;j++)

{

if(a[i]>a[j])

{ /交换从这里开始/

t=a[i];

a[i]=a[j];

a[j]=t;}

} /交换到这里结束/

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

printf("%d ",a[i]);

printf("\n");/下一次循环时换行/

}

也没有多大的错误

小心点,C是分语句执行的,到了“;”就是一条语句,除非你用“{}”,这样可以将几个语句合并为一条语句。可以简单这么理解。

void sort(int a[],int n)

{

int x,i,j,k;

int flag=0;

printf("请输入方法(1:straisort, 2:smp_selesort):");

scanf("%d",&flag);

switch(flag){

case 1:

for(i=1;i<n;i++)

{

x=a[i];

j=i-1;

while(j>=0&&x<a[j])

{

a[j+1]=a[j];j--;

}

a[j+1]=x;

}

return;

case 2:

for(i=0;i<n-1;i++)

{

k=i;

for(j=i+1;j<n;j++){

if(a[j]<a[k])k=j;

}

if(i!=k)

{

x=a[i];

a[i]=a[k];

a[k]=x;

}

}

return;

}

}

main()

{

int b[10]={0, 5, 1, 4, 7, 0 ,44, 55 ,4, 10};int i;

sort(b,10);

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

printf("%2d ",b[i]);

}

}

运行结果:

请输入方法(1:straisort, 2:smp_selesort):1

0 0 1 4 4 5 7 10 44 55

Press any key to continue

#include <stdioh>

int main()

{int i,j,min,temp,a[11];

printf("enter data:\n");

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

{printf("a[%d]=",i);

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

}

printf("\n");

printf("The orginal numbers:\n");

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

printf("%5d",a[i]);

printf("\n");

for (i=1;i<=9;i++)

{min=i;

for (j=i+1;j<=10;j++)

if (a[min]>a[j]) min=j;

temp=a[i];

a[i]=a[min];

a[min]=temp;

}

printf("\nThe sorted numbers:\n");

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

printf("%5d",a[i]);

printf("\n");

return 0;

}

扩展资料:

scanf()用法:int scanf(charformat,[argument,]);

scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘)读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。

其调用格式为:scanf(“&lt;格式化字符串&gt;”,&lt;地址表&gt;);

scanf()函数返回成功赋值的数据项数,出错时则返回EOF;

其控制串由三类字符构成:

1、格式化说明符

2、空白

3、非空白符

格式化说明符

附加格式说明字符表:

空白字符

空白字符会使scanf()函数在读 *** 作中略去输入中的一个或多个空白字符,空白符可以是space,tab,newline等等,直到第一个非空白符出现为止。

非空白字符

一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。

#include <stdioh>

int main()

{ char c[6]= {'c', 'a', 't', 'd', 'o', 'g'},t;

int i,j;

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

  for (j=0; j<5-i; j++)

    if(c[j]>c[j+1])

    { t=c[j];

      c[j]=c[j+1];

      c[j+1]=t;

    }

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

  printf("%c ", c[i]);

printf("\n");

return 0;

}

以上就是关于C语言程序编写三个数由大到小排序全部的内容,包括:C语言程序编写三个数由大到小排序、C语言编写关于排列的程序、在C语言中 编写一个程序实现从小到大排序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9524408.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存