【发布时间】:2020-01-07 06:47:27
【问题描述】:
我正在尝试编写一个程序,如果我输入一个整数,程序会找出较大的数字并减去较小的数字。这部分,我明白了。
问题是,无限循环部分。
我尝试让 type in two integers 继续使用 while 循环打印,并在至少输入一个字符时让 break 继续打印。
例如,如果我输入2 @,它会中断。
但是我找不到在代码中获取break; 的写入位置,因此每当我输入一个字符时,它都会继续创建一个无限循环。
有没有办法在这段代码中创建一个中断?我虚心求教……
以下是我无法输入break 的代码
(顺便说一句,我在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;
}
【问题讨论】:
-
试试
while (2==scanf("%d %d", &i, &j))。如果我正确理解您的问题,它应该会有所帮助。
标签: c while-loop integer