题面
/**
编写一程序P419.C实现以下功能
①程序运行时先显示Input:,再从键盘上读入一组整数(只考虑int型),数与数之间只使用空格或回车作分隔。
数可正可负,最多100个,但若读入的数为-888时,则表示输入结束且-888不算在该组数内。
②对这一组数按从小到大的顺序进行排序。
③将排序后的这一组数输出到屏幕上。
编程可用素材:
printf("Input: ");
printf("\nResult: ");
printf("%d ");
程序的运行效果应类似地如图1所示,其中的100 120 89 72 -19 200 500 210 235 6 24 1234 -888是从键盘输入的内容。
Input: 100 120 89 72 -19 200 500 210 235 6 24 1234 -888
Result: -19 6 24 72 89 100 120 200 210 235 500 1234
*/
解答
// 排序
void sort(int *data, int n)
int main(void)
{
int data[N]
int i,j
printf("Input: ")
i=0
// 循环完成输入,完成有效数据计数
do{
scanf("%d",&data[i])
if(data[i]==-888)
{
break
}
i++
}while(i<100)
sort(data,i)
printf("\nResult: ")
for(j=0
{
printf("%d ",data[j])
}
return 0
}
void sort(int *data, int n)
{
int i,j,k,tmp
// 使用选择排序
for(i=0
{
k=i
for(j=i+1
{
if(data[j]<data[k])
{
k=j
}
}
if(k!=i) // 交换
{
tmp=data[k]
data[k]=data[i]
data[i]=tmp
}
}
}
知识点
- 计数完成输入
- 使用break跳出循环
- 模块化,用函数完成排序
1 重点是 定标和交换
- 使用选择排序算法
- 格式化输出
- 注意:数组作为函数的参数,一般同时需要传入数组的个数