课本P66页第三章第四大题
1、求100之内的自然数中奇数之和(课本P66 四1)。 #include
2、求100之内的自然数中被13整除的最大数。 #include
同学另解:
#include
i=i+13; }
a=i-13;
cout<<\最大数为\}
# include
C++程序设计(第2版)
if(i==0) max=i; i++; } cout<<\之内的自然数中被13整除的最大数为:\}
程序没错,就是运行效率差些,求被13整除的最大数,如果从100开始逐个减1判断,比较合适,下面是修改版,当找到后用break停止循环 #include
int i=100; while(i>0) { if(i==0) break; i--; } cout<<\之内的自然数中被13整除的最大数为:\}从100向下搜索更好 #include
int m=0,sum=0;
for (int i=100;i>=1;i--) {
if(i==0) {
if(i>m) m=i; break; } }
cout< 3、求输入两个正整数的最大公约数和最小公倍数 辗转相除法求两个数的最大公约数的步骤如下: 先用小的一个数除大的一个数,得第一个余数; C++程序设计(第2版) 再用第一个余数除小的一个数,得第二个余数; 又用第二个余数除第一个余数,得第三个余数; 这样逐次用后一个数去除前一个余数,直到余数是0为止。那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。 例如求1515和600的最大公约数, 第一次:用600除1515,商2余315; 第二次:用315除600,商1余285; 第三次:用285除315,商1余30; 第四次:用30除285,商9余15; 第五次:用15除30,商2余0。 1515和600的最大公约数是15。 参照谭浩强C程序设计第四版学习辅导P40页第3题 或谭浩强C++程序设计题解与上机辅导P23页 第15题 #include int x1,x2,a,b,t,c; cout<<\请输入两个正整数\; cin>>x1>>x2; if(x1 cout<<\最大公约数是\< c=a%b; a=b; b=c; //辗转相除求公约数法 t=x1; x1=x2; x2=t; //使大的数字为x1,小的数字为x2 #include C++程序设计(第2版) using namespace std ; int main() { int a,b,c,d,e; cout<<\请输入两个正整数:\; cin>>a>>b; if(a>0 && b>0) { c=a>b?a:b; d=a0) { c=d; d=e; e=c%d; } cout<<\两个正整数的最大公约数为:\< cout<<\两个正整数的最小公倍数为:\< cout<<\输入错误\< 同学另解1 #include C++程序设计(第2版) cout<<\最大公约数为:\最小公倍数为:\ return 0; } 同学另解2 #include 4、求下列分数序列的前15项之和。(课本P66页四、4) 2/1,3/2,5/3,8/5,13/8,21/13,…. 思路:首先观察分数序列,前一个分数的分子是后一个数的分母,前一个数的分子分母之和是后一个数的分子。 利用循环求前15项之和,循环体内sum用于累加第i项,a、b分别对应第i项的分子分母,累加后求下一次累加的a和b #include double i=1,a=2,b=1,sum=0,t; while (i<=15) { sum+=a/b; t=a; a+=b; b=t; i++; }