一道关于C语言编程题

来源:百度知道 编辑:UC知道 时间:2024/06/01 13:32:11
#include "stdio.h"
#include "stddef.h"

unsigned char gBfBuf[16]={21,5,89,80,74,255,0,67,49,61,123,45,45,0,78,1};
unsigned char gAftBuf[16];

/*
功能:打印指定数组的内容
入口参数:pBuf:指针,指向待打印的数组
出口参数:无
*/
void printBuf(unsigned char *pBuf)
{

}

/*
功能:将数组中的内容按照值从大到小的顺序排序
入口参数:pBf:指针,指向待排序的数组
pAft:指针,指向排序后的数组
出口参数:无
*/
void SortBuf(unsigned char *pBf,unsigned char *pAft)
{

}

void main(void)
{
/* 打印排序之前的数组内容 */
printf("string before sort is :");
printBuf(&gBfBuf[0]);

/* 从大到小排序 */
SortBuf(&gBfBuf[0],&gAftBuf[0]);

/* 打印排序之后的数组内容 */
printf("string after sort is :");
printBuf(&gAftBuf[0]);
}

填写printbuf 和sortbuf两个函数的内容,完成数组打印和排序的功能要求。 高手解救啊

void printBuf(unsigned char *pBuf)
{
int i;
for (i=0;i<16;i++) printf("%d ",pBuf[i]);
printf("\n");
}

void SortBuf(unsigned char *pBf,unsigned char *pAft)
{
int i,j;
unsigned char tmp;
for (i=0;i<16;i++) pAft[i] = pBf[i];
for (i=0;i<15;i++)
for (j=i+1;j<16;j++)
if ( pAft[i] < pAft[j] ) {tmp=pAft[i]; pAft[i]=pAft[j];pAft[j]=tmp;};
}

void printBuf(unsigned char *pBuf)
{
for (int i = 0; i < 16 ; i ++)
{
printf("%d\n",pBuf[i]);
}
}

void SortBuf(unsigned char *pBf,unsigned char *pAft)
{
unsigned char temp = 0;
int max = 15;
while(max > 0)
{
for (int i = 0; i < max ; i ++)
{
if (pBf[i] > pBf[i+1])
{
temp = pBf[i];
pBf[i] = pBf [i+1];
pBf[i+1] = temp;
}
}
pAft[max] = pBf[max];