C语言基础习题50例(四)16-20 £神魔★判官ぃ 2023-02-14 07:45 75阅读 0赞 ### 文章目录 ### * * 习题16 * 习题17 * 习题18 * 习题19 * 习题20 Python基础特训 12节课从0起步掌握Python 给大家介绍一堂Python入门课[https://www.bilibili.com/video/BV1RZ4y1n75v][https_www.bilibili.com_video_BV1RZ4y1n75v],感觉还不错,适合初学者入门。 ## 习题16 ## > 输入两个正整数 m 和 n ,求其最大公约数和最小公倍数。 实现思路: 求两个数的最大公约数分别采用辗转相除法、辗转相减法、枚举法得到,最小公倍数用两个数之积除以最大公约数即可获得。 方式一——辗转相除法: 思路: (1)将两整数求余 a%b = x; (2)如果x = 0;则b为最大公约数; (3)如果x != 0,则 a = b、b = x,继续从1开始执行。 该循环是否继续的判断条件是**x是否为0**。 代码如下: #include <stdio.h> int main(){ int m, n, gcd, mcm, mid; printf("Please input 2 numbers:\n"); scanf("%d %d", &m, &n); mid = m % n; mcm = m * n; while(mid != 0){ m = n; n = mid; mid = m % n; } gcd = n; mcm /= gcd; printf("Greatest common divisor is %d\nMinimum common multiple is %d\n", gcd, mcm); return 0; } 打印: Please input 2 numbers: 12 45 Greatest common divisor is 3 Minimum common multiple is 180 方式二——辗转相减法: 思路: (1)如果a>b ,a = a - b; (2)如果b>a ,b = b - a; (3)假如a = b ,则 a或b 是最大公约数; (4)如果a != b,则继续相减,直至a = b。 代码如下: #include <stdio.h> int main(){ int m, n, gcd, mcm; printf("Please input 2 numbers:\n"); scanf("%d %d", &m, &n); mcm = m * n; while(m != n){ if(m > n){ m -= n; } else if(m < n){ n -= m; } } gcd = m; mcm /= gcd; printf("Greatest common divisor is %d\nMinimum common multiple is %d\n", gcd, mcm); return 0; } 打印: Please input 2 numbers: 18 56 Greatest common divisor is 2 Minimum common multiple is 504 方式三——枚举法: 思路: (1)min为a、b中最小的一个数; (2)分别用a、b对i求余数,即看是否能被整除; (3)直到a、b同时都能被i整除; (4)如不能整除,i加1、继续开始执行,直到i等于min。 代码如下: #include <stdio.h> int main(){ int m, n, gcd, mcm, min, i; printf("Please input 2 numbers:\n"); scanf("%d %d", &m, &n); mcm = m * n; min = m > n ? n : m; for(i = 1; i <= min; ){ if(m % i == 0 && n % i == 0){ gcd = i; } i++; } mcm /= gcd; printf("Greatest common divisor is %d\nMinimum common multiple is %d\n", gcd, mcm); return 0; } 打印: Please input 2 numbers: 28 70 Greatest common divisor is 14 Minimum common multiple is 140 ## 习题17 ## > 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 实现思路: 使用循环和条件判断。 代码如下: #include <stdio.h> int main(){ int digit = 0, space = 0, chara = 0, other = 0; char inchar; while((inchar = getchar()) != '\n'){ if(inchar >= 'a' && inchar <= 'z' || inchar >= 'A' && inchar <= 'Z'){ chara++; } else if(inchar >= '0' && inchar <= '9'){ digit++; } else if(inchar == ' '){ space++; } else{ other++; } } printf("char = %d, digit = %d, space = %d, other = %d\n", chara, digit, space, other); return 0; } 打印: zxcvb 123 #$% ASDFG!@ #$% char = 10, digit = 3, space = 4, other = 8 ## 习题18 ## > 求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。 > 例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 实现思路: 先计算出每一项的值,再相加。 代码如下: #include <stdio.h> #include <math.h> int main(){ int gen_num(int a, int i); int a, n, sum, i; printf("Please input a and n: "); scanf("%d %d", &a, &n); for(i = 1; i <= n; i++){ sum += gen_num(a, i); } printf("sum = %d\n", sum); return 0; } int gen_num(int a, int i){ int j, num = 0; for(j = 1; j <= i; j++){ num += a * pow(10, j - 1); } return num; } 打印: Please input a and n: 3 7 sum = 3703701 ## 习题19 ## > 一个数如果恰好等于它的因子之和,这个数就称为完数。 > 例如6=1 + 2 + 3,所以6是完数。 > 编程找出1000以内的所有完数。 实现思路: 循环和判断相结合。 代码如下: #include<stdio.h> #define N 1000 int main(){ int i,j,k,n,sum; int a[256]; for(i=2;i<=N;i++){ sum=a[0]=1; k=0; for(j=2;j<=(i/2);j++){ if(i%j==0){ sum+=j; a[++k]=j; } } if(i==sum){ printf("%d=%d",i,a[0]); for(n=1;n<=k;n++) printf("+%d",a[n]); printf("\n"); } } return 0; } 打印: 6=1+2+3 28=1+2+4+7+14 496=1+2+4+8+16+31+62+124+248 ## 习题20 ## > 一球从100米高度自由落下,每次落地后反跳回原高度的一半、再落下,求它在第 10 次落地时,共经过多少米?第 10 次反弹多高? 实现思路: 简单循环实现。 代码如下: #include<stdio.h> #define N 1000 int main(){ float sum = 100, height = 100, i; for(i = 1; i < 10; i++){ height /= 2.0; sum += (height * 2); } printf("Sum = %10.6f\nHeight = %10.6f", sum, height / 2.0); return 0; } 打印: Sum = 299.609375 Height = 0.097656 [https_www.bilibili.com_video_BV1RZ4y1n75v]: https://www.bilibili.com/video/BV1RZ4y1n75v
相关 大学生必学练习题 - C 语言经典50例 [原文][Link 1] > 我是陈皮,一个在互联网 Coding 的 ITer,微信搜索「陈皮的JavaLib」第一时间阅读最新文章,回复【资料】,即可获得我精心整理的技术 柔情只为你懂/ 2023年10月02日 06:22/ 0 赞/ 70 阅读
相关 C语言基础习题50例(十)46-50 文章目录 习题46 习题47 习题48 习题49 习题50 > 知足常足,终身不辱。 > 月圆缺 以你之姓@/ 2023年02月20日 03:28/ 0 赞/ 64 阅读
相关 C语言基础习题50例(九)41-45 文章目录 习题41 习题42 习题43 习题44 习题45 毕业季、期末已至,不用为论文查重烦恼,让 Dear 丶/ 2023年02月18日 14:10/ 0 赞/ 50 阅读
相关 C语言基础习题50例(八)36-40 文章目录 习题36 习题37 习题38 习题39 习题40 不会玩阴阳师,但我照样带你一键下载所有卡 Bertha 。/ 2023年02月17日 03:17/ 0 赞/ 68 阅读
相关 C语言基础习题50例(七)31-35 文章目录 习题31 习题32 习题33 习题34 习题35 ![头条号 cuter科利][cu Love The Way You Lie/ 2023年02月16日 06:03/ 0 赞/ 59 阅读
相关 C语言基础习题50例(五)21-25 文章目录 习题21 习题22 习题23 习题24 习题25 你不得不学的职场高效表达训练 [h - 日理万妓/ 2023年02月14日 13:23/ 0 赞/ 82 阅读
相关 C语言基础习题50例(四)16-20 文章目录 习题16 习题17 习题18 习题19 习题20 Python基础特训 12节课从0起步掌 £神魔★判官ぃ/ 2023年02月14日 07:45/ 0 赞/ 76 阅读
相关 C语言基础习题50例(三)11-15 文章目录 习题11 习题12 习题13 练习14 习题15 ![你们看出什么了吗][20200 落日映苍穹つ/ 2023年02月14日 02:34/ 0 赞/ 63 阅读
相关 C语言基础习题50例(二)6-10 文章目录 习题6 习题7 习题8 习题9 习题10 Spark大数据实战——大数据集训营的先导课 港控/mmm°/ 2023年02月13日 08:58/ 0 赞/ 87 阅读
相关 C语言基础习题50例(一)1-5 文章目录 习题1 习题2 习题3 习题4 习题5 > 虎为百兽尊,罔敢触其怒。 > 惟有父子情, ╰+攻爆jí腚メ/ 2023年02月12日 15:30/ 0 赞/ 154 阅读
还没有评论,来说两句吧...