【发布时间】: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,问题应该很明显。 (提示:如果/当
i或n都没有改变时,循环终止条件永远不会满足i<n。) -
更有意义的变量名会有所帮助
标签: c arrays string if-statement conditional-statements