习题 8.21 用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n个整数在主函数中输入,最后在主函数中输出。

xiaoxiao2021-02-28  31

C程序设计(第四版) 谭浩强 习题8.21 个人设计

习题 8.21 用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n个整数在主函数中输入,最后在主函数中输出。

代码块:

方法1:

#include <stdio.h> #include <stdlib.h> void sort(int *s[10], int n); //定义排序函数 int main() { int *num[10], **p, i; for (i=0; i<10; num[i++]=(int *)malloc(4*sizeof(int))); //为数组分配空间 for (p=num, printf("Please enter 10 numbers: "); p<num+10; scanf("%d", *p++)); //输入10个整数 sort(num, 10); //调用排序函数 for (p=num, printf("Sort by: "); p<num+10; printf("%d ", **p++)); //输出排序后的10个整数 printf("\n"); return 0; } //排序函数 void sort(int *s[10], int n) { int i, j, t; for (i=0; i<n; i++) for (j=i+1; j<n; *s[i]>*s[j] ? t=*s[i], *s[i]=*s[j], *s[j]=t, j++ : j++); }

方法2:

#include <stdio.h> #include <string.h> #include <stdlib.h> void input(int *num[], int n); void sort(int *num[], int n); void print(int *num[], int n); int main() { int numb, **number, i; printf("Please enter number: "); scanf("%d", &numb); number=(int**)malloc(numb*sizeof(int*)); for (i=0; i<numb; number[i++]=(int*)malloc(sizeof(int))); input(number, numb); sort(number, numb); print(number, numb); system("pause"); return 0; } void input(int *num[], int n) { int **p; for (p=num, printf("Please enter %d numbers: ", n); p<num+n; scanf("%d", *p++)); } void print(int *num[], int n) { int **p; for (p=num, printf("Sort by: "); p<num+n; printf("%d ", **p++)); printf("\n"); } void sort(int *num[], int n) { int i, j, *temp; for (i=0; i<n; i++) for (j=i+1; j<n; j++) if (*num[i]>*num[j]){ temp=num[i]; num[i]=num[j]; num[j]=temp; } }
转载请注明原文地址: https://www.6miu.com/read-1600245.html

最新回复(0)