【C语言】学习笔记 第6章 循环 编程题 左手的ㄟ右手 2024-03-22 08:44 53阅读 0赞 ### 【C语言】学习笔记 ### #### 文章目录 #### * * 【C语言】学习笔记 * * 第6章 循环 * * 编程题 #### 第6章 循环 #### ![在这里插入图片描述][4ac24c3835914a62b9e279f330fd00cf.png_pic_center] 循环(loop)是重复执行其他语句(循环体)的一种语句。在 C 语言中,每个循环都有一 个控制表达式(controlling expression)。每次执行循环体(循环重复一次)时都要对控制 表达式求值。如果表达式为真(即值不为零),那么继续执行循环。 C 语言提供了 3 种重复语句,即 while 语句、do 语句和 for 语句 ##### 编程题 ##### 【1】编写程序,找出用户输入的一串数中的最大数。程序需要提示用户一个一个地输入数。当用户输入 0 或负数时,程序必须显示出已输入的最大非负数: Enter a number: 60 Enter a number: 38.3 Enter a number: 4.89 Enter a number: 100.62 Enter a number: 75.2295 Enter a number: 0 The largest number entered was 100.62 注意,输入的数不一定是整数。 #include<stdio.h> int main(void) { float number, max = 0; printf("Enter a number: "); scanf("%f", &number); max = number; while (number > 0) { printf("Enter a number: "); scanf("%f", &number); if (number > max) { max = number; } } printf("The largest number entered was %g", max); return 0; } ![在这里插入图片描述][e579d7f1593b47fa93b99e25e59b9552.png_pic_center] 【2】编写程序,要求用户输入两个整数,然后计算并显示这两个整数的最大公约数(GCD): Enter two integers: 12 28 Greatest common divisor: 4 提示:求最大公约数的经典算法是 Euclid 算法,方法如下。分别让变量 m 和 n 存储两个数的值。如 果 n 为 0,那么停止操作,m 中的值是 GCD;否则计算 m 除以 n 的余数,把 n 保存到 m 中,并把余 数保存到 n 中。然后重复上述过程,每次都先判定 n 是否为 0。 #include<stdio.h> int main(void) { int m, n, remainder; printf("Enter two integers: "); scanf("%d %d", &m, &n); while (n != 0) { remainder = m % n; m = n; n = remainder; } printf("Greatest common divisor: %d", m); return 0; } ![在这里插入图片描述][63377295c37b40028980e9d8e36a5816.png_pic_center] 【3】编写程序,要求用户输入一个分数,然后将其约分为最简分式: Enter a fraction: 6/12 In lowest terms: 1/2 提示:为了把分数约分为最简分式,首先计算分子和分母的最大公约数,然后分子和分母都除以最 大公约数。 #include<stdio.h> int main(void) { int numerator, denominator, m, n, remainder; printf("Enter a fraction: "); scanf("%d/%d", &numerator, &denominator); m = numerator; n = denominator; while (n != 0) { remainder = m % n; m = n; n = remainder; } printf("In lowest terms: %d/%d", numerator / m, denominator / m); return 0; } ![在这里插入图片描述][1fef51246bba4493a6558ab92e03cd97.png_pic_center] 【4】在 5.2 节的 broker.c 程序中添加循环,以便用户可以输入多笔交易,并且程序可以计算每次的佣金。 程序在用户输入的交易额为 0 时终止。 Enter value of trade: 30000 Commission: $166.00 Enter value of trade: 20000 Commission: $144.00 Enter value of trade: 0 #include<stdio.h> int main(void) { float commission, value; printf("Enter value of trade: "); scanf("%f", &value); while (value != 0) { 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); printf("Enter value of trade: "); scanf("%f", &value); } return 0; } ![在这里插入图片描述][33a662b407ac467cb887128024375d4a.png_pic_center] 【5】第4章的编程题1要求编写程序显示出两位数的逆序。设计一个更具一般性的程序,可以处理一位、 两位、三位或者更多位的数。提示:使用 do 循环将输入的数重复除以 10,直到值达到 0 为止。 #include<stdio.h> int main(void) { int number; printf("Enter a number: "); scanf("%d", &number); printf("The reversal is:"); do { printf("%d", number % 10); number /= 10; } while (number != 0); return 0; } ![在这里插入图片描述][f02f068613184df9a598200b66ce6814.png_pic_center] 【6】编写程序,提示用户输入一个数 n,然后显示出 1~n 的所有偶数平方值。例如,如果用户输入 100, 那么程序应该显示出下列内容: 4 16 36 64 100 #include<stdio.h> int main(void) { int i, number; printf("Enter a number: "); scanf("%d", &number); for (i = 2; i * i <= number; i += 2) { printf("%d\n", i * i); } return 0; } ![在这里插入图片描述][900380debca84d49834efc2e2939167a.png_pic_center] 【7】重新安排程序square3.c,在for循环中对变量i进行初始化、判定以及自增操作。不需要重写程序, 特别是不要使用任何乘法。 #include<stdio.h> int main(void) { int i, n; printf("This program prints a table of squares.\n"); printf("Enter number of entries in table: "); scanf("%d", &n); for (i = 1; i <= n; i++) { printf("%10d%10d\n", i, i * i); } return 0; } ![在这里插入图片描述][3e7a4ede8b534ce39d958945ed038485.png_pic_center] 【8】编写程序显示单月的日历。用户指定这个月的天数和该月起始日是星期几: Enter number of days in month: 31 Enter starting day of the week (1=Sun, 7=Sat): 3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 提示:此程序不像看上去那么难。最重要的部分是一个使用变量 i 从 1 计数到 n 的 for 语句(这里 n 是此月的天数),for 语句中需要显示 i 的每个值。在循环中,用 if 语句判定 i 是否是一个星期 的最后一天,如果是,就显示一个换行符。 #include<stdio.h> int main(void) { int days, start; printf("Enter number of days in month: "); scanf("%d", &days); printf("Enter starting day of the week (1=Sun, 7=Sat): "); scanf("%d", &start); for (int i = 1; i < start; i++) printf(" "); for (int i = 1; i <= days; i++) { printf("%3d", i); if ((i + start - 1) % 7 == 0) printf("\n"); } return 0; } ![在这里插入图片描述][6a9048d443a3481b810552070b730891.png_pic_center] 【9】第2章的编程题8要求编程计算第一、第二、第三个月还贷后剩余的贷款金额。修改该程序,要求用 户输入还贷的次数并显示每次还贷后剩余的贷款金额。 #include<stdio.h> int main(void) { float loan, rate, mpayment, times, mrate, remain; printf("Enter amount of loan: "); scanf("%f", &loan); printf("Enter interest rate: "); scanf("%f", &rate); printf("Enter monthly payment :"); scanf("%f", &mpayment); printf("Enter payment month:"); scanf("%f", ×); mrate = rate / 1200; remain = loan; for (int i = 0; i < times; i++) { remain = remain + remain * mrate - mpayment; printf("Balance remaining after %d paymen: $%.2f\n", i + 1, remain); } return 0; } ![在这里插入图片描述][d4dfac0a459d4368bff18c175adf030e.png_pic_center] 【10】第 5 章的编程题 9 要求编写程序判断哪个日期更早。泛化该程序,使用户可以输入任意个日期。用 0/0/0 指示输入结束,不再输入日期。 Enter a date (mm/dd/yy): 3/6/08 Enter a date (mm/dd/yy): 5/17/07 Enter a date (mm/dd/yy): 6/3/07 Enter a date (mm/dd/yy): 0/0/0 5/17/07 is the earliest date #include<stdio.h> int main(void) { int month, day, year; int early_month, early_day, early_year; printf("Enter a date (mm/dd/yy): "); scanf("%d/%d/%d", &month, &day, &year); early_month = month; early_day = day; early_year = year; while (month != 0 || day != 0 || year != 0) { if (year < early_year || (year == early_year && month < early_month) || (year == early_year && month == early_month && day < early_day)) { early_month = month; early_day = day; early_year = year; } printf("Enter a date (mm/dd/yy): "); scanf("%d/%d/%d", &month, &day, &year); } printf("%02d/%02d/%02d is the earliest date", early_month, early_day, early_year); return 0; } ![在这里插入图片描述][878eacd946c14f799ee623d2b590ec2d.png_pic_center] 【11】数学常量 e 的值可以用一个无穷级数表示: $e = 1 + 1/1! + 1/ 2! + 1/ 3! + … $ 编写程序,用下面的公式计算 e 的近似值: $1 + 1/1! + 1/ 2! + 1/ 3! + … + 1/ n! $ n 这里 n 是用户输入的整数。 #include<stdio.h> int main(void) { int n; float factorial = 1.0; float e = 0.0; printf("Enter a number to calc e: "); scanf("%d", &n); for (int i = 1; i <= n; i++) { factorial = factorial * i; e = e + 1.0 / factorial; } printf("The e = %1f\n", e); return 0; } ![在这里插入图片描述][f4e32dc7b69f4c29be4becfa7d930d14.png_pic_center] 【12】修改编程题 11,使得程序持续执行加法运算,直到当前项小于 ε ε ε 为止,其中 ε ε ε 是用户输入的较小的 (浮点)数。 #include<stdio.h> int main(void) { float threshold; float factorial = 1.0; float e = 0.0; printf("Enter a number to stop calc e: "); scanf("%lf", &threshold); for (int i = 1;; i++) { factorial = factorial * i; e = e + 1.0 / factorial; if (1.0 / factorial < threshold) { break; } } printf("The e = %lf\n", e); return 0; } > 这里的答案为什么要使用`lf` 进行读取呢,这又不是double 类型浮点,包括输出时,格式串也用的`lf`,如果都去掉,结果就是下面这样的 > > ![在这里插入图片描述][26eaa0224ec5400ea55694e0eea141ee.png_pic_center] 如果不去掉, ![在这里插入图片描述][7f0fc1c3e8234042a3c876a01f49b502.png_pic_center] 程序貌似崩溃了… ,而且警告了我。 ![在这里插入图片描述][2af8cab3f1e34a48981b7e031a7e3ecf.png_pic_center] 如果加上`lf`,读入的居然是个负数…,怪不得程序计算不出来,因为死循环了,永远计算不出来。 不加`l`, ![在这里插入图片描述][aa3b6547bff046cb863a4d2546bcc592.png_pic_center] 这样感觉才正确。 [4ac24c3835914a62b9e279f330fd00cf.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/b419996f0bf74f708f41022641b03c4b.png [e579d7f1593b47fa93b99e25e59b9552.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/82395a5d5f8145428223237390d188ef.png [63377295c37b40028980e9d8e36a5816.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/22c5504a489047eabf213761afb31854.png [1fef51246bba4493a6558ab92e03cd97.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/92b5bf38a98b460f8e2fa740673b6de2.png [33a662b407ac467cb887128024375d4a.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/65352c1c0c2447d09883c0058ed736f4.png [f02f068613184df9a598200b66ce6814.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/ff7a97cc491d4db5a27a9da560b66a9b.png [900380debca84d49834efc2e2939167a.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/1ffded1f78da481c822470c909f237db.png [3e7a4ede8b534ce39d958945ed038485.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/75300cd0a1144439824f2e978a5d3e01.png [6a9048d443a3481b810552070b730891.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/82ed964828af44ffa5ba27749a53443a.png [d4dfac0a459d4368bff18c175adf030e.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/7ffb05b284eb42f8bf550cd2b38217c8.png [878eacd946c14f799ee623d2b590ec2d.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/602c34c8ee6a44ae829038fd24241fe6.png [f4e32dc7b69f4c29be4becfa7d930d14.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/c2fcc1ee90fd42af87b30e3b57e3caad.png [26eaa0224ec5400ea55694e0eea141ee.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/aa620e5c5da04141b51a87b3aaade495.png [7f0fc1c3e8234042a3c876a01f49b502.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/cfcd33664be94cf79ed259615f7b244a.png [2af8cab3f1e34a48981b7e031a7e3ecf.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/0dd6a784e1544a099db2e4af53b01b8f.png [aa3b6547bff046cb863a4d2546bcc592.png_pic_center]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/22/3f69af4bf7ba42b5bdd8860d51e9b639.png
相关 【C语言】学习笔记 第4章 表达式 编程题 【C语言】学习笔记 文章目录 【C语言】学习笔记 第4章 表达式 编程题 第4章 表达式 ![在 浅浅的花香味﹌/ 2024年03月23日 16:56/ 0 赞/ 56 阅读
相关 【C语言】学习笔记 第2章 C语言基本概念 编程题 【C语言】学习笔记 文章目录 【C语言】学习笔记 第2章 C语言基本概念 编程题 第2章 C语言基本 红太狼/ 2024年03月23日 16:18/ 0 赞/ 34 阅读
相关 【C语言】学习笔记 第10章 程序结构 编程题 【C语言】学习笔记 文章目录 【C语言】学习笔记 第10章 程序结构 编程题 第10章 程序结构 Myth丶恋晨/ 2024年03月22日 10:46/ 0 赞/ 44 阅读
相关 【C语言】学习笔记 第8章 数组 编程题 【C语言】学习笔记 文章目录 【C语言】学习笔记 第8章 数组 编程题 第8章 数组 ![在这里 左手的ㄟ右手/ 2024年03月22日 09:45/ 0 赞/ 42 阅读
相关 【C语言】学习笔记 第6章 循环 编程题 【C语言】学习笔记 文章目录 【C语言】学习笔记 第6章 循环 编程题 第6章 循环 ![在这里 左手的ㄟ右手/ 2024年03月22日 08:44/ 0 赞/ 54 阅读
相关 【C语言】学习笔记 第6章 循环 6.5 空语句 【C语言】学习笔记 文章目录 【C语言】学习笔记 第6章 循环 6.5 空语句 第6章 循环 ! 水深无声/ 2024年03月22日 08:44/ 0 赞/ 52 阅读
相关 【C语言】学习笔记 第6章 循环 6.3 for语句 【C语言】学习笔记 文章目录 【C语言】学习笔记 第6章 循环 6.3 for语句 ゝ一纸荒年。/ 2024年03月22日 08:44/ 0 赞/ 21 阅读
相关 【C语言】学习笔记 第6章 循环 6.4 退出循环 【C语言】学习笔记 文章目录 【C语言】学习笔记 第6章 循环 6.4 退出循环 末蓝、/ 2024年03月22日 08:44/ 0 赞/ 7 阅读
相关 【C语言】学习笔记 第6章 循环 6.1 while语句 【C语言】学习笔记 文章目录 【C语言】学习笔记 第6章 循环 6.1 while语句 绝地灬酷狼/ 2024年03月22日 08:43/ 0 赞/ 35 阅读
相关 【C语言】学习笔记 第5章 选择语句 编程题 【C语言】学习笔记 文章目录 【C语言】学习笔记 第5章 选择语句 编程题 第5章 选择语句 ! 布满荆棘的人生/ 2024年03月22日 08:43/ 0 赞/ 38 阅读
还没有评论,来说两句吧...