C++实验教程实验25答案.docx

上传人:b****7 文档编号:16499563 上传时间:2023-07-14 格式:DOCX 页数:31 大小:28.24KB
下载 相关 举报
C++实验教程实验25答案.docx_第1页
第1页 / 共31页
C++实验教程实验25答案.docx_第2页
第2页 / 共31页
C++实验教程实验25答案.docx_第3页
第3页 / 共31页
C++实验教程实验25答案.docx_第4页
第4页 / 共31页
C++实验教程实验25答案.docx_第5页
第5页 / 共31页
C++实验教程实验25答案.docx_第6页
第6页 / 共31页
C++实验教程实验25答案.docx_第7页
第7页 / 共31页
C++实验教程实验25答案.docx_第8页
第8页 / 共31页
C++实验教程实验25答案.docx_第9页
第9页 / 共31页
C++实验教程实验25答案.docx_第10页
第10页 / 共31页
C++实验教程实验25答案.docx_第11页
第11页 / 共31页
C++实验教程实验25答案.docx_第12页
第12页 / 共31页
C++实验教程实验25答案.docx_第13页
第13页 / 共31页
C++实验教程实验25答案.docx_第14页
第14页 / 共31页
C++实验教程实验25答案.docx_第15页
第15页 / 共31页
C++实验教程实验25答案.docx_第16页
第16页 / 共31页
C++实验教程实验25答案.docx_第17页
第17页 / 共31页
C++实验教程实验25答案.docx_第18页
第18页 / 共31页
C++实验教程实验25答案.docx_第19页
第19页 / 共31页
C++实验教程实验25答案.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++实验教程实验25答案.docx

《C++实验教程实验25答案.docx》由会员分享,可在线阅读,更多相关《C++实验教程实验25答案.docx(31页珍藏版)》请在冰点文库上搜索。

C++实验教程实验25答案.docx

C++实验教程实验25答案

实验二、 选择结构

【上机内容】

1.修改下列程序,使之满足当x为10时输出“==”,否则输出“!

=”的条件。

#include"stdio.h"

main()

