當前位置:首頁 » 編程語言 » C語言指針數組排序

C語言指針數組排序

發布時間: 2022-04-22 04:22:56

1. c語言編程題,用指針或者數組做,求幫助解答一下怎麼排序

#include<stdio.h>

structstudent{
intno;
char*name;
intscore;
};

voidsortByScoreDesc(structstudent*students,intlength);
voidswap(structstudent*students,inti,intj);
voidprint(structstudent*students,intlength);

intmain(void){
intLENGTH=5;
structstudentstudents[LENGTH]={
{1,"Li",90},
{2,"Wang",95},
{3,"Zhao",80},
{4,"Liu",93},
{5,"Gao",100}
};
sortByScoreDesc(students,LENGTH);
print(students,LENGTH);
return0;
}

voidsortByScoreDesc(structstudent*students,intlength){
intmax=0;
inti=0;
intj=0;
for(i=0;i<length-1;i++){
max=i;
for(j=i+1;j<length;j++){
if(students[j].score>students[max].score){
max=j;
}
}
if(max!=i){
swap(students,i,max);
}
}
}

voidswap(structstudent*students,inti,intj){
structstudenttemp;
temp=students[i];
students[i]=students[j];
students[j]=temp;
}

voidprint(structstudent*students,intlength){
inti=0;
for(i=0;i<length;i++){
printf("%d%s%d ",students[i].no,students[i].name,students[i].score);
}
}

2. C語言用指針數組進行排序

您好,很高興能為您解決問題。

#include <stdio.h>

#include <windows.h>

void main ()

{

int n [] = {6,2,9,1,0,8,3,7,5,4}, i, j, k;

int *p = &n;

for (i = 0; i <= 9; i++)

{

for (j = i; j < 10; j++)

{

if (*(p) > *(p)++)

{

k = *(--p);

*(p) = *(++p);

*(p) = *(--p);

*(p++);

}

}

}

int *g = &n;

for (i = 0; i < 10; i++)

{

printf ("%d, ", *(g++));

}

Sleep (-1);

}

親測有效,編譯環境VS2012

希望我的解答能幫到您,望採納!

3. 編寫一個C語言程序,利用指針對數組進行排序,並解釋所編寫的代碼

#include
<stdio.h>
void
Sort(
int
*s,
int
n
)
{
int
*p
=
s;
//定義一個指向數組首地址的指針
int
*q,
tmp;
for(
;
p
<
s+10;
p++
)
//當指針移動到數組的末端結束
{
for(
q
=
p
;
q
<
s+10;
q++
)
//按照插入排序的方式執行
{
if(
*q
<
*p
)
{
tmp
=
*p;
*p
=
*q;
*q
=
tmp;
}
}
}
}
int
main()
{
int
i;
int
s[10]
=
{9,8,7,6,5,4,3,2,1,0};
Sort(s,10);
//調用排序函數
for(
i
=
0;
i
<
10;
++i
)
//輸出排序後的結果
{
printf("%d
",s[i]);
}
printf("\n");
return
0;
}

4. 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;

(4)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");

5. 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

6. C語言中的字元指針數組排序

完整程序如下:
#include<stdio.h>
void sort_string(char **p,int n){
int i,j;
char s[80];
for (i=0;i<n-1;i++){
for (j=i+1;j<n;j++){
if (strcmp(*(p+i),*(p+j))<0){
strcpy(s,*(p+i));strcpy(*(p+i),*(p+j));strcpy(*(p+j),s);
};};};
}

int main()
{
char *str[]={ "teacher", "student", "maneger", "employee", "telicent" };
int i,n=5;
sort_string(str,n);
for (i=0;i<n;i++) printf("%s\n",str[i]);
return 0;
}

7. c語言用指針給數組排序和插入

#include<stdio.h>
#definesize8//元素數組元素個數
intmain()
{
inti,nums[size]={13,27,38,49,65,76,97},n,index,*p=&nums[size-1];
printf("原數組:");
for(i=0;i<size-1;i++)
printf("%d",nums[i]);
printf(" 輸入要插入的數字:");
scanf("%d",&n);
printf("輸入要插入在第幾個數字後面:");
scanf("%d",&index);
while(p>&nums[index])
{
*p=*(p-1);
p--;
}
*p=n;

printf("插入後的數組:");
for(i=0;i<size;i++)
printf("%d",nums[i]);
return0;
}

8. 採用指針對數組進行排序c語言指針

/*PRESETCODEBEGIN-NEVERTOUCHCODEBELOW*/

#include<stdio.h>
#include<stdlib.h>

/*,system("pause")orinputloop*/

char*resort(char*a)
{
charcMin,cSwap;
inti,j,iIndex,iSize=strlen(a);
for(i=0;i<iSize;i++)
{
cMin=127;
for(j=i;j<iSize;j++)
{
if(a[j]<=cMin)
{
cMin=a[j];
iIndex=j;
}
}
cSwap=a[i];
a[i]=cMin;
a[iIndex]=cSwap;
}

returna;
}

intmain(intargc,char*argv[])
{
chara[100];
gets(a);
puts(resort(a));

return0;
}

9. c語言 指針的方法 對一維數組進行 冒泡排序

大概思路:用指針p指向數組的首地址,用指針去引用數組中的各個元素,並對數組中各個元素就行運算和比較操作了,代碼可以參照如下:
#include
<stdio.h>
#include
<stdlib.h>
int
main()
{
int
array[5];
int
i,j,*p,temp;
p=array;
printf("please
input
some
integer:\n");
for(i=0;i<5;i++)
{
scanf("%d",p++);
}
p=array;
printf("排序前為:\n");
for(i=0;i<5;i++)
{
printf("%-5d",*p++);
}
p=array;
for(i=0;i<4;i++)
{
for(j=0;j<4-i;j++)
{
if(*(p+j)>*(p+j+1))
//用指針去引用數組中的元素並進行比較
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
printf("排序之後:\n");
for(i=0;i<5;i++)
{
printf("%-5d",*p++);
}
return
0;
}

10. 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));
}

這道題的主要是弄清楚指針的加法和排序的方法。

熱點內容
如何讓電腦上擁有移動式伺服器 發布:2025-01-27 13:04:46 瀏覽:67
漫威超級戰爭如何配置核心組合 發布:2025-01-27 13:03:19 瀏覽:954
c語言五子棋程序 發布:2025-01-27 12:58:43 瀏覽:157
win10流媒體伺服器怎麼搭建 發布:2025-01-27 12:58:04 瀏覽:384
組合公式的演算法 發布:2025-01-27 12:45:50 瀏覽:278
落櫻小屋哪裡下載安卓 發布:2025-01-27 12:35:13 瀏覽:72
微信伺服器IP跳轉 發布:2025-01-27 12:26:54 瀏覽:74
oracle自動備份腳本linux 發布:2025-01-27 12:21:40 瀏覽:937
pop伺服器密碼怎麼填 發布:2025-01-27 12:20:02 瀏覽:969
oraclesqlnumber 發布:2025-01-27 12:04:22 瀏覽:850