设为首页 加入收藏

TOP

实验五 循环结构程序设计
2014-11-23 17:37:12 来源: 作者: 【 】 浏览:9
Tags:实验 循环 结构 程序设计

【目的与要求】


熟练掌握while、do—while和for三种循环语句的应用。


【上机内容】


【一般示例】


【例1】求5!


main()


{


int n,t;


n=1;


t=1;


while(t<=5)


{


n=n*t;


t=t+1;


}


printf(“%d”,n);


}


【例2】求和s=1!+2!+3!


main()


{


int n,s=0,t=1;


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


{


t=t*n;


s=s+t;


}


printf(“%d”,s);


}


【例3】求和s=1!+3!+5!


main()


{


int s=0,t,i,j;


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


{


t=1;


for(j=1;j<=2*i-1;j++)


t=t*j;


s=s+t;


}


printf(“%d”,s);


}



【例4】求和s= 3+33+333


main()


{


int s=0,t=3,i;


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


{


s=s+t;


t=10*t+3;


}


printf(“%d”,s);


}


【例5】有一数列:2/1,3/2,5/3,8/5,…求出这个数列的前10项之和。


main()


{


int n,t,;


float a=2,b=1,s=0;


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


{


s=s+a/b;


t=a;


a=a+b;


b=t;


}


printf(“%f”,s);


}


【例6】打印500以内的“水仙花数”。“水仙花数”是一个三位数,其各位数立方和等于该数本身。 main()


{


int i,j,k,n;


for(n=100;n<=500;n++)


{


i=n/100;


j=n/10-i*10;


k=n%10;


if(n= =i*i*i+j*j*j+k*k*k)


printf(“ %d”,n);


}


}


【例7】一个数如果恰好等于它的因子之和,这个数就称为完数。求100之内的所有完数。


main()


{


int n,s,j;


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


{


s=0;


for(j=1;j

if (n%j= =0)


s=s+j;


if (s= =n)


printf(“%d”,s);


}


}


【典型示例】


【例1】计算两个数的最大公约数; 分析:首先,随机输入两个数m,n(默认m>n);其次,算法:使k为m除以n的余数,如果m能被n整除,则k值为0,n为这两个数的最大公约数,否则,使k代替n,n代替m,重复以上过程,直到k值为0。


#include"stdio.h"


main()


{


int m,n,k,result;


printf("Enter two numbers:");


scanf("%d,%d",&m,&n);


if(m>0&&n>0) /*限定两个正整数*/


{


do


{


k=n%m;


if(k= =0)


result=m;


else


{


n=m;


m=k;


}


}while(k>0); /*循环取余求出最大公因子*/


printf("The greatest common divistor is:%d\n",result);


}


else printf("Nonpositive values not allowed\n");


}


【例2】用牛顿迭代求方程2x3-4x2+3x-6=0在1.0附近的根。


#include “math.h”


main()


{


float x,x0,f,f1;


x=1.0;


do


{ x0=x;


f=((2*x0-4)*x0+3)*x0-6;


f1=(6*x0-8)*x0+3;


x=x0-f/f1;


}


while(fabs(x-x0)>=1e-5);


printf(“%6.2f”,x);


}


【例3】打印下列图案


*


***


*****


*******


main()


{ int i,j;


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


{for(j=1;j<= 4-i;j++)


printf(“ ”);


for(j=1;j<=2*i-1;j++)


printf(“*”);


printf(“\n”);


}


}


【例4】判断m是否是素数。


程序:


#include


main()


{


int m,i,k;


scanf(“%d”,&m);


k=sqrt(m+1);


for(i=2;i<=k;i++)


if (m%i= =0)


break;


if(i>=k+1)


printf(“%d is a prime number\n”,m);


else


printf(“%d is not a prime number\n”,m);



}




【作业】


1.输入两个正整数m和n,求其最大公约数和最小公倍数。


2.求Sn=a+aa+aaa+…+aa…a 之值,其中a是一个数字。例如:2+22+222+2222+22222(此时n=5), n由键盘输入。


3.求和1!+2!+3!+4!+…20!


4. 打印100-999之间所有的“水仙花数”。“水仙花数”是一个三位数,其各位数立方和等于该数本身。


5. 一个数如果恰好等于它的因子之和,这个数就称为完数。求1000之内的所有完数。


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


7. 用迭代法求x= √a 。求平方根的迭公式为


xn+1=1/2(xn+a/xn)


要求前后两次求出的x的差的绝对值小于10-5


8. 用牛顿迭代求方程2x3-4x2+3x-6=0在1.5附近的根。


9. 打印下列图案


*


***


*****


***


*



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇实验六 一维数组 下一篇实验四 选择结构程序设计

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: