news 2026/8/22 17:54:34

分支和循环基础编程题练习2

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
分支和循环基础编程题练习2

1.写代码将三个整数数按从大到小输出。

例如:

输入:2 3 1

输出:3 2 1

第一种方法:

首先输入三个数,然后判断a是不是最大的,如果是,再判断b和c之间谁大;如果不是,则判断b和c谁是最大的,之后同理。代码如下:

int main() { /*写代码将三个整数数按从大到小输出。 例如: 输入:2 3 1 输出:3 2 1*/ int a, b, c = 0; scanf("%d %d %d", &a,&b,&c); if (a > b && a > c) { if (b >= c) { printf("%d %d %d\n", a, b, c); } else { printf("%d %d %d\n", a, c, b); } } else if (b > a && b > c) { if (a >= c) { printf("%d %d %d\n", b, a, c); } else { printf("%d %d %d\n", b, c, a); } } else if (c > a && c > b) { if (a >= b) { printf("%d %d %d\n", c, a, b); } else { printf("%d %d %d\n", c, b, a); } } else { printf("%d %d %d\n", a, b, c); } return 0; }

第二种方法:

比较a和b的大小,如果b大,则交换a和b的值,如果a大,再比较a和c的大小,如果c大,交换a和c的值,之后再比较b和c的值,如果c大,交换b和c的值,最后依次输出a,b,c。代码如下:

//方法二 int main() { int a, b, c = 0; scanf("%d %d %d", &a, &b, &c);////如果这里加上scanf会导致进入循环后输入的数据被丢弃,导致程序无法执行 while (scanf("%d %d %d", &a, &b, &c)!=EOF) { if (a < b) { int i = a; a = b; b = i; } if (a < c) { int i = a; a = c; c = i; } if (b < c) { int i = b; b = c; c = i; } printf("%d %d %d\n", a, b, c); } return 0; }

2.下面代码的执行结果是什么( )

#include <stdio.h> int main() { int x = 3; int y = 3; switch (x % 2) { case 1: switch (y) { case 0: printf("first"); case 1: printf("second"); break; default: printf("hello"); } case 2: printf("third"); } return 0; }

A.secondthird

B.hello

C.firstsecond

D.hellothird

答案解析:

switch语句时多分支的选择语句,switch中表达式结果命中那个case,就执行该case子项,如果case子项后没有跟break语句,则继续往下执行。

关于该题解析,请看以下注解:

#include <stdio.h> int main() { int x = 3; int y = 3; switch (x % 2) { // x%2的结果为1,因此执行case1 case 1: switch (y) // y是3,因此会执行case3,而case3不存在,那只能执行default { case 0: printf("first"); case 1: printf("second"); break; default: printf("hello"); // 打印hello,打印完之后,内部switch结束,此时外部case1结束 } // 因为外部case1之后没有添加break语句,所以继续执行case2 case 2: // 打印third printf("third"); // 外部switch结束 } return 0; }

即:先在内部switch的default位置打印hello,紧接着在外部case2中打印third

因此:选择D

3.KiKi想知道,已经给出的三条边 aa、bb、cc 能否构成一个非退化三角形,如果能构成,判断三角形的类型(等边三角形、等腰三角形或普通三角形)。

【名词解释】
非退化三角形:三条边长均大于 00 且任意两边之和均大于第三边的三角形。

输入描述:

在一行上输入三个整数 a,b,c(0<a,b,c<10)a,b,c(0<a,b,c<10),表示三角形的三条边。

输出描述:

在一行上输出一个字符串,表示三角形的类型,具体地:
∙ ∙如果三角形是等边三角形,则输出 Equilateral triangle!Equilateral triangle!;
∙ ∙如果三角形是等腰三角形,则输出 Isosceles triangle!Isosceles triangle!;
∙ ∙如果三角形是普通三角形,则输出 Ordinary triangle!Ordinary triangle!;
∙ ∙如果不能构成非退化三角形,则输出 Not a triangle!Not a triangle!。

解题思路:

首先判断是不是等边三消息,如果是则输出,如果不是再判断是不是等腰三角形,如果是则输出,如果不是则后面类推,代码如下:

#include <stdio.h> int main() { int a = 0; int b = 0; int c = 0; while(~scanf("%d %d %d", &a, &b, &c)) { if((a+b>c) && (a+c>b) && (b+c>a)) { //三角形 if(a==b && b==c)//等边三角形 { printf("Equilateral triangle!\n"); } else if(((a==b)&&(b!=c)) || ((a==c)&&(c!=b)) || ((b==c)&&(c!=a)))//等腰 { printf("Isosceles triangle!\n"); } else { printf("Ordinary triangle!\n"); } } else { //不是三角形 printf("Not a triangle!\n"); } } return 0; }

