我需要以
之类的格式列出从1到x的数字2,1,4,3,6,5,8,7 ......
我想到了一个像
这样的循环for(i =1; i <j+1; i=i+2)
{
if (i < j)
printf("%d ", i);
printf(" %d \n", (i-1));
}
这似乎是原始的。
在我的系统中,在某些情况下,我必须按升序(0,1,2,3,4,...)访问这些数字,在某些情况下,我必须按上述顺序加入数字
我想过根据案例改变for循环风格。
您能否建议更好的方法来实现此循环。
由于
答案 0 :(得分:6)
for(i=2; i<=j; i=i+2)
printf("%d %d", i, i-1);
答案 1 :(得分:3)
int i, x;
printf("input x : ");
scanf("%d", &x);
for(i=1; i <= x; ++i){
printf("%d ", i & 1 ? i+1 : i-1);
}
printf("\n");
答案 2 :(得分:2)
循环可以用各种方式编写。例如,以下方式
#include <stdio.h>
int main(void)
{
int x;
scanf( "%d", &x );
for ( int i = 1, j = 1; i <= x; i++, j = -j )
{
printf( "%d ", i + j );
}
puts( "" );
return 0;
}
如果输入10则输出
2 1 4 3 6 5 8 7 10 9
答案 3 :(得分:1)
如您所愿使用“\ n”。并使用这样的代码。你会像你问的那样认真对待。但要小心“\ n”..
Int a=0;
for(i=1;i<n;i++){
a=a+1;
if(a%2==1){
printf("%d \n",i+1);
}else{
printf("%d \n",i-1);
}
}
答案 4 :(得分:1)
如果循环内部的代码块需要为列表中的每个值运行一次,则可以使用以下代码在每次迭代中生成列表中的一个项目。这可以防止重复。
int i, j = 10;
for (i = 2; i <= j; i += -1 + 4 * (i%2)) {
printf("%d, ",i);
}
答案 5 :(得分:1)
一个简单的产品
int i, x;
scanf("%d", &x);
// Loop from 1 to the largest even number <= x
for(i = 1; i <= (x & ~1); i++) {
printf("%d ", i - 1 + 2*(i%2));
}
if (i <= x) {
printf("%d ", i);
}
printf("\n");
答案 6 :(得分:0)
您可能想尝试使用数组和初始化for循环,如下所示:
int array[size];
int n;
for(n = 0; n < size; n++){
array[n] = n;
}
然后你可以像这样进入数组:
前进两个;打印。 回去一个;打印;
等
一些代码可能如下所示:
int i = 0; //Which can be changed based on starting array number, etc.
while(i < size);
printf("%d ", array[i]);
if(i % 2 == 0){
i--;
} else {
i += 3;
}