C语言题目

高手们,这是我面试的其中一题目,如何解?使用C语言写出一个排序算法,将buffer[10]里的数值(unsignedchar类型)从大到小排列?... 高手们,这是我面试的其中一题目,如何解?
使用C语言写出一个排序算法,将buffer[10]里的数值(unsigned char类型)从大到小排列?
展开
 我来答
zy1404
2014-01-07 · TA获得超过1387个赞
知道小有建树答主
回答量:784
采纳率:100%
帮助的人:478万
展开全部
////我定义的是char[11]因此可以存10个字符

#include<stdio.h>
int main()
{
char buffer[11]="abcdefghij",c;
int i,j;
printf("请依次输入这10个字符\n");

 for(i=0;i<10;i++)
for(j=0;j<9-i;j++)
{
if(buffer[j]<buffer[j+1])
{
buffer[j]=buffer[j]+buffer[j+1];
buffer[j+1]=buffer[j]-buffer[j+1];
buffer[j]=buffer[j]-buffer[j+1];
/*
c=buffer[j];
buffer[j]=buffer[j+1];
buffer[j+1]=c;
*/
}
}

for(i=0;i<10;i++)
printf("%c",buffer[i]);
return 0;
}

 

--
2022-12-05 广告
二1、 在C语言中,全局变量的存储类别是: (a) A) static B) extern C) void D) register 2、 有如下函数调用语句 func(rec1,rec2+rec3,rec4,rec5); 该函数调用语... 点击进入详情页
本回答由--提供
makubexhacker
2014-01-07 · TA获得超过365个赞
知道小有建树答主
回答量:258
采纳率:0%
帮助的人:168万
展开全部
/*
*冒泡排序算法,将buffer[10]里的数值(unsigned char类型)从大到小排列
* 2014-01-07
*望采纳;)
*/
#include <stdio.h>
#define MAXSIZE 10

int main(void)
{
    unsigned int buffer[10];
    int i, j;
    
    printf("请输入10个正整数:\n"); 
    for (i = 0; i < MAXSIZE; i++){
        scanf("%u", buffer + i);
    } 
    
    printf("\n排序前:");
    for (i = 0; i < MAXSIZE; i++ ){
        printf(" %u", buffer[i]);
    }

    //以下使用冒泡排序法
    for (i = 0; i < (MAXSIZE - 1); i++)
    {
        for (j = 0; j < (MAXSIZE - 1 - i); j++)
        {

            if (buffer[j] < buffer[j + 1])
            {
                buffer[j] ^= buffer[j + 1];
                buffer[j + 1] ^= buffer[j];
                buffer[j] ^= buffer[j + 1];
            }
        }
    }

    printf("\n排序后:");
    for (i = 0; i < MAXSIZE; i++ ){
        printf(" %u", buffer[i]);
    }


    return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
照月明
2014-01-07 · TA获得超过154个赞
知道答主
回答量:229
采纳率:0%
帮助的人:89.1万
展开全部
#include"stdio.h"

int main()
{
int i,j,k;
int buffer[10] = {5,756,36,155,2,4974,361,987,5421,102};
for(i=0;i<10;i++)
{
for(j = i+1;j<10;j++)
{
if(buffer[i] < buffer[j])
{
k = buffer[j];
buffer[j] = buffer[i];
buffer[i] = k;
}
}
}
for(i=0;i<10;i++)
printf("%d\n",buffer[i]);
return 0;
}
这基本是个思路吧,最简单的算法,还有其他的排序方法,你自己查查相关资料
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式