【Educoder作业】C&C++函数实训

是不是学会了函数就可以做任何题了…

T1 登月纸桥

给出了函数的基本定义,可以在主函数上面定义函数,然后在主函数下面写函数。可能会显得可读性强一点?

#include <bits/stdc++.h>using namespace std;// foldTimes-计算建纸桥的折叠次数
// 参数:dis-星际距离(千米),thick-纸的厚度(毫米)
// 返回值:建桥需要折叠的次数
int foldTimes(double dis, double thick);int main()
{double dis, thick;cin >> dis >> thick;cout << "需要折叠" << foldTimes(dis,thick) << "次" << endl;return 0;
}int foldTimes(double dis, double thick)
{// 请在这里补充代码,实现函数foldTimes/********** Begin *********/int ans = 0;while (thick < dis * 1000 * 1000) thick *= 2, ans ++ ;return ans;/********** End **********/
}

T2 几点几分了?

这里拆解进制的手段用的是之前博客里的拆解十进制的手段。最高位用下取整的除法,低位用取模,中间位想办法变成高位或者低位即可。

#include <iostream>
using namespace std;void whatTime(int secs, int &h, int &m, int &s)
{// 请在这里补充代码,设计并实现函数whatTime,使main函数中的函数调用正确/********** Begin *********/h = secs / 3600;m = (secs - h * 3600) / 60;s = secs % 60;/********** End **********/
}int main()
{int secs;     // secs秒表上的秒数   int h, m, s;     // 当前时间:h-小时,m-分,s-秒cin >> secs;     // 输入秒表上的秒数whatTime(secs,h,m,s);     // 计算当前时间cout << h << ":" << m << ":" << s << endl;     // 输出当前时间return 0;
}

T3 这天星期几?

这种判断日期的题,首先是判闰年,其次是判月份。剩下的就没啥可说的了。

#include <iostream>using namespace std;// 函数leapYear
int leapYear(int y)
{if(y % 4 == 0 && y % 100 != 0 || y % 400 == 0)return 1;return 0;
}// 函数whatDay:计算某年某月某日是星期几
// 参数:year-年,month-月
// 返回值:--7分别表示星期一到星期日
int whatDay(int year, int month)
{// 请在这里补充代码,实现函数whatDay/********** Begin *********/int sum = 0;for (int i = 1; i < year; i ++ ) sum += 365 + leapYear(i);for (int i = 1; i < month; i ++ ) {if (i == 2) sum += 28 + leapYear(year);else if (i == 4 || i == 6 || i == 9 || i == 11) sum += 30;else sum += 31;}if ((sum + 1) % 7) return (sum + 1) % 7;else return 7;/********** End **********/
}int main()
{int y, m, xq;     // 年、月、星期几cin >> y >> m;     // 输入年月xq = whatDay(y,m);     // 计算星期几cout << y << "年" << m << "月1日是星期";     // 输出星期if(xq == 7)cout << "日" << endl;elsecout << xq << endl;return 0;
}

T4 打印日历

思路是这样的:先把这个月有多少天求出来,然后找到111号是星期几,之后顺序输出就行了,注意细节。