4.计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果

解题思路:

1. 从上述表达式可以分析出
a. 该表达式主要由100项,基数项为正,偶数项为负
2. 设置一个循环从1~100,给出表达式中的每一项:1.0/i, 注意此处不能使用1,否则结果全部为0
然后使用flag标记控制奇偶项,奇数项为正,偶数项为负
然后将所有的项相加即可

代码如下:

#include <stdio.h> int main() { int i = 0; double sum = 0.0; int flag = 1; for (i = 1; i < 100; i++) { sum = sum + (1.0 / i) * flag;//如果不是double类型会导致后面计算结果都为0 flag = -flag; } printf("%lf\n", sum); return 0; }

5.编写程序数一下 1到 100 的所有整数中出现多少个数字9

解题思路:

1. 给一个循环从1遍历到100,拿到每个数据后进行一下操作
2. a. 通过%的方式取当前数据的个位,检测个位数据是否为9
如果是,给计数器加1
b. 通过/的方式取当前数据的十位,检测十位数据是否是9,
如果是,给计数器加1
循环一直继续,直到所有的数据检测完,所有9的个数已经统计在count计数中。

代码如下:

#include <stdio.h> int main() { int i = 0; int count = 0; for (i = 1; i <= 100; i++) { if (i % 10 == 9) { count++; } if (i / 10 == 9)//if前面不要加else,不然轮到99时,执行完前面的if就不会执行下个if了 { count++; } } printf("%d\n", count); return 0; }

6.打印1000年到2000年之间的闰年

解题思路:

要求1000年到2000年之间的闰年,只需要知道求解闰年的方法即可。
闰年的条件:如果N能够被4整除,并且不能被100整除,则是闰年
或者:N能被400整除,也是闰年
即:4年一润并且百年不润,每400年再润一次

代码如下:

#include <stdio.h> int main() { int year = 0; for(year=1000; year<=2000; year++) { if(((year%4==0)&&(year%100!=0))||(year%400==0)) { printf("%d ", year); } } return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 17:54:33

数学建模论文写作实战指南:从结构搭建到团队协作的完整心法

1. 从“写不出来”到“写得像样”&#xff1a;我的数学建模论文写作心路如果你参加过数学建模竞赛&#xff0c;或者正准备参加&#xff0c;大概率会和我有同样的感受&#xff1a;模型建得七七八八&#xff0c;代码也跑通了&#xff0c;但一到写论文环节&#xff0c;就感觉无从下…

作者头像 李华
网站建设 2026/8/22 17:53:50

Seraphine:免费的英雄联盟战绩查询与自动BP工具,3 步搞定配置

Seraphine&#xff1a;免费的英雄联盟战绩查询与自动BP工具&#xff0c;3 步搞定配置 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine Seraphine 是一款免费的英雄联盟战绩查询工具&#xff0c;基于拳头官方 L…

作者头像 李华
网站建设 2026/8/22 17:48:36

GTweak开源工具:Windows系统优化与隐私保护一键配置指南

在实际 Windows 系统管理和维护中&#xff0c;我们常常面临一系列琐碎但重要的工作&#xff1a;新系统需要激活、预装软件占用资源需要清理、隐私设置需要加固、系统性能需要调优&#xff0c;甚至界面也需要个性化调整。这些任务分散在系统设置、组策略、注册表、PowerShell 脚…

作者头像 李华
网站建设 2026/8/22 17:47:05

数学建模竞赛全攻略:题型解析与模型工具箱实战指南

1. 项目概述&#xff1a;数学建模竞赛的“题型地图”与“解题工具箱” 刚接触数学建模竞赛的同学&#xff0c;最常问我的一个问题就是&#xff1a;“学长/学姐&#xff0c;这个比赛到底考什么&#xff1f;我该怎么准备&#xff1f;” 这背后反映的&#xff0c;其实是对竞赛题型…

作者头像 李华
网站建设 2026/8/22 17:45:11

表格数据建模:为何XGBoost等树模型常优于深度学习?

1. 项目概述&#xff1a;一场经典与现代的算法对决在数据科学和机器学习的实战领域&#xff0c;有一个现象长期存在&#xff0c;却常常让刚入行的朋友感到困惑&#xff1a;面对结构规整的表格数据&#xff0c;比如我们日常处理的销售报表、用户信息表、实验测量数据等&#xff…

作者头像 李华