题目链接

A - C语言实验——求绝对值(选择结构)

使用if选择语句, 大于等于 0 直接输出, 小于 0 输出 -x 即可

拓展: 求绝对值的函数

<math.h>头文件下有abs() 和 fabs() 两个函数, 分别可以返回整数和浮点型的原数的绝对值

code A

//if分支语句
#include <stdio.h>int main()
{int x;scanf("%d", &x);if(x >= 0) printf("%d", x);else printf("%d", -x);return 0;
}
//使用abs()函数
#include <stdio.h>
#include <math.h>
int main()
{int x;scanf("%d", &x);printf("%d", abs(x));return 0;
}

B - C语言实验——时间间隔

  • 我们可以使用统一单位的方法, 把两个时间段统一化成秒为单位
  • 根据两个时间化成秒后的大小, 可以通过交换, 让较小的时间在前面
  • 将两个时间作差得到两个时间的差值, 再将其还原成小时和分钟
  • 时间是60进制, 可以类比10进制的方式思考
  • 一个三位的十进制数, % 10 得到的是个位, / 10 得到的是个位之前的数, / 100得到的是百位, % 100 得到的是去掉最高位后剩下的数, 如123, 百位为123 / 100 = 1, 个位为123 % 10 = 3, 可以理解成, /10就是从十位切一刀, 然后取前半部分; 而 %10 相当于从10位切一刀, 然后取后半部分, 这样想得到中间的数字, 可以从后往前取, 也就是123 / 10 = 12, 12 % 10 = 2; 也可以从前往后取, 也就是123 % 100 = 23, 23 / 10 = 2;
  • 按照同样的方式, 从我们已经得到的10进制的时间差, 转换为3位(时、分、秒) 的60进制 时间, 记时间差为t, 时 = t / 3600, 秒 = t % 60, 分 = t / 60 % 60 (从后往前) 或 分 = t % 3600 / 60(从前往后)

code B

#include <stdio.h>int main()
{int h1, m1, s1; //第一个时间的时分秒int h2, m2, s2; //第二个时间的时分秒scanf("%d:%d:%d", &h1, &m1, &s1);scanf("%d:%d:%d", &h2, &m2, &s2);int t1 = h1 * 3600 + m1 * 60 + s1;int t2 = h2 * 3600 + m2 * 60 + s2; //将两个时间转换成以秒为单位if(t1 > t2) //如果t1大,交换t1和t2,目的是让t2 >= t1, 直接用t2 - t1求时间差 (当然也可以用abs(t1 - t2)求时间差) {int t = t1;t1 = t2;t2 = t;}int t = t2 - t1; //t为时间差, 交换后t2一定比t1大printf("%02d:%02d:%02d", t / 3600, t / 60 % 60, t % 60);return 0;
}

C - C语言实验——求两个整数之中较大者

用if来判断较大值即可

code C

#include <stdio.h>int main()
{int a, b, max;scanf("%d %d", &a, &b);if(a > b) max = a;else max = b;printf("max=%d", max); return 0;
}

D - 小鑫吃苹果

跟上题相同, 都是找两个数的最大值, 直接if比较即可

code D

#include <stdio.h>int main()
{int a, b, max;scanf("%d %d", &a, &b);if(a > b) max = a;else max = b;printf("%d", max); return 0;
}

E - 小鑫の日常系列故事(一)——判断对错

仍然是直接用if判断c是否等于a + b之和

code E

#include <stdio.h>int main()
{int a, b, c;scanf("%d %d %d", &a, &b, &c);if(c == a + b) printf("YES\n");else printf("NO\n");return 0;
}

F - 小鑫追女神

判断输入是0是1即可, 可以直接用简写, if(n) 表示n != 0, if(!n) 表示n == 0

code F

#include <stdio.h>int main()
{int n;scanf("%d", &n);if(n) printf("I like you");else printf("He he");return 0;
}

G - C语言实验——求三个整数的最大值

可以对三个数排序, 排序完之后最大值最小值中间值就都可以求了;
也可以用打擂法来求max,min, 也就是初始化一个非常小的max(非常大的min), 遇到更大的(更小的)更新这个值, 最后留下的即为这些值全部的最大值or最小值, 在循环和数组章节中会经常见到打擂法