// 包含两种I/O库,可以使用任一种输入输出方式
#include <stdio.h>
#include <iostream>
using namespace std;// 函数printMonth:按要求的格式打印某年某月的日历
// 参数:year-年,month-月
// 返回值:无
void printMonth(int year, int month);// leapYear:判断闰年
// 参数:y-年
// 返回值:1-是闰年,0-不是闰年
int leapYear(int y)
{if(y % 4 == 0 && y % 100 != 0 || y % 400 == 0)return 1;return 0;
}// 函数whatDay:计算某年某月的1号是星期几
// 参数:year-年,month-月
// 返回值:1到7--星期1到星期日
int whatDay(int year, int month)
{// 1年月日是星期一int w = 1;int i;// 1到year-1都是全年for(i = 1; i < year; i++){if(leapYear(i))w += 366;elsew += 365;}switch(month){case 12: // 加月的w += 30;case 11: // 加月的w += 31;case 10: // 加月的w += 30;case 9:  // 加月的w += 31;case 8:  // 加月的w += 31;case 7:  // 加月的w += 30;case 6:  // 加月的w += 31;case 5:  // 加月的w += 30;case 4:  // 加月的w += 31;case 3:  // 加月的if(leapYear(year))w += 29;elsew += 28;case 2:  // 加月的天w += 31;case 1:  // 1月不加了;}// 得到-6,其中为星期天w = w % 7;// 调整星期天if(w == 0)w = 7;return w;
}// 请在下面补充代码,实现函数printMonth
/*************** Begin **************/
void printMonth(int year, int month) {cout << "  一  二  三  四  五  六  日" << endl ;int l;if (month == 2) l = 28 + leapYear(year);else if (month == 4 || month == 6 || month == 9 || month == 11) l = 30;else l = 31;int pre = whatDay(year, month);for (int i = 1; i <= l; i ++ , pre ++ ) {if (i == 1) {for (int j = 1; j < pre; j ++ ) cout << "    " ;cout << "  " ;printf("%2d", i);continue;}cout << "  " ;printf("%2d", i);if (pre == 7) puts(""), pre = 0;}
}/*************** End **************/int main()
{// 年、月int y, m;// 输入年月cin >> y >> m;// 输出该年月的日历printMonth(y,m);return 0;
}

T5 拆开了输出整数

题目里要求写一个递归。
递归其实很简单,而且暂时我们遇到的题都不是很算递归,都可以用forforfor简单模拟出来。
递归的精髓在于回溯,之后碰到了再说。

#include <iostream>
using namespace std;// 递归函数splitNum:顺序输出n的各位数字,每个数字占一行
// 返回值:无
void splitNum(unsigned int n)
{// 请在这里补充代码,实现递归函数splitNum/********** Begin *********/if (!n) return;splitNum(n / 10);cout << n % 10 << endl ;/********** End **********/
}int main()
{unsigned n;cin >> n;     // 输入正整数nsplitNum(n);     // 调用splitNum函数,顺序输出n的各位数字return 0;
}

T6 递归求P函数

更简单了,注意看一下那个式子的括号,别漏掉了。

#include <iostream>
using namespace std;// 函数funP:实现数学函数P函数
// 返回值:返回P(n,x)的值
double funP(int n, double x)
{// 请在这里补充代码,实现递归函数funP/********** Begin *********/if (!n) return 1;if (n == 1) return x;return ((2 * n - 1) * funP(n - 1, x) - (n - 1) * funP(n - 2, x)) / n;/********** End **********/
}int main()
{int n;double x;cin >> n >> x;     // 输入n、xcout << "P("<<n<<", "<<x<<")=" << funP(n,x) << endl;return 0;
}

