c语言题:在键盘输入10个整数 逆序存放并输出

要求用最基础的C语言写出来,谢谢!
需要逆序,""存放""在输出

比较简单的方法是创建一个数组

从下标为9开始递减进行输入至下标为0

这样存储就会是倒序的了

然后再从下标为0开始递增输出到下标为9


另一种方法是创建两个数组

比如a和b,先顺序地将10个数据存储在a里

然后通过一个循环来将数据逆序存储在数组b里

这样数组b里就是逆序存储的了

最后顺序输出数组b


当然还有一种方法

可以使用一个链表(或者数组也可以)

然后使用栈的方式存储数据

题目中要求数据的存放是逆序的

这其实要具体地看存储的方式了

以栈来说,栈是一种先进后出的数据结构

从这种层面上来看的话它存储的数据就是“逆序”的

但如果使用一个数组来实现的话存储在数组里的数据就可能是顺序的(不使用逆序有方式将数据存储在数组里)

一个简单的例子

#include <stdio.h>

#define PUSH(i) (*p=i,++p)
#define POP(i) (--p,i=*p)

int main(int argc,char **argv)
{
    int a[10];
    int i,r;
    int *p=a;

    for(i=0;i < 10;++i)
    {
        scanf("%d",&r);
        PUSH(r);
    }

    for(i=0;i < 10;++i)
    {
        POP(r);
        printf("%d ",r);
    }

    printf("\n");

    return 0;
}

该例子,如果从栈这种数据结构的方式来看

先输入的数据会被压入到栈底

最后的数据在栈顶,从栈顶到栈底来看的话

数据的存储就是逆序的

如果从数组下标来看的话就是顺序的

这里我们可以将指针反转过来

#include <stdio.h>

#define PUSH(i) (*p=i,--p)
#define POP(i) (++p,i=*p)

int main(int argc,char **argv)
{
    int a[11];
    int i,r;
    int *p=a+10;

    for(i=0;i < 10;++i)
    {
        scanf("%d",&r);
        PUSH(r);
    }

    for(i=0;i < 10;++i)
    {
        POP(r);
        printf("%d ",r);
    }

    printf("\n",a[0]);

    return 0;
}

那么在数组的层面上来说也会是逆序的了


而以数组的顺序或逆序方式来说的话

使用链表的方式则已经没有相对明确的“顺序”或者“逆序”了

当然我们也可以使用逆序链表的方法业创建栈数据结构

由于栈数据结构的性质决定了这种数据存储的方式

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-09-03
比较简单的方法是创建一个数组
从下标为9开始递减进行输入至下标为0
这样存储就会是倒序的了
然后再从下标为0开始递增输出到下标为9
另一种方法是创建两个数组
比如a和b,先顺序地将10个数据存储在a里
然后通过一个循环来将数据逆序存储在数组b里
这样数组b里就是逆序存储的了
最后顺序输出数组b
当然还有一种方法
可以使用一个链表(或者数组也可以)
然后使用栈的方式存储数据
题目中要求数据的存放是逆序的
这其实要具体地看存储的方式了
以栈来说,栈是一种先进后出的数据结构
从这种层面上来看的话它存储的数据就是“逆序”的
但如果使用一个数组来实现的话存储在数组里的数据就可能是顺序的(不使用逆序有方式将数据存储在数组里)
一个简单的例子
#include <stdio.h>
#define PUSH(i) (*p=i,++p)
#define POP(i) (--p,i=*p)
int main(int argc,char **argv)
{
int a[10];
int i,r;
int *p=a;
for(i=0;i < 10;++i)
{
scanf("%d",&r);
PUSH(r);
}
for(i=0;i < 10;++i)
{
POP(r);
printf("%d ",r);
}
printf("\n");
return 0;
}该例子,如果从栈这种数据结构的方式来看
先输入的数据会被压入到栈底
最后的数据在栈顶,从栈顶到栈底来看的话
数据的存储就是逆序的
如果从数组下标来看的话就是顺序的
这里我们可以将指针反转过来
#include <stdio.h>
#define PUSH(i) (*p=i,--p)
#define POP(i) (++p,i=*p)
int main(int argc,char **argv)
{
int a[11];
int i,r;
int *p=a+10;
for(i=0;i < 10;++i)
{
scanf("%d",&r);
PUSH(r);
}
for(i=0;i < 10;++i)
{
POP(r);
printf("%d ",r);
}
printf("\n",a[0]);
return 0;
}那么在数组的层面上来说也会是逆序的了
而以数组的顺序或逆序方式来说的e799bee5baa6e58685e5aeb931333339653639话
使用链表的方式则已经没有相对明确的“顺序”或者“逆序”了
当然我们也可以使用逆序链表的方法业创建栈数据结构
由于栈数据结构的性质决定了这种数据存储的方式
第2个回答  2009-06-19
void main()
{
int arr[10],i=0,temp;
for(;i<10;)scanf("%d",&arr[i++]);
for(i=0;i<5;i++)
{
temp=arr[i];
arr[i]=arr[9-i];
arr[9-i]=temp;
}
for(i=0;i<10;i++)printf("%d ",arr[i]);
printf("\n");
getch();
}

存放在数组a[10]中后才输出的。本回答被提问者采纳
第3个回答  2009-06-18
#include<stdio.h>
void main()
{
int i,N[10];
printf("input 10 numbers:");
for(i=9;i>=0;i--)
scanf("%d",&N[i]);
for(i=0;i<10;i++)
printf("%d ",N[i]);
printf("\n");
}
第4个回答  2009-06-22
#include "stdio.h"
void main()
{
int number[10],*p,i;
p=&number[9];
for(i=0;i<10;i++)
scanf("%d",p--);
p=&number;
for(i=0;i<10;i++)
printf("%5d",*(p++));
}