知识点: 三个数排序

对三个数排序, 最多需要3个if即可, 首先比较ab, 然后比较bc, 最后再比较一次ab
如要让a b c从小到大排序 (a < b < c)
首先比较是否a > b, 如果是则交换a b, 交换后b的值为a和b中的较大值
然后比较是否b > c, 如果是则交换b c, 交换后c的值为b和c中的较大值, 此时的c一定为a b c中的最大值
最后比较是否a > b, 如果是则交换a b, 交换后满足a <= b, 而c已经确保为三个数中的最大值了, 排序完成

code G

//排序
#include <stdio.h>int main()
{int a, b, c;scanf("%d,%d,%d", &a, &b, &c);if(a > b){int t = a;a = b;b = t;} if(b > c){int t = b;b = c;c = t;} if(a > b){int t = a;a = b;b = t;}printf("max=%d", c); //交换完之后c为maxreturn 0;
}
//打擂法可以求max或者min
#include <stdio.h>int main()
{int a, b, c;scanf("%d,%d,%d", &a, &b, &c);int max = -2e9; // 表示2 * 10的9次方, 为max初始化一个极小的数if(a > max) max = a;if(b > max) max = b;if(c > max) max = c;printf("max=%d", max); //交换完之后c为maxreturn 0;
}

H - 相加和最大值

可以对三个数排序, 最大的两个数相加的和一定是最大的;
也可以分别两两求和, 再求最大值

code H

#include <stdio.h>int main()
{int a, b, c;scanf("%d %d %d", &a, &b, &c);if(a > b){int t = a;a = b;b = t;} if(b > c){int t = b;b = c;c = t;} if(a > b){int t = a;a = b;b = t;}printf("%d", b + c); //最大俩数加起来一定是最大的和return 0;
}
//俩俩求和, 这里还是用的与上题相同的打擂法的思想
#include <stdio.h>int main()
{int a, b, c;scanf("%d %d %d", &a, &b, &c);int max = -2e9; // 表示2 * 10的9次方, 为max初始化一个极小的数if(a + b > max) max = a + b;if(b + c > max) max = b + c;if(c + a > max) max = c + a;printf("%d", max); return 0;
}

I - 时间格式转换

只需要分类表示每一种情况即可, 注意用%02d控制输出的格式, 这个题时不能用%02d,分需要用%02d

code I

//简化版, 需要处理好边界
#include <stdio.h>int main()
{int h, m;scanf("%d:%d", &h, &m);int hh, mm = m;//转换后的时和分, 分和原来的分相同//按照h来分类if(h == 0 || h == 12) hh = 12; //h = 0和h = 12两个条件可以合并else if(h <= 11) hh = h; //h >= 1这个条件可以省略不写else hh = h - 12; //除此之外的时间即为h >= 13 到 h <= 23之内的if(h < 12) printf("%d:%02d AM", hh, mm); //注意后面的AM和PMelse printf("%d:%02d PM", hh, mm);return 0;
}
//详细版, 如果不好考虑边界条件可以完完全全按照题目说的来写
#include <stdio.h>int main()
{int h, m;scanf("%d:%d", &h, &m);int hh, mm;if(h == 0) hh = 12;else if(h >= 1 && h <= 11) hh = h;else if(h == 12) hh = 12;else if(h >= 13 && h <= 24) hh = h - 12;mm = m;if((h == 0) || (h >= 1 && h <= 11)) printf("%d:%02d AM", hh, mm);if((h == 12) || (h >= 13 && h <= 23)) printf("%d:%02d PM", hh, mm);return 0;
}

J - C语言实验——从大到小输出a、b、c(选择结构)

按照G思路对三个数排序即可

code J

#include <stdio.h>int main()
{int a, b, c;scanf("%d%d%d", &a, &b, &c);if(a > b){int t = a;a = b;b = t;}if(b > c){int t = b;b = c;c = t;}if(a > b){int t = a;a = b;b = t;}printf("%d %d %d", c, b, a);return 0;
}

K - C语言实验——三个数排序

与上一个题完全相同, 输入中间是逗号

code K

