#includestdio.h
目前創(chuàng)新互聯(lián)公司已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、富陽網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
int?main()
{
int?a[3],i,n,j;
int?*q;
q=a[0];??//這里是將數(shù)組的第一位的地址賦值給指針q,也是數(shù)組a的首地址
for(i=0;i3;i++)
{
printf("請輸出1個(gè)整數(shù):");
scanf("%d",a[i]);
}
for(j=0;j2;j++)???//簡單的排序。
{?
for(i=0;i2;i++)
{
if(*(q+j)*(q+1+i))
{
n=*(q+j);
*(q+j)=*(q+1+i);
*(q+1+i)=n;
}
}
}
printf("三個(gè)整數(shù)是:%d,%d,%d\n",*q,*(q+1),*(q+2));
}
這道題的主要是弄清楚指針的加法和排序的方法。
你的程序沒錯(cuò),只不過這不是選擇法,是冒泡發(fā),選擇發(fā)如下:
void sort(int *a,int n)
{
int i,j,t,temp;
for(i=0;in-1;i++)
{
t=i;/初始定義t為未排序數(shù)的第一個(gè)
for(j=i+1;jn;j++)
{
if(*(a+t)*(a+j))/挑選出更大的數(shù)的位置,把他賦給t
t=j;
}
temp=*(a+i); /t是最大的那個(gè)數(shù)的位置,把他和未排序的第一個(gè)交換位置
*(a+i)=*(a+t);
*(a+t)=temp;
}
}
main()
{
int i,a[10],*p=a;
printf("input zhe array a:\n");
for(i=0;i10;i++)
scanf("%d",p++);
printf("\n");
p=a;
sort(p,10);
p=a;
printf("zhe sort array is:\n");
for(i=0;i10;i++)
printf("%d,",a[i]);
getch();
}
#include<stdio.h>
voidprint_result(float*,int);
voidSelect_Sort(float*,int);
intmain()
{
inti;
floatarray[10];
float*pointer;
printf("請輸入10個(gè)數(shù):\n");
for(i=0;i<10;i++)
{
scanf("%f",&array[i]);
}
pointer=array;
Select_Sort(pointer,10);
print_result(pointer,10);
return0;
}
voidprint_result(float*p,intn)
{//輸出結(jié)果
intk;
for(k=0;k<n;k++)
{
printf("%g\t",*(p+k));
}
}
voidSelect_Sort(float*pt,intn)
{//全用指針的選擇排序法
inti,j,k;
floattempnum;
for(i=0;i<n;i++){
k=i;
for(j=i+1;j<n;j++)
{
if(*(pt+j)>*(pt+i))
{
k=j(luò);
}
}
tempnum=*(pt+i);
*(pt+i)=*(pt+k);
*(pt+k)=tempnum;
}
}
擴(kuò)展資料:
其它方法:
voidSelectSort(intarr[],intn)
{
printf("\n選擇排序法過程:\n");
inti,j,k,l,t;
for(i=0;i<n;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(arr[j]<arr[k])
{
k=j(luò);
}
}
if(k!=i)
{
t=arr[i];arr[i]=arr[k];arr[k]=t;
}
for(l=0;l<n;l++)
{
printf("%3c",arr[l]);
}
printf("\n");
}
}