习题 8.14 将n个数按输入时顺序的逆序排列,用函数实现。

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

习题 8.14 将n个数按输入时顺序的逆序排列,用函数实现。

代码块:

方法1:

#include 
void reverse(int (*s)[10], int n);        //定义逆序函数
int main()
{
    int a[10], *p;
    for (p=a, printf("Please enter 10 numbers: "); p10; scanf("%d", p++));    //输入10个数字
    reverse(&a, 10);                                                             //调用逆序函数
    for (p=a, printf("Result: "); p10; printf("%d ", *p++));                  //输出逆序后的10个数字
    printf("\n");
    return 0;
}
//逆序函数
void reverse(int (*s)[10], int n)
{
    int *i, *j, t;
    for (i=*s, j=*s+n-1; i<*s+n/2; t=*i, *i=*j, *j=t, i++, j--);
}

方法2:(利用动态内存分配)

#include 
#include 
void input(int *num[], int n);           //定义输入函数
void print(int *num[], int n);           //定义输出函数
void sort(int *num[], int n);            //定义逆序函数
int main()
{
    int **number, i, p;
    printf("Please enter number: ");                               //输入要输入数字的个数
    scanf("%d", &p);
    number=(int **)calloc(p, sizeof(int *));                       //为输入的数字个数分配空间
    for (i=0; iint *)calloc(1, sizeof(int)));
    input(number, p);                    //调用输入函数
    sort(number, p);                     //调用逆序函数
    print(number, p);                    //调用输出函数
    free(number);
    system("pause");
    return 0;
}
//输入函数
void input(int *num[], int n)
{
    int **p;
    for (p=num, printf("Please enter %d numbers: ", n); pscanf("%d", *p++));
}
//输出函数
void print(int *num[], int n)
{
    int **p;
    for (p=num, printf("New line: "); pprintf("%d ", **p++));
    printf("\n");
}
//逆序函数
void sort(int *num[], int n)
{
    int i, j, *temp;
    for (i=0, j=n-1; i2; i++, j--){
        temp=num[i];
        num[i]=num[j];
        num[j]=temp;
    }
}

你可能感兴趣的:(C程序设计,(第四版),谭浩强,课后答案)