循环完全正常,直到输入退出条件,而不是在输入12345后退出,循环中的下一个语句执行。我已经尝试将第一个语句放在循环之外,只将计算放在循环中。
它只是忽略了这个条件。
这是代码
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
int firstValue, pointsReceived;
while(firstValue != 12345){
NSLog(@"Enter the total points available (enter 12345 to stop program):\n");
scanf("%i", &firstValue);
NSLog(@"Enter the total points received: \n");
scanf("%i", &pointsReceived);
float percentage = (100 * pointsReceived) / firstValue;
NSLog(@"Your total percentage is: %.2f%%", percentage);
if(percentage >= 90){
NSLog(@"Your grade is an A");
}
else if(percentage >= 80){
NSLog(@"Your grade is a B");
}
else if(percentage >= 70){
NSLog(@"Your grade is a C");
}
else if(percentage >= 60){
NSLog(@"Your grade is a D");
}
else{
NSLog(@"Your grade is an F");
}
}
NSLog(@"Done!");
}
return 0;
}
答案 0 :(得分:1)
有关Objective-C中while循环的说明,请参阅here。
您的代码中发生的事情是“&#39;内部的所有内容”。在验证条件之前计算块,因此即使用户键入&#34; 12345&#34;,它仍会在检查条件之前继续在循环内运行代码。
一个简单的解决方案是添加一个&#39; if&#39;在收到用户输入后立即检查条件。
if (firstValue == 12345) break;
答案 1 :(得分:0)
while循环仅检查循环结束时的if条件。如果用户在第一次扫描时输入了12345,则循环仍将执行,则需要在scanf后写入另一个if语句
if (firstValue == 12345)
{
break;
}