首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将值递增到特定值,然后再递减到初始起始点?

将值递增到特定值,然后再递减到初始起始点?
EN

Stack Overflow用户
提问于 2018-06-21 19:56:22
回答 6查看 4.2K关注 0票数 2

为标题道歉,但我找不到已经提出的类似问题。正如所暗示的,我的问题是如何实现一个计数器,它从初始值开始,向上递增,直到到达特定点,然后递减回原始值。请允许我提供一个例子,以便更好地建议展示我的意思

代码语言:javascript
运行
复制
#include <stdio.h>

int main(void) {
  int i = 0;
  for(i = 0; i <= 10; i++) {
      printf("i = %d\n", i);
      if(i == 5) {
          int j = i;
          for(j = i; j >= 0; j--) {
              printf("j = %d\n", j);
          }
      }
  }
  return 0;
}

运行时,程序将打印i的值0-5,然后打印j的值5-0,然后打印i的值6-10。而不是这样,我只想让程序为i打印0-5,然后为i打印5-0 (如果需要另一个变量,则为j )。

EN

回答 6

Stack Overflow用户

发布于 2018-06-21 20:02:16

您可以在建议的注释中使用两个单独的循环,如Rafalon。

如果你想要一个循环,你可以这样做(用OPs注释中的信息修改它):

代码语言:javascript
运行
复制
int ctr_dir = 80;
int upper_value = 500;
for(int i = 0; i >= 0; i += ctr_dir)
{
  printf("%d", i);
  if (i > upper_value)
    ctr_dir = -80;
}
票数 3
EN

Stack Overflow用户

发布于 2018-06-21 20:06:01

你让这件事变得不必要地复杂了。

代码语言:javascript
运行
复制
for(int i=0; i<6; i++) // print 0 to 5
{
  printf("%d\n", i); 
}

for(int i=0; i<6; i++) // print 5 to 0
{
  printf("%d\n", 5-i);
}
票数 2
EN

Stack Overflow用户

发布于 2018-06-21 20:25:29

虽然我不完全理解您编写代码的方式背后的原因,但其中缺少的成分是if语句中的一个break,它将退出循环,而不是继续并打印出6到10。

代码语言:javascript
运行
复制
  for(i = 0; i <= 10; i++) {
      printf("i = %d\n", i);
      if(i == 5) {
          int j = i;
          for(j = i; j >= 0; j--) {
              printf("j = %d\n", j);
          }
          break; // Exit the loop
      }
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50968010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档