gpt4 book ai didi

c - 当某个条件为假时如何打破 while 循环

转载 作者:行者123 更新时间:2023-12-04 11:12:55 26 4
gpt4 key购买 nike

我试图编写一个程序,如果我输入一个整数,程序会找出较大的数字并用较小的数字减去它。这部分,我明白了。

问题是,无限循环部分。

我试图让输入两个整数继续使用 while 循环打印,并在至少输入一个字符时中断

例如,如果我输入 2 @,它就会中断。

但我无法在代码中找到获取 break; 的写入位置,因此每当我输入一个字符时,它都会继续创建一个无限循环。

有什么方法可以中断这段代码吗?虚心求教...

以下是我无法放置break的代码(顺便说一句,我在 while as sizeof(i)==4 || sizeof(j)==4 中执行条件的原因是让它只输入一个整数,因为整数的大小是 4)

int main()
{
int i, j;
int result;

while (sizeof(i)==4 || sizeof(j)==4){
printf("type in two integers : ");
scanf("%d %d", &i, &j);
if (i < j) {
result = j - i;
}
else if (j < i){
result = i - j;
}

printf("%d\n", result);
}

return 0;
}

最下面的代码是我尝试放入 break 但失败的代码(它一直在创建一个无限循环)...

int main()
{
int i, j;
int result;

while (sizeof(i)==4 || sizeof(j)==4){
if (sizeof(i) == 4 || sizeof(j) == 4) {
printf("type in two integers : ");
scanf("%d %d", &i, &j);
if (i < j) {
result = j - i;
}
else if (j < i) {
result = i - j;
}

printf("%d\n", result);
}
else
break;
}

return 0;
}

这是我去掉 sizeof 并使用 while(1) 的代码,尽管 并没有太大变化break 没用...

int main()
{
int i, j;
int result;

while (1){
printf("type in two integers : ");
scanf("%d %d", &i, &j);
if (i < j) {
result = j - i;
}
else if (j < i) {
result = i - j;
}

printf("%d\n", result);
}

return 0;
}

最佳答案

您不能使用 sizeof(i) 进行运行时检查!这是一个编译时常量,在您的情况下(32 位整数)将始终计算为4>.

为了检查是否给出了两个有效整数,您可以检查 scanf 函数的返回值(它给出了成功的字段数 已扫描):

#include <stdio.h>

int main()
{
int i, j;
int result;

while (1) {
printf("type in two integers : ");
if (scanf("%d %d", &i, &j) != 2) break; // Break here if we didn't get two integers
if (i < j) {
result = j - i;
}
else if (j < i) {
result = i - j;
}

printf("%d\n", result);
}

return 0;
}

请随时询问进一步的说明和/或解释。

关于c - 当某个条件为假时如何打破 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59623469/

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