Problem A:向后转
题目描述
体育课要开始啦,在体育课之前必不可少的就是整队。一开始,全班同学都按身高排成了一列纵队,可是不巧的是,同学们都背对着体育老师,这个时候,只见体育老师深吸一口气,大声地喊了一句:“向后转!”
小吴是一名小小程序猿,看到这样的场景,他不禁想到了一个问题,假设在老师喊口号之前,班长已经面对纵队的第一位同学,按顺序依次记录了每个同学的学号,那么,老师喊口号之后,学号的顺序又是怎样的呢?
输入
第一行包括一个数n,表示班级里有n位学生,班级人数至少是1,不超过100。第二行包括n个数,表示每个同学的学号。
输出
请按顺序输出向后转后每位同学的学号,用逗号隔开。
样例输入
5
2017010394 2017010432 2017010422 2017010373 2017010410
样例输出
2017010410,2017010373,2017010422,2017010432,2017010394
答案
#include<stdio.h>
#define N 100
int main(){
long int a[N];
int i,j,n;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%ld",&a[i]);
}
for(i=n-1;i>=1;i--){
printf("%ld,",a[i]);
}
printf("%ld",a[0]);
}
Problem B:分两列
题目描述
一列纵队在上课的时候会造成很大的麻烦,体育老师常用的办法就是让同学们1、2报数,然后报2的同学向后退一步。现在我们已经知道一列纵队时候同学的学号分布,那么你能输出分成两列后同学的学号么?
输入
第一行包括一个数n,表示班级里有n位学生,班级人数至少是1,不超过100。第二行包括n个数,表示一列纵队时每个同学的学号。
输出
请按顺序输出分开两列后两列每位同学的学号,用空格隔开。每列同学占两行,报1的同学在第1行。
样例输入
5
2017010394 2017010432 2017010422 2017010373 2017010410
样例输出
2017010394 2017010422 2017010410
2017010432 2017010373
答案
#include<stdio.h>
#define N 100
int main(){
long int a[N];
int i,j,n;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%ld",&a[i]);
}
for(i=0;i<=n-1;i+=2){
printf("%ld ",a[i]);
}
printf("\n");
for(i=1;i<=n-1;i+=2){
printf("%ld ",a[i]);
}
}
Problem C:春游啦
题目描述
可以去春游啦!同学们别提多高兴了!老师说,单独行动有点危险,那么我们还是结伴同行吧。结伴的规则是这样的:排在最前的一个人和排在最后的那个人结成同伴,排在第2个的与排在倒数第2个的结成同伴…依次类推,2个一组成同伴。好,请马上排出来吧!老师语音一落,同学们“唰唰唰”很快结伴好了,准备出发喽!
输入
第一行是一个整数n,表明n个同学。(2<=n<=50,n为偶数) 。 第二行n个整数表明n个同学的学号,学号之间有一个空格。
输出
共n/2行,每行二个整数,表明结伴同学的学号,两个学号之间有一个空格。
样例输入
6
5 6 4 12 3 2
样例输出
5 2
6 3
4 12
答案
#include<stdio.h>
#define N 50
int main(){
long int a[N];
int i,j,n;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%ld",&a[i]);
}
for(i=0,j=n-1;i<j;i++,j--){
printf("%ld %ld\n",a[i]