【C语言】学习笔记 第5章 选择语句 编程题 布满荆棘的人生 2024-03-22 08:43 50阅读 0赞 ### 【C语言】学习笔记 ### #### 文章目录 #### * * 【C语言】学习笔记 * * 第5章 选择语句 * * 编程题 #### 第5章 选择语句 #### ![在这里插入图片描述][7094e4a955d7481b9ca7dabe30dbe4f5.png_pic_center] 根据对语句执行顺序的影响,C 语言 的其余语句大多属于以下 3 类。 * 选择语句(selection statement)。if 语句和 switch 语句允许程序在一组可选项中选择一 条特定的执行路径。 * 重复语句(iteration statement)。while 语句、do 语句和 for 语句支持重复(循环) 操作。 * 跳转语句(jump statement)。break 语句、continue 语句和 goto 语句导致无条件地跳 转到程序中的某个位置。(return 语句也属于此类。) C 语言还有其他两类语句,一类是复合语句(把几条语句组合成一条语句),一类是空语句 (不执行任何操作)。 ##### 编程题 ##### 【1】编写一个程序,确定一个数的位数: Enter a number: 374 The number 374 has 3 digits 假设输入的数最多不超过 4 位。提示:利用 if 语句进行数的判定。例如,如果数在 0 和 9 之间,那 么位数为 1;如果数在 10 和 99 之间,那么位数为 2。 #include<stdio.h> int main(void) { int digit = 0; printf("Enter a number:"); scanf("%d", &digit); if (digit >= 0 && digit <= 9) { printf("The number %d has 1 digits.", digit); } else if (digit >= 10 && digit <= 99) { printf("The number %d has 2 digits.", digit); } else if (digit >= 100 && digit <= 999) { printf("The number %d has 3 digits.", digit); } else { printf("The number %d has 4 digits.", digit); } return 0; } ![在这里插入图片描述][5d1e547c5a4a4ae6bc0d65c0cc3d827b.png_pic_center] 【2】编写一个程序,要求用户输入 24 小时制的时间,然后显示 12 小时制的格式: Enter a 24-hour time: 21:11 Equivalent 12-hour time: 9:11 PM 注意不要把 12:00 显示成 0:00。 #include<stdio.h> int main(void) { int hour = 0, minute = 0; printf("Enter a 24-hour time:"); scanf("%d:%d", &hour, &minute); if (hour > 12 && hour <= 24) { printf("Equivalent 12-hour time: %d:%02d PM", hour % 12, minute); } else { printf("Equivalent 12-hour time: %d:%02d AM", hour, minute); } return 0; } ![在这里插入图片描述][085d3f6e51cf41f4be4f6404e9855db4.png_pic_center] 【3】修改 5.2 节的 broker.c 程序,做出下面两种改变。 (a) 不再直接输入交易额,而是要求用户输入股票的数量和每股的价格。 (b) 增加语句用来计算经纪人竞争对手的佣金(少于 2000 股时佣金为每股 33 美元+3 美分,2000 股或更 多股时佣金为每股 33 美元+2美分)。在显示原有经纪人佣金的同时,也显示出竞争对手的佣金。 #include<stdio.h> int main(void) { float commission, value, price, ccommission; int amount; printf("Enter amount and the price of stock: "); scanf("%d %f", &amount, &price); value = amount * price; if (value < 2500.00f) commission = 30.00f + .017f * value; else if (value < 6250.00f) commission = 56.00f + .0066f * value; else if (value < 20000.00f) commission = 76.00f + .0034f * value; else if (value < 50000.00f) commission = 100.00f + .0022f * value; else if (value < 500000.00f) commission = 155.00f + .0011f * value; else commission = 255.00f + .0009f * value; if (commission < 39.00f) commission = 39.00f; printf("Commission: $%.2f\n", commission); if (amount < 2000) { ccommission = 33 + 0.03 * amount; } else { ccommission = 33 + 0.02 * amount; } printf("Commission of Others: $%.2f\n", ccommission); return 0; } ![在这里插入图片描述][4dad1c09c4ec490da6d90539c4d57698.png_pic_center] 【4】下表中展示了用于测量风力的蒲福风级的简化版本。 ![在这里插入图片描述][28b1c19e3a1a467fae343623e5f24ca4.png_pic_center] 编写一个程序,要求用户输入风速(海里/小时),然后显示相应的描述。 #include<stdio.h> int main(void) { float windspeed; printf("Enter the wind speed (n mile/hour): "); scanf("%f", &windspeed); if (windspeed < 1.0f) { printf("Calm"); } else if (windspeed < 3.0f) { printf("Light air"); } else if (windspeed < 27.0f) { printf("Breeze"); } else if (windspeed < 47.0f) { printf("Gale"); } else if (windspeed < 63.0f) { printf("Storm"); } else { printf("Hurricane"); } return 0; } ![在这里插入图片描述][1e18a13c50174fea9f819de3d66b9db0.png_pic_center] 【5】在美国的某个州,单身居民需要缴纳下表中列出的所得税。 ![在这里插入图片描述][957e1509e2dc406a889e77e7fbe55c32.png_pic_center] 编写一个程序,要求用户输入应纳税所得额,然后显示税金。 #include<stdio.h> int main(void) { float income, tax; printf("Enter the taxable income: "); scanf("%f", &income); if (income < 750.0f) { tax = income * 0.01; } else if (income < 2250.0f) { tax = 7.5 + (income - 750) * 0.02; } else if (income < 3750.0f) { tax = 37.5 + (income - 2250) * 0.03; } else if (income < 5250.0f) { tax = 82.5 + (income - 3750) * 0.04; } else if (income < 7000.0f) { tax = 142.5 + (income - 5250) * 0.05; } else { tax = 230 + (income - 7000) * 0.06; } printf("The tax is %.2f", tax); return 0; } ![在这里插入图片描述][577c573db65445a4ac9218441226cf77.png_pic_center] 【6】修改 4.1 节的 upc.c 程序,使其可以检测 UPC 的有效性。在用户输入 UPC 后,程序将显示 VALID 或 NOT VALID。 #include<stdio.h> int main(void) { int d, i1, i2, i3, i4, i5, j1, j2, j3, j4, j5, first_sum, second_sum, total, check; printf("Enter the first (single) digit: "); scanf("%1d", &d); printf("Enter first group of five digits: "); scanf("%1d%1d%1d%1d%1d", &i1, &i2, &i3, &i4, &i5); printf("Enter second group of five digits: "); scanf("%1d%1d%1d%1d%1d", &j1, &j2, &j3, &j4, &j5); printf("Enter Check digits:"); scanf("%1d", &check); first_sum = d + i2 + i4 + j1 + j3 + j5; second_sum = i1 + i3 + i5 + j2 + j4; total = 3 * first_sum + second_sum; if (check == (9 - ((total - 1) % 10))) { printf("VALID\n"); } else { printf("NOT VALID\n"); } return 0; } ![在这里插入图片描述][1080e3a4a9ef4429b562940b44abcaa1.png_pic_center] 【7】编写一个程序,从用户输入的 4 个整数中找出最大值和最小值: Enter four integers: 21 43 10 35 Largest: 43 Smallest: 10 要求尽可能少用 if 语句。提示:4 条 if 语句就足够了。 #include<stdio.h> int main(void) { int num1, num2, num3, num4; int max1, max2, min1, min2; printf("Enter four integers: "); scanf("%d %d %d %d", &num1, &num2, &num3, &num4); if (num1 > num2) { max1 = num1; min1 = num2; } else { max1 = num2; min1 = num1; } if (num3 > num4) { max2 = num3; min2 = num4; } else { max2 = num4; min2 = num3; } printf("Largest: %d\n", max1 > max2 ? max1 : max2); printf("Smallest: %d\n", min1 < min2 ? min1 : min2); return 0; } ![在这里插入图片描述][dcbe7fc25754451fa433d758439d507f.png_pic_center] 【8】下表给出了从一个城市到另一个城市的每日航班信息。 ![在这里插入图片描述][0e2a392603404e389538050065fdddc4.png_pic_center] 编写一个程序,要求用户输入一个时间(用 24 小时制的时分表示)。程序选择起飞时间与用户输入 最接近的航班,显示出相应的起飞时间和抵达时间。 Enter a 24-hour time: 13:15 Closest departure time is 12:47 p.m., arriving at 3:00 p.m. 提示:把输入用从午夜开始的分钟数表示。将这个时间与表格里(也用从午夜开始的分钟数表示) 的起飞时间相比。例如,13:15 从午夜开始是 13×60+15 = 795 分钟,与下午 12:47(从午夜开始是 767 分钟)最接近。 #include<stdio.h> int main(void) { int hour, minute; int input_minutes; printf("Enter a 24-hour time: "); scanf("%d:%d", &hour, &minute); input_minutes = hour * 60 + minute; if (input_minutes < (615) / 2) { printf("Closet departure time is 9:45 PM, arriving at 11:58 PM."); } else if (input_minutes < (8 * 60 + 9 * 60 + 43) / 2) { printf("Closet departure time is 9:43 AM, arriving at 10:16 AM."); } else if (input_minutes < (9 * 60 + 43 + 11 * 60 + 19) / 2) { printf("Closet departure time is 11:19 AM, arriving at 1:31 PM."); } else if (input_minutes < (12 * 60 + 47 + 14 * 60) / 2) { printf("Closet departure time is 12:47 PM, arriving at 3:00 PM."); } else if (input_minutes < (14 * 60 + 15 * 60 + 45) / 2) { printf("Closet departure time is 2:00 PM, arriving at 4:08 PM."); } else if (input_minutes < (15 * 60 + 45 + 19 * 60) / 2) { printf("Closet departure time is 3:45 PM, arriving at 5:55 PM."); } else if (input_minutes < (19 * 60 + 21 * 60 + 45) / 2) { printf("Closet departure time is 7:00 PM, arriving at 9:20 PM."); } else { printf("Closet departure time is 9:45 PM, arriving at 11:58 PM."); } return 0; } ![在这里插入图片描述][a74dde7cdcde4d9888aa94583ef705e2.png_pic_center] 【9】编写一个程序,提示用户输入两个日期,然后显示哪一个日期更早: Enter first date (mm/dd/yy): 3/6/08 Enter second date (mm/dd/yy): 5/17/07 5/17/07 is earlier than 3/6/08 #include<stdio.h> int main(void) { int fm, fd, fy; int sm, sd, sy; printf("Enter first date (mm/dd/yy): "); scanf("%d/%d/%d", &fm, &fd, &fy); printf("Enter second date (mm/dd/yy): "); scanf("%d/%d/%d", &sm, &sd, &sy); if (fy > sy || (fy == sy && fm > sm) || (fy == sy && fm == sm && fd > sd)) { printf("%d/%d/%02d is earlier than %d/%d/%02d", sm, sd, sy, fm, fd, fy); } else { printf("%d/%d/%02d is earlier than %d/%d/%02d", fm, fd, fy, sm, sd, sy); } return 0; } ![在这里插入图片描述][c50359804332492ca924ce4579dfca49.png_pic_center] 【10】利用 switch 语句编写一个程序,把用数字表示的成绩转换为字母表示的等级。 Enter numerical grade: 84 Letter grade: B 使用下面的等级评定规则:A 为 90~100,B 为 80~89,C 为 70~79,D 为 60~69,F 为 0~59。如 果成绩高于 100 或低于 0,则显示出错消息。提示:把成绩拆分成 2 个数字,然后使用 switch 语句 判定十位上的数字。 #include<stdio.h> int main(void) { int score; int digit; printf("Enter numerical grade: "); scanf("%d", &score); if (score > 100 || score < 0) { printf("Error input score, exit."); return 0; } digit = score / 10; switch (digit) { case 10: case 9: printf("Letter grade: A"); break; case 8: printf("Letter grade: B"); break; case 7: printf("Letter grade: C"); break; case 6: printf("Letter grade: D"); break; default: printf("Letter grade: F"); } return 0; } ![在这里插入图片描述][b30b3886d6be4c8ca8654a96c8ed4d84.png_pic_center] 【11】编写一个程序,要求用户输入一个两位数,然后显示该数的英文单词: Enter a two-digit number: 45 You entered the number forty-five. 提示:把数分解为两个数字。用一个 switch 语句显示第一位数字对应的单词(“twenty”“thirty”等), 用第二个 switch 语句显示第二位数字对应的单词。不要忘记 11~19 需要特殊处理。 #include<stdio.h> int main(void) { int number; int one_digit, two_digit; printf("Enter a two-digit number: "); scanf("%d", &number); printf("You entered the number "); if (number >= 20 || number < 10) { two_digit = number / 10; one_digit = number % 10; switch (two_digit) { case 9: printf("ninety-"); break; case 8: printf("eighty-"); break; case 7: printf("seventy-"); break; case 6: printf("sixty-"); break; case 5: printf("fifty-"); break; case 4: printf("forty-"); break; case 3: printf("thirty-"); break; case 2: printf("twenty-"); break; default: printf("......"); } switch (one_digit) { case 9: printf("nine"); break; case 8: printf("eight"); break; case 7: printf("seven"); break; case 6: printf("six"); break; case 5: printf("five"); break; case 4: printf("four"); break; case 3: printf("three"); break; case 2: printf("two"); break; case 1: printf("one"); break; default: printf("......"); } } else { switch (number) { case 11: printf("eleven"); break; case 12: printf("twelve"); break; case 13: printf("thirteen"); break; case 14: printf("fourteen"); break; case 15: printf("fifteen"); break; case 16: printf("sixteen"); break; case 17: printf("seventeen"); break; case 18: printf("eighteen"); break; case 19: printf("nineteen"); break; } } return 0; } ![在这里插入图片描述][c80172b92e364f82b2f5dd6f3f6016d2.png_pic_center] [7094e4a955d7481b9ca7dabe30dbe4f5.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/2195236d74c34c3faecb3239b3fb1847.png [5d1e547c5a4a4ae6bc0d65c0cc3d827b.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/03e20dce27594cc2ac93730b5ce9356a.png [085d3f6e51cf41f4be4f6404e9855db4.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/828e6184fff84b119e54e316ac20ed8c.png [4dad1c09c4ec490da6d90539c4d57698.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/456c27c6142b4a379dcf4e8f27868fcf.png [28b1c19e3a1a467fae343623e5f24ca4.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/901fe94ad14241a8a2c52fdb24984326.png [1e18a13c50174fea9f819de3d66b9db0.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/8334888a41354940bec8a9a06c8884c9.png [957e1509e2dc406a889e77e7fbe55c32.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/b33d5d5f70604d198c94448a4d1bc489.png [577c573db65445a4ac9218441226cf77.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/5dbe3bb387e5476da61decd6f76c7389.png [1080e3a4a9ef4429b562940b44abcaa1.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/a3fd449eb2384274b44c393058ccd39f.png [dcbe7fc25754451fa433d758439d507f.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/83f7de15788f45f68039a01f35ba98e0.png [0e2a392603404e389538050065fdddc4.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/dc67e8f4bb3c4422952fd073782b6361.png [a74dde7cdcde4d9888aa94583ef705e2.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/3299e6c17d3e4bc898e8898e1003e1c2.png [c50359804332492ca924ce4579dfca49.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/94acfd6ac353415f8b888031aa7adfe7.png [b30b3886d6be4c8ca8654a96c8ed4d84.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/95ef255736674bd5962dca2a7bd70087.png [c80172b92e364f82b2f5dd6f3f6016d2.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/8e7ffa5e4b9c4f3c9b45281e33cc7a49.png
相关 【C语言】学习笔记 第4章 表达式 编程题 【C语言】学习笔记 文章目录 【C语言】学习笔记 第4章 表达式 编程题 第4章 表达式 ![在 浅浅的花香味﹌/ 2024年03月23日 16:56/ 0 赞/ 74 阅读
相关 【C语言】学习笔记 第11章 指针 编程题 【C语言】学习笔记 文章目录 【C语言】学习笔记 第11章 指针 编程题 第11章 指针 ![在 古城微笑少年丶/ 2024年03月22日 10:46/ 0 赞/ 13 阅读
相关 【C语言】学习笔记 第9章 函数 编程题 【C语言】学习笔记 文章目录 【C语言】学习笔记 第9章 函数 编程题 第9章 函数 ![在这里 今天药忘吃喽~/ 2024年03月22日 10:19/ 0 赞/ 25 阅读
相关 【C语言】学习笔记 第8章 数组 编程题 【C语言】学习笔记 文章目录 【C语言】学习笔记 第8章 数组 编程题 第8章 数组 ![在这里 左手的ㄟ右手/ 2024年03月22日 09:45/ 0 赞/ 58 阅读
相关 【C语言】学习笔记 第6章 循环 编程题 【C语言】学习笔记 文章目录 【C语言】学习笔记 第6章 循环 编程题 第6章 循环 ![在这里 左手的ㄟ右手/ 2024年03月22日 08:44/ 0 赞/ 72 阅读
相关 【C语言】学习笔记 第5章 选择语句 5.3 switch语句 【C语言】学习笔记 文章目录 【C语言】学习笔记 第5章 选择语句 5.3 switch语句 朱雀/ 2024年03月22日 08:43/ 0 赞/ 88 阅读
相关 【C语言】学习笔记 第5章 选择语句 编程题 【C语言】学习笔记 文章目录 【C语言】学习笔记 第5章 选择语句 编程题 第5章 选择语句 ! 布满荆棘的人生/ 2024年03月22日 08:43/ 0 赞/ 51 阅读
相关 【C语言】学习笔记 第5章 选择语句 5.2 if语句 【C语言】学习笔记 文章目录 【C语言】学习笔记 第5章 选择语句 5.2 if语句 素颜马尾好姑娘i/ 2024年03月22日 08:43/ 0 赞/ 61 阅读
相关 【C语言】学习笔记 第5章 选择语句 5.1 逻辑表达式 【C语言】学习笔记 文章目录 【C语言】学习笔记 第5章 选择语句 5.1 逻辑表达式 太过爱你忘了你带给我的痛/ 2024年03月22日 08:43/ 0 赞/ 54 阅读
相关 《C++primer学习笔记》——第5章 语句 此章知识点不多,都是较为基础的或是C语言中学过的,便不多赘述 一、条件语句\[P156\] if-else语句——略 switch 语句——大部分略 de 冷不防/ 2022年10月27日 12:25/ 0 赞/ 178 阅读
还没有评论,来说两句吧...