2014 第三章上机实验+课本1-4 while do-while习题解答

2019-01-27 14:42

课本P66页第三章第四大题

1、求100之内的自然数中奇数之和(课本P66 四1)。 #include void main() { int i=1,sum=0; while(i<100) { sum+=i; i+=2; } cout<<\之内自然数中奇数之和为\}

2、求100之内的自然数中被13整除的最大数。 #include void main() { int a=100; while (a!=0) a--; cout<<\之内的自然数中被13整除的最大数为\}

同学另解:

#include int main() {int i=0,a; while(i<=100) {

i=i+13; }

a=i-13;

cout<<\最大数为\}

# include main() { int max; int i=0; while(i<=100) {

C++程序设计(第2版)

if(i==0) max=i; i++; } cout<<\之内的自然数中被13整除的最大数为:\}

程序没错,就是运行效率差些,求被13整除的最大数,如果从100开始逐个减1判断,比较合适,下面是修改版,当找到后用break停止循环 #include int main() {

int i=100; while(i>0) { if(i==0) break; i--; } cout<<\之内的自然数中被13整除的最大数为:\}从100向下搜索更好 #include using namespace std; int main() {

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 using namespace std; int main() { }

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 main() { int num1,num2,max,min; cout<<\请输入两个正整数:\ cin>>num1>>num2; if(num1>=num2) min=num1,max=num2; else min=num2,max=num1; while((num1%max!=0)||(num2%max!=0)) max=max-1; while((min%num1!=0)||(min%num2!=0)) min=min+1;

C++程序设计(第2版)

cout<<\最大公约数为:\最小公倍数为:\ return 0; }

同学另解2

#include void main() { int m,n,i,j; cout<<\请输入两个正整数:\ cin>>m>>n; i=(m>n?n:m); while(!(m%i==0&&n%i==0)) i--; cout<n?m:n); while(!(j%m==0&&j%n==0)) j++; cout<

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 void main() {

double i=1,a=2,b=1,sum=0,t; while (i<=15) {

sum+=a/b; t=a; a+=b; b=t; i++; }


2014 第三章上机实验+课本1-4 while do-while习题解答.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:ABC(2014)5006-1 个人购房担保借款合同

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: