gpt4 book ai didi

c - 如何在C中的循环内访问增量值

转载 作者:行者123 更新时间:2023-11-30 14:31:34 26 4
gpt4 key购买 nike

我是编程的新手,但我坚持使用从输入中读取整数N并输出以下系列的前N个整数的代码:
1,-1,-2,2,3,-3,-4,4,5,-5,-6,6,7,-7,...
例如,如果N为4,则打印:
1,-1,-2,2。
我编写了代码,其中包含一个while循环。我需要t和i的最后一个值,它们在循环内,循环外递增,但不起作用。
这是我的代码:

#include <stdio.h>

int main(void) {
int n;
printf("Enter your number: ");
scanf("%d", &n);

int i = 1;
int t = 1;
while (i <= (n / 2)){
int t = i;
if (i % 2 == 0)
t *= -1;

printf("%d", t);
printf(", %d, ", -t);
i++;
}
if (n % 2 == 1){
printf("%d", -t / i * (n + 1) / 2);
}
return 0;
}


实际上,我需要代码的外部为奇数N(因为当N是像4这样的偶数时,数字会像1,-1,-2、2这样配对,但是当它是奇数时,最后一个数字是单数,例如N = 5 ,1,-1,-2,2,3)对于偶数N起作用,但对于奇数N则打印0而不是序列的最后一个数字。
抱歉,如果我的解释不清楚,请多多帮助。

最佳答案

您可以看到有关内部变量k隐藏外部1的定义的重放。我想谈谈代码。

我认为代码中有两种情况:第一,您增加数字;第二,您增加数字。第二,将符号反转。同样,在两种情况下,您都将打印一个数字。因此,我认为可以更清晰地实现它:

#include <stdio.h>

int main() {

int n;
printf("enter number:\n");
scanf("%d",&n);

for (int i = 0, sign = 1, j = 1; i < n; ++i) {
if (i > 0)
printf(", ");

printf("%d",j*sign);

if (i%2 == 0)
sign = -sign;
if (i%2 == 1)
++j;
}

putchar('\n');
return 0;
}

关于c - 如何在C中的循环内访问增量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60235199/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com