gpt4 book ai didi

c - 如何在 while 循环中转换此 goto 循环?

转载 作者:太空宇宙 更新时间:2023-11-04 08:00:33 25 4
gpt4 key购买 nike

我有一个程序提示用户输入三个 float ,如果这些数字不是正数或不是数字,它会打印出 "Invalid number" 这是程序的一部分 goto 循环,我想摆脱它。

float array[n][3];
int i;
for(i = 0;i<n;i++){
one:
printf( "Please enter first number: ");
scanf("%f", &array[i][0]);
while(array[i][0]<0){
printf("Invalid number: ");
goto one;
}
two:
printf("Please enter second number: ");
scanf("%f", &array[i][1]);
while(array[i][1]<0){
printf("Invalid number: ");
goto two;
}
three:
printf("Please enter third number: ");
scanf("%f", &array[i][2]);
while(array[i][1]<0){
printf("Invalid number: ");
goto three;
}
}

如何转换循环 goto onegoto twogoto three;在 while 循环中,还是某种循环?

最佳答案

查看我的更改。我不仅修改了goto案例:

double array[n][3];
int i, j;
char * fst[] = { "first", "second", "third" };

for( i = 0; i < n; i++ )
{
for ( j = 0; j < 3; j++ )
{
while ( 1 )
{
printf( "Please enter %s number: ", fst[j] );
scanf( "%lf", &array[i][j] );
if ( array[i][j] < 0 )
printf("Invalid number.\n");
else break;
}
}
}

相似的 block 由一个循环和单词数组组合而成。 double优于float RAM 非常低(嵌入式系统)的情况除外。 goto转换为 while循环和 break .我想你对负数说“无效数字”,没有失败scanf .如果检查失败 scanf那么可以修改为if ( scanf( "%lf", &array[i][j] ) < 1 ) ... .

关于c - 如何在 while 循环中转换此 goto 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47092492/

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