#include <stdio.h>int main()
{int a, b, c;scanf("%d,%d,%d", &a, &b, &c);if(a > b){int t = a;a = b;b = t;}if(b > c){int t = b;b = c;c = t;}if(a > b){int t = a;a = b;b = t;}printf("%d %d %d", a, b, c);return 0;
}

L - C语言实验——找中间数

仍像G或前两个题一样, 对三个数进行排序, 输出中间值即可

code L

#include <stdio.h>int main()
{int a, b, c;scanf("%d%d%d", &a, &b, &c);if(a > b){int t = a;a = b;b = t;}if(b > c){int t = b;b = c;c = t;}if(a > b){int t = a;a = b;b = t;}printf("%d", b);return 0;
}

M - C语言实验——整除

用&&(与)把两个条件连起来即可

ps: 当你找不到wa哪里的时候不妨看看是不是输出大小写的问题

code M


#include <stdio.h>int main()
{int n;scanf("%d", &n);if(n % 5 == 0 && n % 3 == 0) printf("Yes");else printf("No");return 0;
}

N - 闰年

判断闰年的条件: 能被400整除 或者 能被4整除但不能被100整除

code N

#include <stdio.h>int main()
{int n;scanf("%d", &n);if(n % 400 == 0 || n % 4 == 0 && n % 100) printf("Yes");else printf("No");return 0;
}

O - C/C++经典程序训练3—模拟计算器

知识点: 吃掉行末空格

scanf %c 不会跳过空白符(如空格’ ‘或换行符’\n’), 因此当数字后面有换行符(或空格)而后需要读入字母的时候需要吃掉行末换行符(空格符)

  • 可以用getchar()直接吃掉行末的换行或者空格
  • 可以设一个无关char类型变量, 然后用scanf %c 吃掉换行或者空格

code O

#include <stdio.h>int main()
{int a, b;char c;scanf("%d%d", &a, &b);getchar(); //吃掉行末换行scanf("%c", &c);int ans;if(c == '+') ans = a + b;else if(c == '-') ans = a - b;else if(c == '*') ans = a * b;else ans = a / b;printf("%d", ans); return 0;
}

P - C语言实验——某年某月的天数

注意判断闰年即可
可以用switch case语句来写, 注意在除最后一个分支下添加break即可

code P

#include <stdio.h>
int main()
{int y, m;scanf("%d\\%d", &y, &m);if(m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) printf("31");else if(m == 4 || m == 6 || m == 9 || m == 11) printf("30");else //二月需要特别处理{if(y % 400 == 0 || y % 4 == 0 && y % 100 != 0) printf("29");else printf("28");}return 0;
}
//switch case写
#include <stdio.h>
int main()
{int y, m;scanf("%d\\%d", &y, &m);switch(m){case 1: case 3: case 5: case 7: case 8: case 10: case 12:printf("31");break;case 4: case 6: case 9: case 11:printf("30");break;default:if(y % 400 == 0 || y % 4 == 0 && y % 100 != 0) printf("29");else printf("28");}return 0;
}

Q - C语言实验——输入数字星期,输出英文(switch语句)

  • switch-case 语句记得在除了最后一条分支以外的所有分支加上break, break相当于switch的开关,不加的话switch会一直往下滑, 并输出滑过的所有结果

code Q

