写一个函数,使N个整数按由小到大的顺序排列,要求在主函数中输入10个数,并输出排好序的数

用C语言编写:写一个函数,使N个整数按由小到大的顺序排列,要求在主函数中输入10个数,并输出排好序的数
要求用指针来实现

void sort(int *a,int N) //选择排序
{
int i,j,k,t;
for (i = 0; i<N-1; i++) {
k=i;
for (j=i+1; j<N; j++)
if (*(a+k)>*(a+j)) k=j;
if (k!=i) {
t=*(a+k);
*(a+k)=*(a+i);
*(a+i)=t;
}
}

*****************************************

示例程序:

//---------------------------------------------------------------------------

#include <stdio.h>
void sort(int *a,int N)
{
int i,j,k,t;
for (i = 0; i<N-1; i++) {
k=i;
for (j=i+1; j<N; j++)
if (*(a+k)>*(a+j)) k=j;
if (k!=i) {
t=*(a+k);
*(a+k)=*(a+i);
*(a+i)=t;
}
}
}

int main(int argc, char* argv[])
{ int a[10],i;

for (i = 0; i < 10; i++) {//对数组进行填充
a[i]=10-i;
}
for (i = 0; i < 10; i++) {//输出排序之前的情况
printf("%d ",a[i]);
}
putchar('\n');//换行
sort(a,10);//调用sort()函数进行排序
for (i = 0; i < 10; i++) {//输出排序之后的情况
printf("%d ",a[i]);
}
putchar('\n');

return 0;
}
//---------------------------------------------------------------------------
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-10-30
解:源程序如下:
#define n 10
int sort(int a[])
{
int i,j,t;
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (a[i]>a[j])
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
}
main()
{
int a[n],i;
for (i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a);
printf("the sort numberes is:\n");
for (i=0;i<n;i++)
printf("%3d",a[i]);
}
第2个回答  2007-10-30
#include<stdio.h>
void exchange(int a[])
{
int i,j,temp;
for(j=9;j>=0;j--)
for(i=0;i<j;i++)
if(a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
main()
{
int a[10],i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
exchange(a);
for(i=0;i<10;i++)
printf("%d ",a[i]);
}

...数按从小到大的顺序排序。N个元素在主函数中输入,排序后
include<stdio.h> void sort(int *p,int n);int main(){ int i,arr1[6]={3,9,2,8,6,1},arr2[10]={11,5,18,7,2,15,4,13,9,3};sort(arr1,6);sort(arr2,10);printf("排序的结果:\\n");for(i=0;i<6;i++)printf("%3d",arr1[i]);printf("\\n");for(i=0;i<1...

用指针实现:由键盘输入10个整数,将他们按由小到大的顺序排列。
void sort(int*s,int n);\/\/定义排序函数 int main(){ int a[10],*p;printf("Please enter 10 nunmbers:");\/\/输入10个整数 for(p=a;p<a+10;scanf("%d",p++));printf("Original number:");for(p=a;p<a+10;printf("%d",*p++));\/\/输出原来输入的10个整数 printf("\\n");so...

...对它们进行比较大小并把它们按从小到大的顺序输出
void choise(int *a,int n){ int i,j,k,temp;for(i=0;i<n-1;i++){ k=i; \/*给记号赋值*\/ for(j=i+1;j<n;j++)if(a[k]>a[j])k=j; \/*是k总是指向最小元素*\/ if(i!=k){ \/*当k!=i是才交换,否则a[i]即为最小*\/ temp=a[i];a[i]=a[k];a[k]=temp;} ...

...输入10个整数,对其按照从小到大的顺序排序,并输出结果。
首先,我们需要包含头文件,以便使用标准输入输出函数。在主函数main()中,我们定义一个长度为10的整数数组a,并设置两个变量i和j来辅助排序过程,以及一个临时变量temp用于交换元素值。接着,通过printf()函数提示用户输入10个整数,并使用for循环读取用户的输入。在排序部分,使用嵌套的for循环,外层循环...

在main函数中输入10个字符串,用另一个函数对它们排序。然后在main函数中...
include "stdio.h"include "string.h"define N 10 \/\/排序函数 void sort(char *str[]){ int i, j;char *temp = malloc(sizeof(char) * 20);for(i = 0; i < N-1; i++)for(j = i+1; j < N; j++)if(strcmp(*(str+i), *(str+j)) == 1)\/\/比较大小 { \/\/交换 str...

写一函数用起泡法对输入的个字符按由小到大的顺序排列。
system("pause");return 0;} \/\/排序函数(起泡法)void sort(char s[], int n){ for (int i=0; i<n-1; i++)for (int j=0, t; j<n-1-i; s[j]>s[j+1]?t=s[j],s[j]=s[j+1],s[j+1]=t, j++ :j++);printf("Sort array: ");puts(s);} ...

求C++程序:任意从键盘输入10个整数,按从小到大的顺序排序,并输出结果...
为了实现C++程序,可以按照以下步骤来完成一个从键盘输入10个整数并按从小到大排序的功能:首先,创建一个结构体,名为`IntInfo`,包含整数值(数值域)、排名(排名域)和序号(序号域)。接着,定义一个`IntInfo`类型的数组`d`,用于存储输入的10个整数及其相关信息。定义两个自定义函数:`compare...

编写主函数由键盘输入10个整数放入数组中,调用invert()函数并输出反序...
include<stdio.h>void invert(int a[],int n){int i,j,t; for(i=0,j=n-1;i<j;i++,j--) {t=a[j];a[j]=a[i];a[i]=t;} for(i=0;i<n;i++) printf("%d ",a[i]); printf("\\n");}int main(){int a[10],i; for(i=0;i<10;i++) scanf("%d",...

c语言 ,编写一个函数input(),sort(),实现数组的输入,排序。
\/\/从键盘输入n(1<n<=10)个数据,并对这n个数据从小到大排序 include<stdio.h> void main(){ int i,n,a[10];void input(int a[],int n);void sort(int a[],int n);printf("请输入数据的个数n:");scanf("%d",&n);input(a,n);sort(a,n);printf("排序结果:");for(i=0;...

编一个程序,用同一个函数名对n个数据进行从小到大排序
static double arr1[6]={558.0,999.0,123.0,222.0,55.0,456.0};static int arr2[6]={123,456,789,654,321,5};void main(){ cout<<"float exp."<<endl;for (int i=0; i<6; i++){ cout<<arr0[i]<<" ";} cout<<endl;sort(arr0, 6);for (i=0; i<6; i++){...

相似回答