C语言:练习 桃扇骨 2023-10-14 10:56 55阅读 0赞 ![0843c259fb2b4bfe861deadd6b7719de.png][] **目录** 题一 题二 题三 题四 题五 题六 题七 题八 题九: 题十 题十一: 题十二: 做错的选择题: 当然这些只是个人的见解,并不是最佳解,欢迎大家互相讨论! -------------------- ## 题一:求最大值 ## 写一个函数求两个整数的较大值 如: 输入:10 20 输出较大值:20 #include <stdio.h> int Compare(int x, int y) { return x > y ? x : y; } int main() { int a = 0; int b = 0; scanf("%d %d", &a, &b); int big = 0; big = Compare(a,b); printf("%d\n", big); return 0; } ## 题二:小乐乐上楼 ## 小乐乐学校教学楼的电梯前排了很多人,他的前面有n个人在等电梯。 电梯每次可以乘坐12人,每次上下需要的时间为4分钟(上需要2分钟,下需要2分钟)。 请帮助小乐乐计算还需要多少分钟才能乘电梯到达楼上。(假设最初电梯在1层) #include <stdio.h> int main() { int n = 0; int time = 0; scanf("%d", &n); n = n + 1; while (n > 0) { if (n > 12) { time += 4; n -= 12; } else { time += 2; break; } } printf("%d\n", time); return 0; } 更简洁的方法: #include <stdio.h> int main() { int n = 0; scanf("%d", &n); printf("%d\n", n/12*4+2); return 0; } ## 题三:返回值 ## KiKi写了一个输出“Hello world!”的程序,BoBo老师告诉他printf函数有返回值, 你能帮他写个程序输出printf(“Hello world!”)的返回值吗? #include <stdio.h> int main() { int n = printf("Hello world!"); printf("\n%d", n); return 0; } ## 题四:判断三角形 ## KiKi想知道已经给出的三条边a,b,c能否构成三角形,如果能构成三角形, 判断三角形的类型(等边三角形、等腰三角形或普通三角形)。 #include <stdio.h> int main() { int a = 0; int b = 0; int c = 0; while (scanf("%d %d %d", &a, &b, &c) == 3) { if (a + b > c && a + c > b && b + c > a) { if ((a == b && a != c) || (a == c && a != b) || (b == c && b != a)) { printf("Isosceles triangle!\n"); } else if (a == b && a == c) { printf("Equilateral triangle!\n"); } else { printf("Ordinary triangle!\n"); } } else printf("Not a triangle!\n"); } return 0; } ## 题五:BMI指数 ## 计算BMI指数(身体质量指数)。[BMI指数][BMI](即身体质量指数,简称体质指数又称[体重][Link 1],英文为Body Mass Index,简称BMI),是用体重公斤数除以身高米数平方得出的数字,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。主要用于[统计][Link 2]用途,当我们需要比较及分析一个人的体重对于不同高度的人所带来的健康影响时,[BMI值][BMI 1]是一个中立而可靠的[指标][Link 3]。 #include <stdio.h> #include <math.h> int main() { int kg = 0; int cm = 0; float BMI = 0; scanf("%d %d", &kg, &cm); BMI = kg / (cm/100.0) / (cm/100.0); printf("%.2f\n", BMI); return 0; } ## 题六:时间转换 ## 问题:一年约有 3.156×107 s,要求输入您的年龄,显示该年龄合多少秒。 #include <stdio.h> #include <math.h> int main() { long long age = 0; scanf("%ld", &age); age = age * (3.156 * pow(10, 7)); printf("%ld", age); return 0; } 更简洁的方法: #include <stdio.h> int main() { int age = 0; //输入 scanf("%d", &age); //计算 long sec = age*3.156e7; printf("%lld\n", sec); return 0; } ## 题七:睡眠计算 ## 输入现在的时刻以及要睡的时长k(单位:minute),中间用空格分开。 输入格式:hour : minute k(如hour或minute的值为1,输入为1,而不是01) (0 ≤ hour ≤ 23,0 ≤ minute ≤ 59,1 ≤ k ≤ 109) #include <stdio.h> int main() { int hour = 0; int minute = 0; int m = 0; char a = 0; scanf("%d%c%d %d", &hour, &a, &minute, &m); while (m >= 60) { if (m >= 60) { hour++; m -= 60; } if (hour == 24) { hour = 0; } } minute += m; if(minute >=60) { hour++; minute -= 60; } if (hour == 24) { hour = 0; } printf("%02d:%02d\n", hour, minute); return 0; } 更简洁的方法: #include <stdio.h> int main() { int h = 0; int m = 0; int k = 0; scanf("%d:%d %d", &h, &m, &k); h = ((m+k)/60+h)%24; m = (m+k)%60; printf("%02d:%02d\n", h, m); return 0; } ## 题八:打印三的倍数 ## 写一个代码打印1 - 100之间所有3的倍数的数字 #include <stdio.h> int main() { int i = 0; for (i = 1; i <= 100; i++) { if (i % 3 == 0) { printf("%d ", i); } } return 0; } ## 题九:排序 ## 写代码将三个整数数按从大到小输出。 例如: 输入:2 3 1 输出:3 2 1 #include <stdio.h> int main() { int arr[3] = { 0 }; int i = 0; int max = 0; for (i = 0; i < 3; i++) { scanf("%d",&arr[i]); } for (i = 1; i < 3; i++) { if (arr[0] <= arr[i]) { max = arr[0]; arr[0] = arr[i]; arr[i] = max; } } for (i = 0; i < 3; i++) { printf("%d ", arr[i]); } return 0; } ## 题十:素数 ## 写一个代码:打印100~200之间的素数 只能被1和本身整除的数 #include <stdio.h> #include <math.h> int main() { int i = 0; for (i = 100; i <= 200; i++) { int j = 0; for (j = 2; j < i; j++) { if (i % j == 0) break; } if (j == i) { printf("%d\n", i); } } return 0; } 更好的方法 int is_prime(int n) { int j = 0; for (j = 2; j <= sqrt(n); j++) { if (n % j == 0) { return 0; } } return 1; } int main() { int i = 0; int count = 0; for (i = 101; i <= 200; i += 2) { //判断i是否为素数 //是素数就打印 //拿2~i-1之间的数字去试除i if (is_prime(i)) { printf("%d ", i); count++; } } printf("\ncount = %d\n", count); return 0; } ## 题十一:判断闰年 ## 打印1000年到2000年之间的闰年 #include <stdio.h> int main() { int i = 0; int count = 0; for (i = 1000; i <= 2000; i++) { if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) { count++; printf("%d\n", i); } } printf("%d\n", count); return 0; } ## 题十二:最大公约数 ## 给定两个数,求这两个数的最大公约数 例如: 输入:20 40 输出:20 #include <stdio.h> int main() { int a = 0; int b = 0; int min = 0; int max = 0; int i = 0; scanf("%d %d", &a, &b); min = a > b ? b : a; max = a > b ? a : b; for (i = min; i > 0; i--) { if (max % i == 0) { printf("%d\n", i); break; } } return 0; } ## 做错的选择题: ## 关于if语句说法正确是:( ) A.if语句后面只能跟一条语句 B.if语句中0表示假,1表示真 C.if语句是一种分支语句,可以实现单分支,也可以实现多分支 D.else语句总是和它的对齐的if语句匹配 A:错误,if之后可以跟多条语句,跟多条语句时需要使用\{\}括起来 B:错误,0表示假,非零表示真 C:正确 D:不一定,要看具体的代码,如果代码不规范,可能没有对齐 下面那个不是转义字符? A.'\\n' B.'\\060' C.'\\q' D.'\\b' A:'\\n' 转义字符,代表换行 B:'\\060' 转义字符,060八进制数据,十进制为48,表示ASCII码为48的'0' C:'\\q' 什么都不是 D:'\\b' 转义字符,表示退格 下面代码的结果是:( ) #include <stdio.h> #include <string.h> int main() { char arr[] = {'b', 'i', 't'}; printf("%d\n", strlen(arr)); return 0; } A.3 B.4 C.随机值 D.5 strlen是用来获取字符串的有效长度的,结尾标记'\\0'不包含在内。 strlen获取的规则非常简单:从前往后依次检测,直到遇到'\\0'是就终止检测。 关于C语言关键字说法正确的是:( ) A.关键字可以自己创建 B.关键字不能自己创建 C.关键字可以做变量名 D.typedef不是关键字 A:错误,关键字是语言自身定义的 B:正确 C:错误,关键字具有特殊含义,不能作为变量名 D:错误,typedef是用来给类型取别名的关键字 关于static说法不正确的是:( ) A.static可以修饰局部变量 B.static可以修全局变量 C.static修饰的变量不能改变 D.static可以修饰函数 C:错误,const修饰的变量不能改变 ### 当然这些只是个人的见解,并不是最佳解,欢迎大家互相讨论! ### [0843c259fb2b4bfe861deadd6b7719de.png]: https://img-blog.csdnimg.cn/0843c259fb2b4bfe861deadd6b7719de.png [BMI]: http://baike.baidu.com/view/966047.htm [Link 1]: http://baike.baidu.com/view/665426.htm [Link 2]: http://baike.baidu.com/view/8163.htm [BMI 1]: http://baike.baidu.com/view/1052817.htm [Link 3]: http://baike.baidu.com/view/605645.htm
相关 C 语言练习分享 c语言的一些小练习,可以多思考,多看看 1. 按下面对公式求sum的值:Sum=1-2+3-4+5-6+……+99-100 define _CR... 心已赠人/ 2024年04月17日 11:39/ 0 赞/ 73 阅读
相关 C语言:练习 ![c7267eaea5be4f8f8138b648012a94e0.png][]题一:宏实现计算偏移量 写一个宏,计算结构体中某变量相对于首地址的偏移,并给出说明 偏执的太偏执、/ 2023年10月14日 14:53/ 0 赞/ 51 阅读
相关 C语言:练习 ![6a7277307c8d403ebdea1fd7a5e848ec.png][]题一:单身狗 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 编写一个 悠悠/ 2023年10月14日 14:26/ 0 赞/ 48 阅读
相关 C语言:练习 ![378ecc7435ca463da653f7b4f53ad19c.png][] 题一:喝汽水 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少 缺乏、安全感/ 2023年10月14日 13:26/ 0 赞/ 56 阅读
相关 C语言:练习 ![f30c5ddd8ede4b9a887c5013e44f674f.png][] 题一:直接交换 交换两个变量(不创建临时变量) 不允许创建临时变量,交换两 梦里梦外;/ 2023年10月14日 12:59/ 0 赞/ 59 阅读
相关 C语言:练习 ![55a437787a0d4534b39a465dd4c8cb03.png][] 题一:模拟实现strlen strlen的模拟(递归实现) 递归和非递归分别 Bertha 。/ 2023年10月14日 11:41/ 0 赞/ 59 阅读
相关 C语言:练习 ![e731ca8449d34635908e5e3c8203deac.png][] 题一:九九乘法表 在屏幕上输出9\9乘法口诀表 %-d(加负号),在后面补空格 àì夳堔傛蜴生んèń/ 2023年10月14日 11:09/ 0 赞/ 60 阅读
相关 C语言:练习 ![0843c259fb2b4bfe861deadd6b7719de.png][] 目录 题一 题二 题三 题四 题五 题六 题七 题八 题九: 题十 桃扇骨/ 2023年10月14日 10:56/ 0 赞/ 56 阅读
相关 顺序栈 C语言练习 include <stdio.h> define bool char define true 1 define false 0 忘是亡心i/ 2022年12月03日 05:16/ 0 赞/ 171 阅读
相关 C语言小练习 C语言小练习 最近朋友问了几道关于C语言的题目,所幸花了一个晚上写了以下,问题如下: 1.一只老鼠咬坏了账本,公式中\[\]代表被老鼠咬掉的地方。要想恢复下面的等式, 蔚落/ 2021年12月22日 12:19/ 0 赞/ 445 阅读
还没有评论,来说两句吧...