#include <stdio.h>
#define RATE1 0.15
#define RATE2 0.2
#define RATE3 0.25
int main(void)
{
float salary = 0; //总工资(含税收
int hour = 0; //工作小时数
float tax = 0; //税收
float income = 0; //收入
float wage = 0; //基本工资
int option = 0; //基本工资选项
char choice; //“是否重新计算”选项
while (1)
{
printf("*****************************************************************\n");
printf("Enter the number corresponding to the desired pay rate or action:\n");
printf("1) $8.75/hr 2) $9.33/hr\n");
printf("3) $10.00/hr 4) $11.20/hr\n");
printf("5) quit\n");
printf("*****************************************************************\n\n");
printf("Enter your option:>");
scanf_s("%d", &option);
switch (option)
{
case 1:
wage = 8.75;
break;
case 2:
wage = 9.33;
break;
case 3:
wage = 10.00;
break;
case 4:
wage = 11.20;
break;
case 5:
return 0;
default:
printf("Please enter the correct options\n\n");
continue;
}
printf("Enter work-hours:>");
scanf_s("%d", &hour);
if (hour > 40)
salary = hour * wage + (hour - 40) * 1.5 * wage;
else
salary = hour * wage;
if (salary <= 300)
tax = salary * RATE1;
else if (salary >= 300 && salary <= 450)
tax = 300 * RATE1 + (salary - 300) * RATE2;
else
tax = 300 * RATE1 + 150 * RATE2 + (salary - 450) * RATE3;
income = salary - tax;
printf("SALARY: %f\n TAX: %f\nINCOME: %f\n\n", salary, tax, income);
while (1)
{
printf("Whether to recalculate<Y/N>:>");
scanf_s("%c", &choice, 1);
if (choice == 'N' || choice == 'n')
return 0;
else if (choice == 'Y' || choice == 'y')
break;
else
printf("Please enter the correct options\n\n");
}
}
return 0;
}
在最下面这个while循环中,调试时没在scanf_s停留就直接进行下一步,这是怎么回事?
这个是C Prime Plus第六版第七章编程练习第8题
你的问题是在输入缓冲区中遗留了('\n')所导致的,参考一下这些修改试试:
// ...其他代码...
while (1)
{
printf("Whether to recalculate<Y/N>:>");
int ch;
while ((ch = getchar()) != '\n' && ch != EOF);
scanf_s("%c", &choice, 1);
if (choice == 'N' || choice == 'n')
return 0;
else if (choice == 'Y' || choice == 'y')
break;
else
printf("Please enter the correct options\n\n");
}
// ...其他代码...
我用For创建了一个嵌套循环,这是程序代码和输出,然后我尝试了同时循环,得到了不同的结果 对于 虽然 请引导我。。谢谢
大家好,初学者, 被困在这里一段时间了。故障排除我要么得到一个无限循环,要么它只循环11次(我希望外部循环21次)。基本上,我读这是因为第一个循环将被执行,因为它将是真的,第二个循环将被执行十次,直到它不是真的。然后外部循环将绕过内部循环继续运行(因为条件不再有效),直到外部条件不再为真。 提前道谢!
在 C# 中,while 循环用于多次迭代一部分程序,特别是在迭代的次数不固定的情况下,建议使用 while 循环而不是 for 循环。while 循环的语法格式如下所示: while(表达式){ 循环主体; // 要执行的代码 } 其中,循环主体可以是一个单独的语句,也可以是多条语句组成的代码块,当表达式的为真时,循环会一直执行下去。 while 循环的执行流程如下图所示
C++ 循环 只要给定的条件为真,while 循环语句会重复执行一个目标语句。 语法 C++ 中 while 循环的语法: while(condition) { statement(s); } 在这里,statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。condition 可以是任意的表达式,当为任意非零值时都为真。当条件为真时执行循环。 当条件为假时,程序流将
只要给定条件为真,Perl编程语言中的while循环语句就会重复执行目标语句。 语法 (Syntax) Perl编程语言中while循环的语法是 - while(condition) { statement(s); } 这里的statement(s)可以是单个陈述或一个陈述块。 condition可以是任何表达。 当条件为真时,循环迭代。 当条件变为假时,程序控制将立即传递到循环之后的行。
编写程序时,您可能会遇到需要反复执行操作的情况。 在这种情况下,您需要编写循环语句以减少行数。 JavaScript支持所有必要的循环,以减轻编程压力。 while循环 JavaScript中最基本的循环是while循环,将在本章中讨论。 while循环的目的是只要expression为真,就重复执行语句或代码块。 表达式变为false,循环终止。 流程图 while loop流程图如下 - 语法