1. 自定义一个函数,将三个数字按照由大到小或者有小到大的顺序排列并且输出。
要求:在main函数中完成三个数字的输入,调用自定义的函数选择排序方式,并完成三个数字的排列和输出
2. 自定义一个函数,将一组从键盘接收到的数字按照由大到小或者有小到大的顺序排列并且输出。
要求:在main函数中完成一组数字的输入,将数字存到一个一维数组中,调用自定义的函数,选择排序方式,并完成数字的排序和输出
(第一题的升级版)
1:
#include <stdio.h>
void sort(int a[]);
int main(int argc, const char * argv[])
{
int i,a[3];// 三个数排序冒泡法排序
printf("请输入三个数字:\n");
for (i=0; i<=2; i++) {
scanf("%d",&a[i]);
}
sort(a);
for (i=0; i<=2; i++) {
printf("%d ",a[i]);
}
return 0;
}
void sort(int a[]){ //排序算法
int i,j,t,n;
printf("请选择排序方式:1代表由大到小,2代表由小到大:\n");
scanf("%d",&n);
if (n==1) {
for (i=0; i<=1; i++) {
for (j=i+1; j<=2; j++) {
if (a[i]<a[j]) {
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}
if (n==2) {
for (i=0; i<=1; i++) {
for (j=i+1; j<=2; j++) {
if (a[i]>a[j]) {
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}
}
2:
#include <stdio.h>
void sort1(int a[] ,int count);
int main(int argc, const char * argv[])
{
int i,a[20],count=0;// 多个数排序
char c;
printf("请输入数字:\n");
scanf("%d",&a[0]); //先输入一个数字存进去
for (i=1; (c=getchar())!='\n'; i++) {//getchar不识别数字,先读取第一个空格,从第一个数字后面的第一个空格开始读取
scanf("%d",&a[i]);
count++;
}
sort1(a,count+1);
for (i=0; i<=count; i++) {
printf("%d ",a[i]);
}
return 0;
}
void sort1(int a[] ,int count){ //排序算法冒泡法
int i,j,t,x;
printf("请选择排序方式:1代表由大到小,2代表由小到大:\n");
scanf("%d",&x);
if (x==1) {
for (i=0; i<=count-2; i++) {
for (j=i+1; j<=count-1; j++) {
if (a[j]>a[i]) {
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}
if (x==2) {
for (i=0; i<=count-2; i++) {
for (j=i+1; j<=count-1; j++) {
if (a[j]<a[i]) {
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}
}