一、选择语句(2(完结))
swich语句
switch语句是一种分支结构,常用于多分支的情况 .
1. 1998年的美国联邦税收计划是近代最简单的税收方案。它分为4个类别, 每个类别有两个等级。下面是该税收计划的摘要。
| 类别 | 税金 |
| ---- | ------------------------------------- |
| 单身 | 17850美元以内按15%计,超出部分按28%计 |
| 户主 | 23900美元以内按15%计,超出部分按28%计 |
| 已婚 | 29750美元以内按15%计,超出部分按28%计 |
| 离异 | 14875美元以内按15%计,超出部分按28%计 |
例如一位工资为20000美元的单身纳税人,应缴纳税费0.15\*17850+0.28\*(20000-17850)美元。编写一个程序,让用户指定缴纳税金的种类和应纳税的收入,然后计算税金和净收入
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define SINGLE 178500
#define HOUSEHOLDER 23900
#define MARRIED 29750
#define DIVORCE 14875
#define BASE_TAX_RATE 0.15
#define TAX_RATE 0.28
int main() {
int type;//类型
float salary;// 薪水
float tax, lastSalary;//税金、净收入
printf("--------------请选择种类--------------\n");
printf("1> 单身 2>户主 3>已婚 4>离异\n");
scanf("%d", &type);
printf("请输入薪水:");
scanf("%f", &salary);
// 代码补全
switch (type) {
case 1://单身
if (salary <= SINGLE) {
tax = salary * BASE_TAX_RATE;
lastSalary = salary - tax;
}
else {
tax = salary * BASE_TAX_RATE + (salary - SINGLE) * TAX_RATE;
lastSalary = salary - tax;
}
printf("你的薪水为%.1f,税金为%.1f,净收入为%.1f.", salary, tax, lastSalary);
break;
case 2://户主
if (salary <= HOUSEHOLDER) {
tax = salary * BASE_TAX_RATE;
lastSalary = salary - tax;
}
else {
tax = salary * BASE_TAX_RATE + (salary - HOUSEHOLDER) * TAX_RATE;
lastSalary = salary - tax;
}
printf("你的薪水为%.1f,税金为%.1f,净收入为%.1f.", salary, tax, lastSalary);
break;
case 3://已婚
if (salary <= MARRIED) {
tax = salary * BASE_TAX_RATE;
lastSalary = salary - tax;
}
else {
tax = salary * BASE_TAX_RATE + (salary - MARRIED) * TAX_RATE;
lastSalary = salary - tax;
}
printf("你的薪水为%.1f,税金为%.1f,净收入为%.1f.", salary, tax, lastSalary);
break;
case 4://离异
if (salary <= DIVORCE) {
tax = salary * BASE_TAX_RATE;
lastSalary = salary - tax;
}
else {
tax = salary * BASE_TAX_RATE + (salary - DIVORCE) * TAX_RATE;
lastSalary = salary - tax;
}
printf("你的薪水为%.1f,税金为%.1f,净收入为%.1f.", salary, tax, lastSalary);
break;
}
return 0;
}
注意:
(1)swtich语句中应该在每个选项的最后都添加break;
(2)break的实际效果是把语句列表划分为不同的部分;
(3) case和default子句的先后顺序可以先后变动,default子句可以省略不用.
需要遵循的规则:
在一个 switch 中可以有任意数量的 case 语句,每个 case 后跟一个要比较的值和一个冒号.
当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止.
当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行.
不是每一个 case 都需要包含 break,如果 case 语句不包含 break,控制台将会继续进行后续的 case,直到遇到 break 为止.
一个 switch 语句可以有一个 default case出现在 switch 的末尾。default case 可用于在上面所有 case 都不为真时执行一个任务。
注:default case 中的 break 语句不是必需的。
while循环
while语句执行的循环结构
while (表达式)
{
语句;
}
当表达式为真,则执行下面的语句;语句执行完之后再判断表达式是否为真,如果为真,再次执行下面的语句;然后再判断表达式是否为真……这样一直循环下去,直到表达式为假,跳出循环。
eg:在控制台打印1~10
#include <stdio.h>
int main() {
int i = 1;
while (i <= 100) {
printf("%d\n", i);
i = i + 1;
}
return 0;
}
进阶:提示用户输入一个整数,然后打印从该数到比该数大10的所有整 数(例如:用户输入10,则打印10~20的所有整数)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main() {
//定义变量
int num = 0;
int i = 0;
//提示用户输入
printf("请输入一个整数:");
scanf("%d", &num);
while (i < 11) {
//循环语句
printf("%d\t", num++);
//更新循环变量
i++;
}
return 0;
}
注:
在while语句中break用于终止循环;而continue是用于终止本次循环,后面的循环还会继续.