【问题标题】:Continue statement in If Else condition gives infinite loop [closed]If Else 条件中的 Continue 语句给出无限循环 [关闭]
【发布时间】:2020-05-11 01:19:06
【问题描述】:

我正在解决字符串问题

给定一个字符串 S,编写一个程序,将字符串中单词的每个首字母命名为大小写。

输入: 第一行由一个整数 T 组成,即测试用例的数量。 T 测试用例如下。每个测试用例的第一行也是唯一一行由一个字符串 S 组成。

输出: 对于每个测试用例,在新行中打印所需的输出。

约束: 1

示例: 输入: 1 我爱编程 输出: 我喜欢编程

为此,我想出了这个解决方案。

#include <stdio.h>
#include <string.h>
int main() {
    //code
    int t,flag;
    scanf("%d", &t);
    while(t--){
        int n,i=0;
        scanf("%d", &n);
        char str[100];
        scanf("%s", str);

        while(i<n){
            if (str[i]!= str[n-1-i]){
             flag = 1;  
            printf("%d", flag);
            break;
            }
            else{
            flag = 0;
           printf("%d", flag);
            continue;
            }
            i++;
    }
    if(flag ==1 )
    printf("No\n");
    else
    printf("Yes\n");
    }   
    return 0;
}

当 continue 被删除时,这段代码可以正常工作,但是当上面的代码运行时,它会无限打印 0。 你能帮我解决我哪里出错了吗?

提前致谢。

【问题讨论】:

  • 1) 为了程序流程的清晰和可视化而缩进/格式化代码; 2)“无限循环”是由于 while 而没有正确打破它(if/else 可能是存在循环的关键,但不会导致循环构造本身,以及 if/then 不要 影响 continue 的“范围”)。
  • 无论如何,按照#1,问题应该很明显。 (提示:如果/当in 都没有改变时,循环终止条件永远不会满足i&lt;n。)
  • 更有意义的变量名会有所帮助
  • 你需要learn how to debug

标签: c arrays string if-statement conditional-statements


【解决方案1】:

这里的“继续”是指“立即在当前循环中执行下一次迭代,在本例中为 while 循环”。

因此,在您的代码中,“i++”行没有被执行,变量 i 永远不会改变,从而导致无限循环。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-27
    • 2015-10-28
    • 2022-11-14
    • 2016-08-09
    • 2015-01-11
    • 2023-04-04
    • 1970-01-01
    • 2022-11-19
    相关资源
    最近更新 更多