计算与人工智能概论-问题求解、科学计算与AI应用方法 习题及答案 第5章参考答案_第1页
计算与人工智能概论-问题求解、科学计算与AI应用方法 习题及答案 第5章参考答案_第2页
计算与人工智能概论-问题求解、科学计算与AI应用方法 习题及答案 第5章参考答案_第3页
计算与人工智能概论-问题求解、科学计算与AI应用方法 习题及答案 第5章参考答案_第4页
计算与人工智能概论-问题求解、科学计算与AI应用方法 习题及答案 第5章参考答案_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、分析题1.分析下列程序,写出运行结果。#include<iostream>usingnamespacestd;voidfun(inta){do{cout<<a%2;a=a/2;}while(a!=0);cout<<endl;}intmain(){inta=42486;fun(a);return0;}答:01101111101001012.分析下列程序,写出运行结果。#include<iostream>usingnamespacestd;intmain(){inta=42486;for(inta=42486,i=0;i<5;i++){a=a/2;}cout<<a<<endl;return0;}答:42486二、编程题1.请设计一个函数,根据输入的整数n,打印斐波那契额数的第n项,并编写代码调用斐波那契数列函数并打印的第n项。#include<iostream>usingnamespacestd;//函数声明:计算斐波那契数列第n项intfibonacci(intn){if(n<=0)return0;elseif(n==1||n==2)return1;elsereturnfibonacci(n-1)+fibonacci(n-2);}intmain(){intn;cout<<"请输入n:";cin>>n;cout<<"斐波那契数列第"<<n<<"项是:"<<fibonacci(n)<<endl;return0;}2.请设计一个函数,根据输入的整数n,打印n*n乘法表,例如,n为5时,输出如图5.11所示乘法表,并编写代码验证打印函数的功能。图5.11乘法表请设计一个函数,求给定的两个整数n和m的最小公倍数,并编写代码调用最小公倍数函数,输出返回的最小公倍数。#include<iostream>usingnamespacestd;//函数:打印n*n的乘法表voidprintMultiplicationTable(intn){for(inti=1;i<=n;i++){for(intj=1;j<=i;j++){cout<<j<<"*"<<i<<"="<<i*j<<"\t";}cout<<endl;}}intmain(){intn;cout<<"请输入n:";cin>>n;printMultiplicationTable(n);return0;}所谓水仙花数,即,它们等于各位数字的立方和。例如,整数153就是一个这样的数:153=13+33+53。请设计一个函数,根据输入的整数n,判定整数n是否为水仙花数,如果n为水仙花数,则输出“Yes”,否则输出“No”。#include<iostream>usingnamespacestd;//函数:判断一个整数是否为水仙花数(仅限三位数)boolisNarcissistic(intn){if(n<100||n>999)returnfalse;//水仙花数通常指三位数intoriginal=n;intsum=0;while(n>0){intdigit=n%10;sum+=digit*digit*digit;n/=10;}returnsum==original;}intmain(){intn;cout<<"请输入一个整数:";cin>>n;if(isNarcissistic(n))cout<<"Yes"<<endl;elsecout<<"No"<<endl;return0;}请设计一个十进制转二进制的函数,对给定的正整数n,返回其二进制,并编写代码调用进制转换函数,输出返回的二进制。#include<iostream>#include<string>#include<algorithm>usingnamespacestd;//函数:将正整数n转换为二进制字符串stringdecToBin(intn){if(n==0)return"0";stringbinary="";while(n>0){binary+=(n%2)?'1':'0';//取余并拼接字符n/=2;}reverse(binary.begin(),binary.end());//反转得到正确顺序returnbinary;}intmain(){intn;cout<<"请输入一个正整数:";cin>>n;if(n<0){cout<<"请输入非负整数。"<<endl;return1;}stringresult=decToBin(n);cout<<"二进制表示为:"<<result<<endl;return0;}回文数是指从正向和反向两个方向读数字都一样,例如,1234321就是一个回文数。请设计一个函数,对给定的正整数n,判定其是否为回文数,并编写代码调用回文数判定函数,从键盘输入一个正整数,判断该正整数是否为回文数,如果是则输出“Yes”,否则输出“No”。#include<iostream>usingnamespacestd;//函数:判断正整数n是否为回文数boolisPalindrome(intn){if(n<0)returnfalse;//题目要求正整数,但防御性处理intoriginal=n;intreversed=0;while(n>0){reversed=reversed*10+n%10;n/=10;}returnoriginal==reversed;}intmain(){intn;cout<<"请输入一个正整数:";cin>>n;if(isPalindrome(n))cout<<"Yes"<<endl;elsecout<<"No"<<endl;return0;}请设计一个函数,对给定的正整数n,返回其阶乘n!,并编写代码调用阶乘求解函数,输出返回的阶乘n!。#include<iostream>usingnamespacestd;//函数:计算正整数n的阶乘(迭代实现)longlongfactorial(intn){if(n<0)return-1;//阶乘未定义于负数longlongresult=1;for(inti=2;i<=n;i++){result*=i;}returnresult;}intmain(){intn;cout<<"请输入一个非负整数:";cin>>n;if(n<0){cout<<"阶乘未定义于负数。"<<endl;return1;}longlongfact=factorial(n);cout<<n<<"!="<<fact<<endl;return0;}请设计一个函数,尝试把以下数学公式转换成递归函数。并编写代码调用递归函数,根据输入的整数n(n>0),输出函数返回值。#include<iostream>usingnamespacestd;//递归函数定义longlongfun(intn){if(n<2){returnn+1;//基本情况:n=0→1,n=1→2}else{returnfun(n/2)*fun(n/4);//递归情况:n>=2}}intmain(){intn;cout<<"请输入一个正整数n(n>0):";cin>>n;if(n<=0){cout<<"请输入大于0的整数。"<<endl;return1;}cout<<"fun("<<n<<")="<<fun(n)<<endl;return0;}假设小明正在爬楼梯,需要n阶你才能到达楼顶。小明每次可以爬1或2个台阶。小明有多少种不同的方法可以爬到楼顶呢?请设计一个函数,对给定的正整数n阶,返回爬楼梯的不同方法数(请用非递归方法实现)。#include<iostream>usingnamespacestd;//函数:计算爬n阶楼梯的不同方法数(动态规划,非递归)longlongclimbStairs(intn){if(n<=2)returnn;longlongprev2=1;//f(1)longlongprev1=2;//f(2)longlongcurrent;for(inti=3;i<=n;i++){current=prev1+prev2;//f(i)=f(i-1)+f(i-2)prev2=prev1;prev1=current;}returncurrent;}intmain(){intn;cout<<"请输入楼梯阶数n:";cin>>n;if(n<=0){cout<<"请输入正整数。"<<endl;return1;}cout<<"共有"<<climbStairs(n)<<"种不同的方法。"<<endl;return0;}假设小明正在爬楼梯,需要n阶你才能到达楼顶。小明每次可以爬1或2个台阶。小明有多少种不同的方法可以爬到楼顶呢?请设计一个函数,对给定的正整数n阶,返回爬楼梯的不同方法数(请用递归方法实现)。#include<iostream>usingnamespacestd;//递归函数:计算爬n阶楼梯的不同方法数longlongclimbStairs(intn){if(n==1)return1;elseif(n==2)return2;e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论