不太会,求解,用两个变量的那种法a[i]=a[j],i++,j--那种,感谢你呀
输入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
程序代码:#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;
}
程序代码:
#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;
}