题目内容:
班级第一次列队,通常老师会让同学按身高排成一列,然后1、2报数,喊到1的同学向前一 步,就这样,队伍就变成两列了。假设现在一个班级有n个同学,并且他们已经按身高排成 了一列,同学按身高从1到n编号,你能告诉我最后哪些编号的同学站在了第一列么?
输入格式:输入一个正整数n,表示班级的人数。
输出格式:按顺序输出所有在第一列的同学对应的编号,每两个编号之间用一个空格隔开,最后一个编号后面没有空格。
输入样例:11
输出样例:1 3 5 7 9 11
时间限制:500ms内存限制:32000kb
方法一:
用i += 2,从1开始依次输出奇数。空格放在每位奇数的后面,最后一位奇数单独输出(确保其后没有空格)。
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
int i = 1;
while(i < n-1){ //用while循环,从1开始输出,每次加2,直到i ≥n-1结束
printf("%d ", i) ; //空格放在后面
i += 2;
}
printf("%d",i); //确保最后一位数后没有空格(此时i是≤n的最大的奇数)
return 0;
}
或者使用for循环
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
int i;
for ( i=1; i<n-1; i+=2){
printf("%d ", i) ;
}
printf("%d",i);
return 0;
}
方法二:
先输出1,再用i++,从2开始判断,依次输出奇数。空格放在每位奇数的前面,确保最后一位奇数后没有空格。
#include <stdio.h>
int main()
{
int i;
scanf("%d", &i);
int n = i;
printf("1");
for( i=2; i<=n; i++) {
int a = i%2;
if ( a == 1) { //需要注意=是赋值,==才是相等
printf(" %d", i); //把空格留在前面,确保最后一个数后没有空格
}
}
return 0;
}