用C语言怎么解决这道题 200
展开全部
#include <stdio.h>
#include <conio.h>
#define ARR_LEN 50 /*数组长度上限*/
#define elemType int /*元素类型*/
/* 冒泡排序 */
/* 1. 从当前元素起,向后依次比较每一对相邻元素,若逆序则交换 */
/* 2. 对所有元素均重复以上步骤,直至最后一个元素 */
/* elemType arr[]: 排序目标数组; int len: 元素个数 */
void bubbleSort (elemType arr[], int len) {
elemType temp;
int i, j;
for (i=0; i<len-1; i++) /* 外循环为排序趟数,len个数进行len-1趟 */
for (j=0; j<len-1-i; j++) { /* 内循环为每趟比较的次数,第i趟比较len-i次 */
if (arr[j] > arr[j+1]) { /* 相邻元素比较,若逆序则交换(升序为左大于右,逆序反之) */
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
/* 输入数组 */
/* elemType arr[]: 输入目标数组; int len: 元素个数 */
void inputArray (elemType arr[], int *len) {
int i = 0;
while (1) {
if (i>=ARR_LEN)
break;
scanf ("%d", &arr[i]);
if (arr[i] == -1)
break;
else
i++;
}
*len = i;
}
/*打印数组*/
/* elemType arr[]: 打印目标数组; int len: 元素个数 */
void printArray (elemType arr[], int len) {
int i;
for (i=0; i<len; i++)
printf ("%d\t", arr[i]);
putchar ('\n');
}
int main (void) {
elemType arr[ARR_LEN];
int len;
printf ("输入分数(输入-1结束):\n");
inputArray (arr, &len);
putchar ('\n');
printf ("排序后分数:\n");
bubbleSort (arr, len);
printArray (arr, len);
getch (); /*屏幕暂留*/
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按照你题意:
参数地址传递。
#include <stdio.h>
#define N 50//分数最大个数50
void jx(int *scores,int *len);//降序排列,参数传递地址
int main()
{
int i,scores[N],len=0,num;
while(1)
{
scanf("%d",&num);
if(num<0)
break;
scores[len]=num;
len++;
}
jx(scores,&len);
for(i=0;i<len;i++)
printf("%d ",scores[i]);
return 0;
}
void jx(int *scores,int *len)//降序排列
{
int i,j;
for(i=0;i<*len;i++)
for(j=i+1;j<*len;j++)
if(scores[i]<scores[j])
scores[i]^=scores[j],scores[j]^=scores[i],scores[i]^=scores[j];
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询