c語言指針實現排序
Ⅰ c語言編程:用指向指針的指針的方法對n個整數排序並輸出。
#include<stdio.h>
#include<stdlib.h>
#defineMAXSIZE100
voidswap(int*,int*);
voidsort(int**,int);
intmain(void)
{
inti;
intn;
//整形數組
intarray[MAXSIZE];
//指針數組
int*pArray[MAXSIZE];
printf("pleaseentern: ");
scanf("%d",&n);
for(i=0;i<n;++i)
{
scanf("%d",&array[i]);
pArray[i]=&array[i];
}
sort(pArray,n);
for(i=0;i<n;++i)
{
printf("%d ",*pArray[i]);
}
return0;
}
//交換
voidswap(int*a,int*b)
{
inttemp=*a;
*a=*b;
*b=temp;
}
//排序
voidsort(int**array,intn)
{
int*p;
int*q;
for(p=*array;p<*array+n;++p)
{
for(q=p+1;q<*array+n;++q)
{
if(*p>*q)
{
swap(p,q);
}
}
}
}
Ⅱ C語言程序設計之中的 指針排序
#include<stdio.h>
void input(int *p,int num)
{
//
int a[10]; 不能在子函數中再定義了,要用形參對應的實參, 子函數中定義的是局部變數,函數完成時,變數就釋放了。
//
for(p=a;p<a+10;p++)
int i;
for(i=0;i<num;i++)
scanf("%d",p+i);
}
void sort(int *p,int num)
{
//
int a[10]; 同前
int i,j,temp;
//
for(p=a;p<a+10;p++)
for(i=0;i<num;i++) //數組下標從0開始
{
for(j=i+1;j<num;j++)
if(p[i]<p[j])
{
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
}
}
void output(int *p,int num)
{
//int a[10]; 同前
//
for(p=a;p<a+10;p++)
int i;
for(i=0;i<num;i++)
printf("%d ",*(p+i));
}
int main()
{
int a[10];
input(a,10);
sort(a,10);
output(a,10);
return 0;
}
Ⅲ C語言指針實現整數排序
#include<stdio.h>
intmain()
{
inta[3],i,n,j;
int*q;
q=&a[0];//這里是將數組的第一位的地址賦值給指針q,也是數組a的首地址
for(i=0;i<3;i++)
{
printf("請輸出1個整數:");
scanf("%d",&a[i]);
}
for(j=0;j<2;j++)//簡單的排序。
{
for(i=0;i<2;i++)
{
if(*(q+j)<*(q+1+i))
{
n=*(q+j);
*(q+j)=*(q+1+i);
*(q+1+i)=n;
}
}
}
printf("三個整數是:%d,%d,%d ",*q,*(q+1),*(q+2));
}
這道題的主要是弄清楚指針的加法和排序的方法。
Ⅳ C語言 指針 排序法
for(i=0;i<10;p++)
{
if(*pmax<*p)
pmax=p;
if(*pmin>*p)
pmin=p;
}
這里有錯!~ for(i=0;i<10;p++)這里出錯了~~`
Ⅳ c語言指針數組排序
p是int類型指針,指向數組a的第1個元素即一個一維的數組{1,2,3}首地址所以p[1]相當於a[0][1]所以printf("%d\n",p[1]);
輸出2 。 int **pp =pa 是聲明了一個指向pa的指針,而pa又是指向a首地址的int類型指針。pa指向的是a的第一維,pa[0] = a[0] ,pp[2][1]相當於a[2][1]而a數組的[2]中只初始化了[2][0]位置的7,那[2][1]位置就是默認的值0,所以printf("%d\n",pp[2][1]);
輸出0
Ⅵ c語言 指針 字元串 排序
對指針數組分配個長度
可以這樣
{
s[i]
=
(char
*)malloc(sizeof(char)
*
1024);
scanf("%s",s[i]);
}
最後記得釋放
for(i=0;i<z;i++)
{
printf("%s:\t",s[i]);
free(s[i]);
}
Ⅶ c語言如何用指針排列字元
#include<stdio.h>
#include<string.h>
voidsort_str(char*str){//選擇排序
//待補全部分
inti,j,k,t,len=strlen(str);
for(i=0;i<len-1;++i){
k=i;
for(j=i+1;j<len;++j){
if(str[k]>str[j])
k=j;
}
if(k!=i){
t=str[k];
str[k]=str[i];
str[i]=t;
}
}
}
intmain(){
charstr[101];
scanf("%s",str);
sort_str(str);//對字元串進行排序
printf("%s ",str);
return0;
}
Ⅷ C語言使用指針實現選擇法排序。
#include<stdio.h>
voidprint_result(float*,int);
voidSelect_Sort(float*,int);
intmain()
{
inti;
floatarray[10];
float*pointer;
printf("請輸入10個數:\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)
{//輸出結果
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;
}
}
tempnum=*(pt+i);
*(pt+i)=*(pt+k);
*(pt+k)=tempnum;
}
}
(8)c語言指針實現排序擴展閱讀:
其它方法:
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;
}
}
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");
}
}