请输入n(n<=10)和n个正整数,并按照其个位从小到大排序,若两个数的个位相等,则按照数值本身大小从大到小排序,并输出排序后的结果,排序功能要求用函数完成,函数原型为:void sort(int x[],int n),假设输入数据中不存在相等的数据。
#include <stdio.h>
#define N 100
int compare(int x, int y);
int main(void)
{
int i = 0, j = 0;
int index = 0; int tmp = 0;
int n = 0;
int a[100] = {0};
scanf("%d", &n);
for(j = 0; j < n; j++)
{
scanf("%d", &a[j]);
}
for(j = 0; j < n; j++)
{
index = j;
for(i = j; i < n; i++)
{
if(a[i] < a[index]) // 从小到大排序 {
index = i;
}
}
if(j != index)
{
tmp = a[j];
a[j] = a[index];
a[index] = tmp;
}
} for(i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}int compare(int x, int y){
if((x%10) < (y%10))
{
return 1; }
else if((x%10) > (y%10))
{ return 0; } else
{
if(x > y) { return 1; } else { return 0; } }}
供参考:
include <stdio.h>
#define N 100
void Sort(int x[], int n);
int main(void)
{
int i = 0, j = 0;
int n = 0;
int a[100] = { 0 };
scanf("%d", &n);
for (j = 0; j < n; j++)
{
scanf("%d", &a[j]);
}
Sort(a, n);
for (i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}
void Sort(int x[], int n)
{
int i, j, tmp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (x[j] % 10 > x[j + 1] % 10) {
tmp = x[j]; x[j] = x[j + 1]; x[j + 1] = tmp;
}
else if ((x[j] % 10 == x[j + 1] % 10) && (x[j] < x[j + 1])) {
tmp = x[j]; x[j] = x[j + 1]; x[j + 1] = tmp;
}
}
}
}
#include<stdio.h>
void sort(int x[],int n);int main(void)
{
int i,n,a[10]={0};
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
sort(a,n);
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;}
void sort(int x[],int n)
{
int i,j,tmp;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(x[j]%10<x[j-1]%10)
{
tmp=x[j-1];
x[j-1]=x[j];
x[j]=tmp;
}
else if((x[j]%10==x[j-1]%10)&&x[j]>x[j-1]) {
tmp=x[j-1];
x[j-1]=x[j];
x[j]=tmp; }
}
}
}}