#include <stdio.h>
int main()
{int d;scanf("%d", &d);switch(d){case 1: printf("Monday");break;case 2:printf("Tuesday");break;case 3:printf("Wednesday");break;case 4:printf("Thursday");break;case 5:printf("Friday");break;case 6:printf("Saturday");break;case 7: //可以写defaultprintf("Sunday"); //最后一个可以不加break}return 0;
}

题解仅供参考, 一定要多敲多思考!!! 有问题欢迎在评论区指出或单独联系我!

【C语言入门】SDUT《程序设计基础I 》实验2-选择结构程序设计题解 c语言语法讲解相关推荐

  1. c语言选择结构程序设计报告,《C语言程序设计》实验报告选择结构程序设计.doc...

    <C语言程序设计>实验报告选择结构程序设计.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会 ...

  2. 桂 林 理 工 大 学实 验 报 告实验四 选择结构程序设计

    桂 林 理 工 大 学 实  验  报  告 班级 计算机类 学号3202052 姓名  实验名称实验四 选择结构程序设计          日期  2020年 11月22 日 一.实验目的: 熟悉掌 ...

  3. c语言中描述y是奇数,4章选择结构程序设计C语言入门习题

    C语言入门习题 第四章 选择结构程序设计 一.选择题 1.有以下程序 main() { int i=1,j=2,k=3; if(i++==1&&(++j==3||k++==3)) pr ...

  4. c语言已知祖父年龄70,实验三循环结构程序设计.doc

    实验三循环结构程序设计 实验三 循环结构程序设计 一.实验目的 (1) 掌握while.do~while.for语句的使用. (2) 掌握循环体内使用break.continue语句的作用. (3) ...

  5. c语言选择结构程序设计笔记,C语言选择结构程序设计.ppt

    <C语言选择结构程序设计.ppt>由会员分享,可在线阅读,更多相关<C语言选择结构程序设计.ppt(32页珍藏版)>请在人人文库网上搜索. 1.选择结构程序设计,关系运算符和关 ...

  6. c语言选择结构程序设计报告,C语言学习与总结---第四章:选择结构程序设计

    选择结构程序设计 4.1 if语句 4.2 关系运算符和关系表达式 4.2.1 关系运算符 4.2.2 关系表达式 4.3 逻辑运算符和逻辑表达式 4.3.1 逻辑运算符 4.3.2 逻辑表达式 4. ...

  7. 【实验2 选择结构】7-3 sdut-C语言实验-时间间隔

    7-3 sdut-C语言实验-时间间隔 分数 20 全屏浏览题目 切换布局 作者 马新娟 单位 山东理工大学 从键盘输入两个时间点(24小时制),输出两个时间点之间的时间间隔,时间间隔用"小 ...

  8. 【实验2 选择结构】7-9 sdut-C语言实验-三位数整数的各位数字

    7-9 sdut-C语言实验-三位数整数的各位数字 分数 15 全屏浏览题目 切换布局 作者 马新娟 单位 山东理工大学 本题要求编写程序,输入一个三位数的正整数,并输出它的个位数字.十位数字和百位数 ...

  9. 【实验2 选择结构】7-4 sdut-C语言实验——求两个整数之中较大者

    7-4 sdut-C语言实验--求两个整数之中较大者 分数 12 全屏浏览题目 切换布局 作者 马新娟 单位 山东理工大学 输入两个整数,请编程求其中的较大者. 输入格式: 在一行中输入用空格隔开的两 ...

最新文章

  1. 如何理解python的类与对象
  2. java获取随机值的方法
  3. js字符串转化为方法调用
  4. 【Python】while里面是负数时条件还为真吗?
  5. linux下手动删除数据库实例
  6. bitmap与memoryStream转换bug
  7. react构建_您应该了解的有关React的一切:开始构建所需的基础知识
  8. 前端基础3-1——JavaScript
  9. 《C程序设计语言》-第2章-习题
  10. STM32H743+CubeMX-串口重定向printf
  11. Android中的Intent详细讲解【转】
  12. coreseek mysql_centos+php+coreseek+sphinx+mysql之一coreseek安装篇
  13. 标准偏差公式c语言,C语言 求标准偏差
  14. MATLAB线性方程组的两种求解,matlab求解线性方程组
  15. app用户注册、登录原理、注册页面
  16. u盘linux反应好慢,识别U盘很缓慢怎么办的八种解决方法
  17. html5+资源甘特图,VARCHART XGantt VSW资讯:HTML5甘特图中的各个资源工作时间
  18. Delphi使用ADOconnection连接mysql数据库时的Connectionstring问题
  19. 手动进行释放内存的API
  20. 申请计算机课代表,课代表申请书的格式是怎样的啊???

热门文章

  1. 杭电1856——并差集
  2. 海思3559万能平台搭建:OSD功能的优化
  3. spydroid-ipcamera-master.zip
  4. 对于特殊轨道,是否违反泡利不相容原理?
  5. 织梦DedeCMS采集图片路径怎么按月存放
  6. 二月,适合一个人去的旅行地
  7. LI雨骤Moku:Go M1初步体验
  8. React Native Android随笔日记
  9. 瑞克斯平台国际时事汇总
  10. 卓有成效的团队建设经验与见解 Team Leader你会带团队吗?