不太会,求解,用两个变量的那种法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; }