资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: 计算机考试归档 最新发布

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

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

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

T1 登月纸桥

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

#include 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    	int ans = 0;	while (thick < dis * 1000 * 1000) thick *= 2, ans ++ ;	return ans;            }

T2 几点几分了?

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

#include using namespace std;void whatTime(int secs, int &h, int &m, int &s){    // 请在这里补充代码,设计并实现函数whatTime,使main函数中的函数调用正确        h = secs / 3600;	m = (secs - h * 3600) / 60;	s = secs % 60;            }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 using namespace std;// 函数leapYearint 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    	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;    }int main(){    int y, m, xq;     // 年、月、星期几    cin >> y >> m;     // 输入年月    xq = whatDay(y,m);     // 计算星期几    cout << y << "年" << m << "月1日是星期";     // 输出星期    if(xq == 7)        cout << "日" << endl;    else        cout << xq << endl;    return 0;}

T4 打印日历

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

// 包含两种I/O库,可以使用任一种输入输出方式#include #include 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;        else            w += 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;        else            w += 28;    case 2:  // 加月的天        w += 31;    case 1:  // 1月不加了        ;    }    // 得到-6,其中为星期天    w = w % 7;    // 调整星期天    if(w == 0)        w = 7;    return w;}// 请在下面补充代码,实现函数printMonthvoid 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;    }}int main(){    // 年、月    int y, m;    // 输入年月    cin >> y >> m;    // 输出该年月的日历    printMonth(y,m);    return 0;}

T5 拆开了输出整数

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

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

T6 递归求P函数

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

#include using namespace std;// 函数funP:实现数学函数P函数// 返回值:返回P(n,x)的值double funP(int n, double x){    // 请在这里补充代码,实现递归函数funP            if (!n) return 1;	if (n == 1) return x;	return ((2 * n - 1) * funP(n - 1, x) - (n - 1) * funP(n - 2, x)) / n;        }int main(){    int n;    double x;    cin >> n >> x;     // 输入n、x    cout << "P("<
转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/1097374.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【【Educoder作业】C&C++函数实训】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2