【Educoder作业】CC++函数实训相关推荐

  1. 头歌--CC++函数实训

    第1关:登月纸桥 任务描述 本关任务:编写一个函数,计算需要把纸折叠多少次(假设纸张足够大,可以无限次折叠),其厚度才能搭建一座登月纸桥,考虑到将来需要到更远的星球,所以函数需要根据具体距离计算纸张折 ...

  2. CC++函数实训(国防科大)

    第1关:登月纸桥 100 任务要求 参考答案 评论333 任务描述 相关知识 函数的定义 声明函数 编程要求 测试说明 任务描述 本关任务:编写一个函数,计算需要把纸折叠多少次(假设纸张足够大,可以无 ...

  3. educoder头歌Web实训 web课——综合应用案例:动态焦点图页面的制作

    educoder头歌Web实训 太原理工web课--综合应用案例:拼图页面的制作[全网更新最快]_玛卡巴卡的博客-CSDN博客 第1关:动态焦点图页面的样式设计 任务描述 本关任务: 完成动态焦点图 ...

  4. HTML5期末大作业:魔域私服网站设计——魔域私服游戏(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 html实训大作业

    HTML5期末大作业:魔域私服网站设计--魔域私服游戏(1页) HTML+CSS+JavaScript 学生DW网页设计作业成品 html实训大作业 常见网页设计作业题材有 个人. 美食. 公司. 学 ...

  5. educoder头歌Web实训 web课——综合应用案例:限时秒杀效果的制作

    educoder头歌Web实训 太原理工web课--综合应用案例:动态焦点图页面的制作[全网更新最快]_玛卡巴卡的博客-CSDN博客 第1关:限时秒杀效果图片渲染 [TOC] 图1如下 链接为htt ...

  6. 【Educoder作业】CC++指针实训

    [Educoder作业]C&C++指针实训 不是很熟练,之前从来没用过,讲解不到位恕罪. T1 去掉字符串首尾空格 我们需要知道两个事情,第一个事情是在函数中引用了数组指针之后,在函数内部就可 ...

  7. c语言实训作业,c语言实训报告评语

    C语言实验报告 我写了个,不知道行不,有什么不妥的请指出哈,如要格式请加我,将之发给你 四 川 大 学 计 算 机 学 院.软 件 学 院 实 验 报 告 学号:姓名:专业:计算机科学与技术 班级:5 ...

  8. 第七章:函数实训【寒假作业】

    五.编程题 (一)编写程序,调用函数求一个圆柱体的表面积和体积. #include<stdio.h> #define PI 3.1415926 float area(float r, fl ...

  9. CC++数组实训(国防科大)

    第1关:销售波动统计 100 任务要求 参考答案 评论472 任务描述 相关知识 一维数组 数组元素的访问 数组的初始化 数组的遍历 编程要求 测试说明 任务描述 本关任务:假定有一组数据记录着卖场每 ...

最新文章

  1. What is Gensim?
  2. spring context 例子
  3. JS魔法堂:判断节点位置关系
  4. mybatis增删改查快速实现!!!
  5. python之路-双下方法
  6. Cool!15个创意的 CSS3 文本效果【下篇】
  7. primefaces_通过OmniFaces缓存组件以编程方式缓存PrimeFaces图表
  8. pat 1085 Perfect Sequence (25) 二分查找
  9. 回首十年——写给还在各等级教育中盲目学习的人
  10. 标准的SQL的解析顺序
  11. CloudIDE插件开发实战:教你如何调试代码
  12. Javascript 对象继承 原型链继承 对象冒充 call 混合方式
  13. iPhone 13系列整机较iPhone 12更重 最重接近半斤
  14. 今天 Java 14 正式发布了!放弃 Java 8 行吗?
  15. 使用CODERUN部署阿里云KUBERNETES
  16. mysql varchar varbinary_mysql varbinary vs varchar
  17. 爬虫实战——QQ空间自动点赞!这个脚本值三千五你信吗?
  18. 猫、路由器、带宽、IP地址、子网掩码、网关以及公网与私网简介
  19. selenium设置浏览器的大小和位置
  20. 查看本地IP和服务器端口

热门文章

  1. 文本相似度php,分析php计算文本字符串相似度函数similar_text()的原理
  2. Android 中选项菜单(Option menu)的用法
  3. [Unity] Mesh网格位置偏移
  4. ​通达信量比捉牛股指标源码​_通达信公式
  5. php中thead怎么居中,thead与td无法对齐该怎么办?
  6. 【如何在 Debian、Ubuntu 或 Linux Mint 上的 Google Chrome、Brave、Vivaldi 和 Opera 浏览器中启用硬件加速视频解码】
  7. rabbitmq 手动提交_RabbitMQ系列(四)RabbitMQ事务和Confirm发送方消息确认——深入解读 - 王磊的博客 - 博客园...
  8. 项目在tomcat里运行一段时间总是自动崩掉的问题排查与解决
  9. Debian9 安装迅雷、百度网盘、微信、QQ、Tim等常用软件
  10. C语言-转化大写字母为小写字母输入一个大写字母,要求用小写字母输出