第三章上机实验+课本14 while dowhile习题解答.docx

上传人:b****0 文档编号:9057087 上传时间:2023-05-16 格式:DOCX 页数:17 大小:50.82KB
下载 相关 举报
第三章上机实验+课本14 while dowhile习题解答.docx_第1页
第1页 / 共17页
第三章上机实验+课本14 while dowhile习题解答.docx_第2页
第2页 / 共17页
第三章上机实验+课本14 while dowhile习题解答.docx_第3页
第3页 / 共17页
第三章上机实验+课本14 while dowhile习题解答.docx_第4页
第4页 / 共17页
第三章上机实验+课本14 while dowhile习题解答.docx_第5页
第5页 / 共17页
第三章上机实验+课本14 while dowhile习题解答.docx_第6页
第6页 / 共17页
第三章上机实验+课本14 while dowhile习题解答.docx_第7页
第7页 / 共17页
第三章上机实验+课本14 while dowhile习题解答.docx_第8页
第8页 / 共17页
第三章上机实验+课本14 while dowhile习题解答.docx_第9页
第9页 / 共17页
第三章上机实验+课本14 while dowhile习题解答.docx_第10页
第10页 / 共17页
第三章上机实验+课本14 while dowhile习题解答.docx_第11页
第11页 / 共17页
第三章上机实验+课本14 while dowhile习题解答.docx_第12页
第12页 / 共17页
第三章上机实验+课本14 while dowhile习题解答.docx_第13页
第13页 / 共17页
第三章上机实验+课本14 while dowhile习题解答.docx_第14页
第14页 / 共17页
第三章上机实验+课本14 while dowhile习题解答.docx_第15页
第15页 / 共17页
第三章上机实验+课本14 while dowhile习题解答.docx_第16页
第16页 / 共17页
第三章上机实验+课本14 while dowhile习题解答.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第三章上机实验+课本14 while dowhile习题解答.docx

《第三章上机实验+课本14 while dowhile习题解答.docx》由会员分享,可在线阅读,更多相关《第三章上机实验+课本14 while dowhile习题解答.docx(17页珍藏版)》请在冰点文库上搜索。

第三章上机实验+课本14 while dowhile习题解答.docx

第三章上机实验+课本14whiledowhile习题解答

课本P66页第三章第四大题

1、求100之内的自然数中奇数之和(课本P66四1)。

#include

voidmain()

{

inti=1,sum=0;

while(i<100)

{

sum+=i;

i+=2;

}

cout<<"100之内自然数中奇数之和为"<

}

2、求100之内的自然数中被13整除的最大数。

#include

voidmain()

{

inta=100;

while(a%13!

=0)a--;

cout<<"100之内的自然数中被13整除的最大数为"<

}

同学另解:

#include

intmain()

{inti=0,a;

while(i<=100)

{

i=i+13;

}

a=i-13;

cout<<"\n最大数为"<

}

#include

main()

{

intmax;

inti=0;

while(i<=100)

{

if(i%13==0)

max=i;

i++;

}

cout<<"100之内的自然数中被13整除的最大数为:

"<

}

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

#include

intmain()

{

inti=100;

while(i>0)

{

if(i%13==0)break;

i--;

}

cout<<"100之内的自然数中被13整除的最大数为:

"<

}从100向下搜索更好

#include

usingnamespacestd;

intmain()

{

intm=0,sum=0;

for(inti=100;i>=1;i--)

{

if(i%13==0)

{

if(i>m)

m=i;

break;

}

}

cout<

return0;

}

3、求输入两个正整数的最大公约数和最小公倍数

辗转相除法求两个数的最大公约数的步骤如下:

先用小的一个数除大的一个数,得第一个余数;

再用第一个余数除小的一个数,得第二个余数;

又用第二个余数除第一个余数,得第三个余数;

这样逐次用后一个数去除前一个余数,直到余数是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

usingnamespacestd;

intmain()