{intx;

scanf("%d",&x);

if(x==10)printf("==\n");

elseprintf("!

=\n");

}

2.修改下列程序,使之实现以下功能:

#include“stdio.h”

main()

{inta,b,c;

scanf(“%d%d%d”,&a,&b,&c);

if(a==b)

{if(b==c)

printf(“a==b==c”);

else

printf(“a!

=b”);

}

3.程序填空。

从键盘输入任意一个字母,将其按小写字母输出。

#include

main()

{charc;

scanf("%c",&c);

if(c>='A'&&c<='Z')

c=c+32;

printf("\n%c",c);

}

4.有以下程序,执行后输出结果为_______4__________

#include“stdio.h”

main()

{inta=1,b=2,c=3,d=4;

if(a

elseif((c-b)==a)printf(“%d\n”,2*d);

elseprintf(“%d\n”,4*d);

5.有以下程序,执行后输出结果为______970___________

#include"stdio.h"

main()

{inta=8,b=7,c=9,t=0;

if(a

if(a

if(b

printf("%5d%5d%5d\n",a,b,c);

}

6.有以下程序,执行后输出结果为_____987____________

#include"stdio.h"

main()

{inta=8,b=7,c=9,t=0;

if(a

if(a

if(b

printf("%5d%5d%5d\n",a,b,c);

}

7.有一函数

x(x<1)

y=2x–1(1≤x<10)

3x–11(x≥10)

编写程序输入x,输出y值。

参考答案:

#include"stdio.h"

main()

{intx,y;

scanf("%d",&x);

if(x<1)

y=x;

elseif(x<10)

y=2*x-1;

else

y=3*x-11;

printf("%d",y);

}

8.输入一个百分制分数,要求输出对应的成绩等级:

90—100为‘A’,80—89为‘B’,70—79为‘C’,60—69为‘D’,不及格为‘E’。

参考答案:

#include

main( )

{floatscore;

printf("inputsocre:

");

scanf("%f",&score);

if(score>=90)

printf("A\n");

elseif(score>=80)

printf("B\n");

elseif(score>=70)

printf("C\n");

elseif(score>=60)

printf("D\n");

else

printf("E\n");

}

9.给一个不多于3位的正整数,要求:

(1)求出它是几位数;

(2)、分别打出每一位数字;

(3)、按逆序打出各位数字,例如原数为321,应输出123。

参考答案:

#include"stdio.h"

voidmain()

{inta,b,c,x,n;

scanf("%d",&x);

a=x/100;

b=(x-a*100)/10;

c=x%10;

if(a!

=0)

printf("%d为3位数,原数为%d,逆序数为%d\n",x,x,c*100+b*10+a);

elseif(b!

=0)

printf("%d为2位数,原数为%d,逆序数为%d\n",x,x,c*10+b);

else

printf("%d为1位数,原数为%d,逆序数为%d\n",x,x,c);

}

 

任务2switch语句程序设计

【目的与要求】

1.熟练掌握switch语句;

2.掌握break语句在switch中的应用。

1.有如下程序,执行后输出结果为______14___________

#include“stdio.h”

main()

{inti=5;

switch(i)

{case4:

i+=1;

case5:

i+=2;

case6:

i+=3;

default:

i+=4;

}

printf("%d\n",i);

}

2.有如下程序段,若grade的值为'C',则输出结果是_____Medium!

____

Pass!

________

switch(grade)

{case'A':

printf("Excellent!

\n");

case'B':

printf("Fine!

\n");break;

case'C':

printf("Medium!

\n");

case'D':

printf("Pass!

\n");break;

default:

printf("Fail!

\n");

}

3.有以下程序,执行后输出结果为_______a=3,b=5__________

#include“stdio.h”

main()

{intx=0,y=1,a=2,b=3;

switch(x)

{case0:

switch(y)

{case0:

a++;

case1:

b++;break;

}

case1:

a++;b++;break;

case2:

a++;b++;

}

printf(“\na=%d,b=%d”,a,b);

}

4.将下列的程序段改用switch语句来实现,使它完成相同的功能。

if(x<0)y=0;

elseif(x<10)y=x;

elseif(x<20)y=x+3;

elseif(x<40)y=-0.5*x+10;

elsey=2*x-5;

参考答案:

#include"stdio.h"

main()

{intx1,x2;

floaty;

scanf("%d",&x1);

x2=x1;

switch(x1>0)

{case0:

y=0;break;

case1:

switch(x2/10)

{case0:

y=x2;break;

case1:

y=x2+3;break;

case2:

case3:

y=-0.5*x2+10;break;

default:

y=2*x2-5;break;

}

}

printf("x=%d,y=%f",x1,y);

}

}5.假设奖金税率如下(ma代表奖金,tr代表税率),利用switch语句编写程序对输入的一个奖金数,输出税率和应交税款以及实得奖金数(扣除奖金税后),

ma<1000tr=0%

1000≤ma<2000tr=5%

2000≤ma<4000tr=8%

4000≤matr=10%

参考答案:

#include"stdio.h"

main()

{floatma,tr,ma_tr;

scanf("%f",&ma);

printf("奖金数为%8.2f",ma);

switch(ma>=1000)

{case0:

tr=0;break;

case1:

switch((int)ma/1000)

{case1:

tr=0.05;break;

case2:

case3:

tr=0.08;break;

default:

tr=0.1;break;

}

}

printf("税率为=%.2f,应交税款为=%.2f,实得奖金数为=%.2f\n",tr,ma*tr,ma*(1-tr));

}

实验三、 循环结构实验

(1)

任务1while语句程序设计

【目的与要求】

1.熟练掌握while语句

2.能用while语句实现各种算法

1.分析并修改下面的程序,使该程序能正常结束运行。

#include

main()

{intx,y;

x=2;y=0;

while(!

y--)

printf(“%d,%d\n”,x,y);

}

2.下列程序中,while循环的循环次数为___6_____

#include

main()

{inti=0;

while(i<10)

{if(i==5)break;

i++;

}

printf(“%d\n”,i);

}

3.下面是一个计算e的近似值(使误差小于给定的数值)的程序。

main()

{doublee=1.0,x=1.0,y,detax;

inti=1;

printf(“pleaseinputenter:

\n”);

scanf(“%lf”,&detax);

y=1/x;

while(y>=detax)

{

x=x*i;

y=1/x;

e=e+y;

++i;

}

printf(“%12.10f”,e);

}

参考答案:

实验要求:

(1)阅读上面的程序,写出程序所依据的计算公式。

e=1+1/1!

+1/2!

+1/3!

+....+1/n!

(2)当输入的detax各是什么值时,能分别使程序按下面的要求运行:

a.不进入循环;>=1

b.只循环一次;无此条件

c.只循环两次;==1

d.进入死循环(程序将永远循环下去)。

<=0

(3)原程序中while语句中的y>=detax,分别换成y>detax,y=detax,y

4.编写程序。

对输入的任意的一个正整数按反序输出。

例如,输入147,输出741。

参考答案:

#include"stdio.h"

voidmain()

{

intx,i;

scanf("%d",&x);

while(x!

=0)

{i=x%10;

x=x/10;

printf("%d",i);

}

}

任务2do-while语句程序设计

【目的与要求】

1.熟练掌握do-while语句

2.能用do-while语句实现各种算法

2.掌握while语句和do-while语句的区别

1.分析并修改下面的程序,使该程序能正常结束运行。

#include

main()

{intx=0;

do{

x++;

}while(x==2);

printf(“%d\n”,x);

}

2.有以下两段程序,比较输出结果并分析原因:

(一)

main()

{intx=0;

while(x<0)x++;

printf(“%d\n”,x);

}

结果为:

0

(二)

main()

{intx=0;

do{x++;

}while(x<0);

printf(“%d\n”,x);

}

结果为:

1

3.下列程序中,do_while循环的循环次数为__无限次______

#include

main()

{inti=0;

do{if(i==6)continue;

i=i+2;

}while(i<10);

printf(“%d\n”,i);

}

4.运行下列程序,输出结果为_______4000________

#include"stdio.h"

#defineN100

main()

{intx=0,sum=0;

do{if(x==(x/5*5))

continue;

sum=sum+x;

}while(++x

printf("sum=%d\n",sum);

}

5.求1!

+2!

+3!

+4!

+5!

+6!

+7!

+8!

+9!

+10!

请填空将下面的程序补充完整:

答案:

4037913

#include

main()

{intj,m,p,s;

s=0;

m=1;

do

{p=1;

j=1;

while(j<=m)

{p*=j;

j++;

}

s=s+p;

m++;

}while(m<=10);

printf("s=%d\n",s);

}

6.编写程序。

每个苹果0.8元,第一天买2个苹果,第二天开始,每天买前一天的2倍,直至购买的苹果个数总数达到不超过100的最大值,求每天平均花多少钱?

答案:

9.92

参考答案:

#include"stdio.h"

voidmain()

{

intx,sum,day;

doubleave=0;

x=2;

day=1;

sum=2;

do

{x=2*x;

sum=sum+x;

day++;

}while(sum<=100);

ave=(sum-x)*0.8/(day-1);

printf("%lf",ave);

}

实验四、 循环结构实验

(2)

任务1for语句程序设计

【目的与要求】

1.熟练掌握for语句

2.能用for语句实现各种算法

3.掌握for语句的嵌套使用

【上机内容】

1.分析并修改下面的程序,使该程序能正常结束运行。

#include

main()

{inti;

for(i=1;i<10;i++)

printf(“%d\n”,i);

}

2.分析并修改下面的程序,使sum的值为1+2+……+10的和

#include

main()

{inti=1,sum=0;

for(;i<=10;i++)

sum=sum+i;

printf("sum=%d\n",sum);

}

3.运行下列程序,输出结果为_________15________

#include

main()

{inti,sum=0;

for(i=0;i<=10;i++)

{sum=sum+i;

if(i==5)break;

}

printf(“sum=%d\n”,sum);

}

4.运行下列程序,输出结果为_______4000__________

#include

main()

{inti,sum=0;

for(i=0;i<=100;i++)

{if((i%5)==0)

continue;

sum=sum+i;

}

printf("sum=%d\n",sum);

}

5.运行下列程序,输出结果为________6_________

#include

main()

{inti,j,sum=0;

for(i=0;i<=3;i++)

for(j=0;j<=5;j++);

sum=sum+j;

printf("sum=%d\n",sum);

}

6.程序填空。

求出1000以内能被13整除的最大数。

#include"stdio.h"

voidmain()

{inti;

for(i=1000;i>0;i--)

if(i%13==0)

break;

printf("\n%d",i);

}

7、程序填空。

求Fibonacci数列:

1,1,2,3,5,8,···的前40个数,即:

F1=1(n=1)

F2=1(n=2)

Fn=Fn-1+Fn-2(n>=3)

要求每一行输出8个数。

参考答案:

#include

main()

{longf1,f2;

inti;

f1=1;f2=1;

for(i=1;i<=20;i++)

{printf("%10ld%10ld",f1,f2);

if(i%4==0)printf("\n");

f1=f1+f2;

f2=f2+f1;

}

}

8.程序填空。

从键盘输入10个不为0的整型数,统计其中负数的个数,

并求出所有正数的平均值。

参考答案:

#include

main()

{inti,x,count=0;

floatave=0;

for(i=0;i<10;i++)

{scanf("%d",&x);

if(x>0)

ave+=x;

else

count++;

}

if(count!

=10)

ave/=10-count;

printf("count:

%d,Average:

%f\n",count,ave);

}

9.帕多瓦数列:

1,1,1,2,2,3,4,5,7,9,12,16,21,…求出这个数列的前20项之和。

参考答案:

方法1《一次一项》

#include"stdio.h"

voidmain()

{intf1=1,f2=1,f3=1,f,sum=3,i;

printf("%d%d%d",f1,f2,f3);

for(i=4;i<=20;i++)

{f=f1+f2;

printf("%d",f);

sum=sum+f;

f1=f2;

f2=f3;

f3=f;

}

printf("\nsum=%d",sum);

}

方法2《一次3项》

#include"stdio.h"

voidmain()

{intf1=1,f2=1,f3=1,sum=0,i;

for(i=1;i<=7;i++)

{printf("%d%d%d",f1,f2,f3);

sum=sum+f1+f2+f3;

f1=f1+f2;

f2=f2+f3;

f3=f3+f1;

}

printf("\nsum=%d",sum-f3+f1);

}

例:

有一数列:

2/1,3/2,5/3,8/5,…求出这个数列的前20项之和。

#include

main()

{inti=1,n=20;

floatt,m,x=1,y=2,sum=0;

while(i<=n)

{m=y/x;

sum=sum+m;

t=y;

y=y+x;

x=t;

i++;

}

printf("Theresultis:

%10.4f\n",sum);

}

10.统计能被4整除而且个位数为6的4位数的个数及和。

参考答案:

#include"stdio.h"

main()

{inti,sum=0,count=0;

for(i=1000;i<=9999;i++)

if(i%10==6&&i%4==0)

{count++;

sum=sum+i;

}

printf("个数为:

%8d,总和为:

%8d\n",count,sum);

}

11.求1~100之间所有素数的个数及和。

参考答案:

#include

#include

main()

{intm,n,i,j,k,sum=0;

n=0;

for(m=2;m<=100;m++)

{k=(int)sqrt(m);

i=2;

while(m%i!

=0&&i<=k)

i++;

if(i==k+1)

{n++;sum=sum+m;}

}

printf("共有%8d个素数,总和为%8d\n",n,sum);

}

12.编写程序输出下面的数字金字塔。

1

121

12321

1234321

123454321

参考答案:

#include

main()

{

intn=5,i,j;

for(i=1;i<=5;i++)

{

for(j=1;j<=5-i;j++)

printf("");

for(j=1;j<=i;j++)

printf("%d",j);

for(j=i-1;j>=1;j--)

printf("%d",j);

printf("\n");

}

}

实验5函数定义、声明与调用

任务1函数的定义和声明

【目的与要求】

(1)掌握C语言函数定义与调用的规则;

(2)熟悉C语言函数声明的形式与位置;

(3)掌握C语言函数定义、声明与调用之间的关系。

【上机内容】

1.预测下面程序的输出,并上机运行验证结果。

(结果:

21)

#include

func(inta,intb)

{

intc;

c=a+b;

returnc;

}

main( )

{

intx=6,y=7,z=8,r;

r=func((x--,y++,x+y),z--);

printf("%d\n",r);

}

2.分析推测下面程序的输出,并上机运行验证结果。

(结果:

12)

#include

unsignedfun26(unsignednum)

{

unsignedk=1;

do

{k*=num%10;num/=10;}

while(num);

returnk;

}

main( )

{

unsignedn=26;

printf("%d\n",fun26(n));

}

3.求出以下程序的运行结果,并描述程序所完成的功能。

(求x的n次幂即2的4次幂。

结果:

16)

#include

main( )

{

intpower(intx,intn);

intx=2,n=4;

printf("\ns=%d",power(x,n));

}

intpower(intx,intn)

{

inti,p=1;

for(i=1;i<=n;i++)

p=p*x;

return(

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

当前位置:首页 > 经管营销

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

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