《第4章-课后习题评讲.ppt》由会员分享,可在线阅读,更多相关《第4章-课后习题评讲.ppt(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第第第4 4章章章章 C+C+函数函数函数函数温蜜温蜜温蜜温蜜上海电力学院计信学院上海电力学院计信学院上海电力学院计信学院上海电力学院计信学院高级程序设计高级程序设计C+温蜜温蜜 本章主要内容本章主要内容1编写函数,定写函数,定义两个两个unsigned short int型的参数,型的参数,返回两个参数的商,其数据返回两个参数的商,其数据类型型为short int。如果第。如果第二个参数二个参数为0,输出出错误提示信息。提示信息。2.3.4.编写函数,求两个整数的最大公写函数,求两个整数的最大公约数和最小公倍数。数和最小公倍数。5.编写写递归函数,函数,计算算x的的y(y0)次)次幂。6.
2、编写程序,要求写程序,要求输人四位数的年份、两位数的月份和人四位数的年份、两位数的月份和日期,把它日期,把它们按按“年年 月月 日日”的格式的格式输出,并出,并计算它是算它是这一年的第几天。一年的第几天。高级程序设计高级程序设计C+温蜜温蜜 1编写函数,定义两个编写函数,定义两个unsigned short int型的参数,返型的参数,返回两个参数的商,其数据类型为回两个参数的商,其数据类型为short int。如果第二个参。如果第二个参数为数为0,输出错误提示信息。,输出错误提示信息。short int Divd(unsigned short int a,unsigned short int
3、 b)if(b=0)return-1;else return a/b;高级程序设计高级程序设计C+温蜜温蜜 1(con.)#includeusing namespace std;void main()unsigned short int x,y;short int z;cout xy;z=Divd(x,y);if(z-1)cout Answer:z;else cout Error,cant divide by zero!;return 0;高级程序设计高级程序设计C+温蜜温蜜 4,编写函数,求两个整数的最大公约数和最小公倍数。编写函数,求两个整数的最大公约数和最小公倍数。方法方法1:直接循环的
4、思想直接循环的思想int maxp(int x,int y)int i;int t=(xy?x:y);/找找2者中最小数者中最小数for(i=t;i-)if(x%i=0&y%i=0)break;return i;常见错:常见错:if(x%i=0&y%i=0)return i;else return 0;高级程序设计高级程序设计C+温蜜温蜜 4,编写函数,求两个整数的最大公约数和最小公倍数。编写函数,求两个整数的最大公约数和最小公倍数。方法方法2:辗转相除法辗转相除法int maxp(int x,int y)int t;if(i j)t=i;i=j;j=t;while(j!=0)t=i%j;i=
5、j;j=t;return i;高级程序设计高级程序设计C+温蜜温蜜 4 con.最小公倍数方法最小公倍数方法1:#include using namespace std;int main()int a,b,x,y;cout a;cout b;x=maxp(a,b);y=i*j/x;cout a 和和 b 的最大公约数是:的最大公约数是:x endl;cout a 和和 b 的最小公倍数是:的最小公倍数是:y endl;高级程序设计高级程序设计C+温蜜温蜜 4 con.最小公倍数方法最小公倍数方法2:#include using namespace std;int main()int a,b,x
6、,y;cout a;cout b;x=maxp(a,b);y=minb(a,b);cout a 和和 b 的最大公约数是:的最大公约数是:x endl;cout a 和和 b 的最小公倍数是:的最小公倍数是:y y?x:y);/找找2者中最大数者中最大数for(i=t;i+)if(i%x=0&i%y=0)break;return i;高级程序设计高级程序设计C+温蜜温蜜 5:编写递归函数,计算编写递归函数,计算x的的y(y0)次幂。)次幂。#includeusing namespace std;double power(int x,int y)if(y=1)return x;else retu
7、rn x*power(x,y-1);void main()int x,y;cout x;cout y;cout result is:power(x,y)endl;coutn不是完数。不是完数。endl;return 0;高级程序设计高级程序设计C+温蜜温蜜 6:编写程序,要求输人四位数的年份、两位数的编写程序,要求输人四位数的年份、两位数的月份和日期,把它们按月份和日期,把它们按“年年 月月 日日”的格式输的格式输出,并计算它是这一年的第几天。出,并计算它是这一年的第几天。int dayno(int year,int month,int day)int i,sum=0;for(i=1;imon
8、th;i+)switch(i)case 1:/1、3、5、7、8、10、12月有月有31天天case 3:case 5:case 7:case 8:case 10:case 12:sum+=31;break;case 4:/4、6、9、11月有月有30天天case 6:case 9:case 11:sum+=30;break;case 2:if(year%4=0&year%100!=0)|year%400=0)sum+=29;/闰年闰年2月有月有29天天 else sum+=28;/正常年正常年2月有月有28天天 sum+=day;return sum;高级程序设计高级程序设计C+温蜜温蜜 6
9、:编写程序,要求输人四位数的年份、两位数的编写程序,要求输人四位数的年份、两位数的月份和日期,把它们按月份和日期,把它们按“年年 月月 日日”的格式输的格式输出,并计算它是这一年的第几天。出,并计算它是这一年的第几天。void main()int year,month,day,k;coutyearmonthday;cout“The date is:”year“年年”month“月月”day“日日”;k=dayno(year,month,day);cout“是这一年的第是这一年的第”k“天天”;高级程序设计高级程序设计C+温蜜温蜜 高级程序设计高级程序设计C+温蜜温蜜 今日内容今日内容 0,分分别用迭代法和用迭代法和递归函数来求函数来求Fibonacci数列第数列第20项。1,写一个程序,找出写一个程序,找出给定数定数组中具有最小中具有最小值的元素及其下的元素及其下标。2,定,定义一个函数,其的功能是:在第一个循一个函数,其的功能是:在第一个循环中中给前前10个数个数组元素依次元素依次赋值1、2、3、4、5、6、7、8、9、10;在第二;在第二个循个循环中使中使a数数组前前10个元素中的个元素中的值对称折叠,称折叠,变成成1、2、3、4、5、5、4、3、2、1。3,书上上146页第第1题
限制150内