C语言编写程序将一个数组中的数按逆序重新存放并输出程序中数组的元素个数自定,逆序时不能使用辅助数组

如题所述

第1个回答  2017-04-17
#include <stdio.h>
#define N 10
int main(int argc,char *argv[]){
    int a[N],i,j,k;
    printf("Befor:\n");
    for(i=0;i<N;i++)
        printf("%d ",a[i]=i+1);
    for(j=N-1,i=0;i<j;i++,j--)
        k=a[i],a[i]=a[j],a[j]=k;
    printf("\nAfter: \n");
    for(i=0;i<N;i++)
        printf("%d ",a[i]);
    printf("\n");
    return 0;
}

追问

你这个个数定的是10位吧,超过十位就无效了。这个答案我看到过

追答

看到过还问?把#define N 10改成#define N 1000不就1000个数了吗?你题目要求是“元素个数自定”,我定10个不行?#define N 10的意思不就是让“自定”吗!

追问

运行后输入不是这样定义的,就是例如输入, 2 1 6 8 5 6返回6 5 8 6 1 2这个样子

追答

那你为什么不在题目中说“长度由键盘输入”?

#include <stdio.h>
#include "stdlib.h"
int main(int argc,char *argv[]){
    int n,*p,i,j,k;
    printf("Input n(int n>0)...\nn=");
    if(scanf("%d",&n)!=1 || n<1){
        printf("Input error, exit...\n");
        return 0;
    }
    if((p=(int *)malloc(sizeof(int)*n))==NULL){
        printf("Application memory failure...\n");
        return 0;
    }
    printf("Befor:\n");
    for(i=0;i<n;printf("%d ",p[i]=1+i++));
    for(j=n-1,i=0;i<j;i++,j--)
        k=p[i],p[i]=p[j],p[j]=k;
    printf("\nAfter: \n");
    for(i=0;i<n;printf("%d ",p[i++]));
    free(p);
    printf("\n");
    return 0;
}

追问

不对啊

本回答被提问者和网友采纳
相似回答