{

intx1,x2,a,b,t,c;

cout<<"请输入两个正整数";

cin>>x1>>x2;

if(x1

{

t=x1;

x1=x2;

x2=t;//使大的数字为x1,小的数字为x2

}

a=x1;

b=x2;

while(b!

=0)

{

c=a%b;

a=b;

b=c;//辗转相除求公约数法

}

cout<<"最大公约数是"<

cout<<"最大公倍数是"<

}

#include

usingnamespacestd;

intmain()

{

inta,b,c,d,e;

cout<<"请输入两个正整数:

";

cin>>a>>b;

if(a>0&&b>0)

{

c=a>b?

a:

b;

d=a

a:

b;

e=c%d;

while(e>0)

{

c=d;

d=e;

e=c%d;

}

cout<<"两个正整数的最大公约数为:

"<

cout<<"两个正整数的最小公倍数为:

"<

}

else

cout<<"输入错误"<

return0;

}

同学另解1

#include

main()

{

intnum1,num2,max,min;

cout<<"请输入两个正整数:

";

cin>>num1>>num2;

if(num1>=num2)

min=num1,max=num2;

elsemin=num2,max=num1;

while((num1%max!

=0)||(num2%max!

=0))

max=max-1;

while((min%num1!

=0)||(min%num2!

=0))

min=min+1;

cout<<"最大公约数为:

"<

"<

return0;

}

同学另解2

#include

voidmain()

{

intm,n,i,j;

cout<<"请输入两个正整数:

";

cin>>m>>n;

i=(m>n?

n:

m);

while(!

(m%i==0&&n%i==0))

i--;

cout<

j=(m>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

voidmain()

{

doublei=1,a=2,b=1,sum=0,t;

while(i<=15)

{

sum+=a/b;

t=a;

a+=b;

b=t;

i++;

}

cout<<"sum="<

}

#include

voidmain()

{

doublea=2,b=1,sum=0,t;

for(inti=1;i<=15;i++)

{

sum+=a/b;

t=a;

a+=b;

b=t;

}

cout<<"sum="<

}

1、计算n+(n-1)+(n-2)+…+3+2+1的值

#include

usingnamespacestd;

intmain()

{

intnumber;

intsum=0;

cout<<"请输入一个整数:

";

cin>>number;

if(number>0)

{

while(number>0)

{

sum=sum+number;

number--;

}

cout<<"和="<

}

else

cout<

\n",number;

}

#include

usingnamespacestd;

intmain()

{

intnumber;

intsum=0;

cout<<"请输入一个整数:

";

cin>>number;

if(number>0)

{

do

{

sum=sum+number;

number--;

}while(number>0);

cout<<"和="<

}

else

cout<

\n",number;

}

while

#include

intmain()

{intn,i=1,sum=0;

cout<<"\n请输入一个整数";

cin>>n;

if(n<=0)

cout<<"\n"<

else

while(i<=n)

{sum=sum+i;

i=i+1;

}

cout<<"\n和="<

}

Dowhile

#include

main()

{intn,i=1,sum=0;

cout<<"\n请输入一个整数";

cin>>n;

if(n<=0)

cout<<"\n"<

else

do

{

sum=sum+i;

i=i+1;

}

while(i<=n);

cout<<"\n和="<

}

2、计算正整数各位数的和

#include

voidmain()

{

inta,sum=0;

cout<<"请输入一个正整数:

";

cin>>a;

if(a<1)cout<<"输入错误。

"<

else

{

while(a>0)

{

sum=sum+a%10;

a=a/10;

}

cout<<"各位数字之和是:

"<

}

}

3、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

#include

usingnamespacestd;

intmain()

{

charc;

intletters=0,space=0,digit=0,others=0;

cout<<"请输入一些字符:

\n";

while((c=getchar())!

='\n')

{

if(c>='a'&&c<='z'||c>='A'&&c<='Z')

letters++;

elseif(c=='')

space++;

elseif(c>='0'&&c<='9')

digit++;

else

others++;

}

cout<<"\n其中包含:

\n";

cout<<"字符:

"<

cout<<"空格:

"<

cout<<"数字:

"<

cout<<"其他:

"<

}

4、从键盘输入一批以负数结束的学生成绩,计算平均分。

#include

#include

intmain()

{intnum;

doublegrade,total;

num=0;total=0;

cout<<"Entergrades:

\n";

cin>>grade;/*输入第1个数*/

while(grade>=0){/*输入负数,循环结束*/

total=total+grade;

num++;

cin>>grade;

}

if(num!

=0)

cout<<"Gradeaverageis"<

else

cout<<"Gradeaverageis0\n";

return0;

}

解2:

#include

intmain()

{

doublex=0,y=0,i;

cout<<"Entergrades:

"<

cin>>i;

if(i>=0)

{

while(i>=0)

{

y=y+i;

x++;

cin>>i;

}

cout<<"Gradeaverageis:

"<

}

else

cout<<"Gradeaverageis:

0"<

return0;

}

5、编写一个程序,用于接收用户输入的两个数a、b,然后显示ASCII码从a到b的所有字符,询问用户是否愿意再次同样的操作

思路:

外循环控制多次同样操作,内循环控制输出a到b的所有字符

do{输入ab两个数

输出a到b的所有字符

询问用户是否重复同样操作

cin>>ans;

}

while(ans=='y'||ans=='Y');

#include

usingnamespacestd;

intmain()

{

charans;

inta,b;

do

{

cout<<"请输入两个数:

";

cin>>a>>b;

while(a<=b)/*该循环用于输出字符*/

{

cout<<"与"<

a++;/*计数器递增以移到下一个字符*/

}

cout<<"您是否要继续:

";

cin>>ans;

}

while(ans=='y'||ans=='Y');/*用户的选择*/

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2