注册 登录
编程论坛 C语言论坛

不太会,求解,用两个变量的那种法a[i]=a[j],i++,j--那种,感谢你呀

秃头大凡 发布于 2021-11-03 19:45, 1388 次点击
输入n个数,然后把这n个数逆序输出。

输入格式:
测试数据有多组,处理到文件尾。每组测试数据在一行上首先输入整数n,接着输入n(n<=40)个整数。

输出格式:
对于每组测试,逆序输出n个数,每两个数据之间留一个空格。每两组测试数据之间留一个空行

输入样例:
5 1 2 3 4 5
3 1 2 3
输出样例:
5 4 3 2 1

3 2 1
2 回复
#2
自由而无用2021-11-03 20:27
//online parser: https://www.bccn.net/run/
程序代码:
#include <stdio.h>
#include <string.h>

#define strlize(_s) #_s
#define offdig(_s)  (_s - 0x30)
#define diglize(_d) (_d + 0x30)

int main(int argc, char *argv[])
{
    static char smap[2][10];
    int i;
   
    //strlize input
    argv[0] = strlize(5 1 2 3 4 5);
    argv[1] = strlize(3 1 2 3);
    //rev
    for (i = 0; i < strlen(argv[0]); i += 2)
        smap[0][offdig(argv[0][i])] = 1;
    for (i = 0; i < strlen(argv[1]); i += 2)
        smap[1][offdig(argv[1][i])] = 1;
    //print
    puts(argv[0]);
    for (i = strlen(argv[0]) - 1; i > 0; i--)
        smap[0][i] ? printf("%c ", diglize(i)) : 0;
    puts("");
    puts(argv[1]);
    for (i = strlen(argv[1]) - 1; i > 0; i--)
        smap[1][i] ? printf("%c ", diglize(i)) : 0;
   
    return 0;
}


output sample:

5 1 2 3 4 5
5 4 3 2 1
3 1 2 3
3 2 1
#3
apull2021-11-03 21:04
程序代码:

#include <stdio.h>
int main() {
    int a[40]={0};
    int n;
    while(1)
    {
        scanf("%d",&n);
        if(n<=0)break;
        for(int i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        int t;
        for(int  i=0;i<n-1;i++)
        {
            for(int j=i+1;j<n;j++)
            {
                if(a[i]<a[j])
                {
                    t=a[i];
                    a[i]=a[j];
                    a[j]=t;
                }
               
            }
        }
        
        for(int i=0;i<n;i++)
        {
            printf("%d ",a[i]);
        }
        printf("\n\n");
    }
    return 0;
}
#4
rjsp2021-11-04 08:19
程序代码:
#include <stdio.h>

int main( void )
{
    for( unsigned n; scanf("%u",&n)==1; )
    {
        int a[40];
        for( unsigned i=0; i!=n; ++i )
            scanf( "%u", &a[i] );
        for( unsigned i=0; i!=n; ++i )
            printf( "%u%s", a[n-1-i], " \0\n\n"+(i+1==n)*2 );
    }
}
1