格雷戈里公式求Π近似值练习
#include#include int main(void) { int denominator,flag,i; double eps,item,pi; printf("enter nyour eps="); scanf("%lf",&eps); denominator=1;//分母 i=1;//存放项数 flag=1;//存放符号 item=1.0;//存放i项的值 pi=0;//存放结果 while(fabs(item) >=eps)//fabs()数学函数绝对值 { pi=item+pi; i++; flag=-flag; denominator=denominator+2; item=flag*1.0/denominator;//注意整数相乘除为整数 } pi=pi+item;//加上最后一项 pi=pi*4; printf("pi=%.4lfn",pi); printf("i=%d",i); return 0; }
do_while循环
先执行do语句,在判断循环条件。即无论循环条件是什么,都至少会执行一次循环语句。
利用此性质,也可对一些代码进行优化。
原先代码:
#includeint main(void) { int count,number,t_number;//count记录位数 count=1; //count初值为1,以防止number=0的情况 printf("please enter your number"); scanf("%d",&number); t_number=number;//保存Number的值 if(number<0) { t_number=-t_number; } t_number=t_number/10;//这里为了防止为个位数的情况要在进行消除一位的代码 while(t_number!=0) { count=count+1; t_number=t_number/10; } printf("your’s number count is %d.",count); return 0; }
用do_while:
#includeint main(void) { int count,number,t_number;//count记录位数 count=1; //count初值为1,以防止number=0的情况 printf("please enter your number"); scanf("%d",&number); t_number=number;//保存Number的值 if(number<0) { t_number=-t_number; } do { count=count+1; t_number=t_number/10; } while(t_number!=0);//继续循环的条件,do_while循环使得do中的代码至少执行了一次 printf("your’s number count is %d.",count); return 0; }
break与continue
二者都可用于循环中,且在循环中使用时,需要添加条件,即用if.
二者的区别有:
1,break在循环中跳过接下来的语句,直接跳出循环。continue在循环中,则跳过接下来的语句,直接进入下一轮循环。
2,continue只能用于循环中,而break还可用于switch语句中。
#include#include #include int main(void) { int count=0; int flag=0; int yournumber,mynumber; srand(time(0));//利用函数使随机数的产生与系统时钟有关 mynumber=rand()%100+1;//产生随机数 flag=0; while(count<7) { printf("hi,in this game.I have a number.you have 7 chance to guess the number.nplease enter your number 1~100=n"); scanf("%d",&yournumber); count=count+1; if(yournumber==mynumber) { flag=1; printf("ok,you are rightn"); break;//跳出循环 } else if(yournumber 自定义函数求阶乘和:
#includedouble fact(int a); int main(void) { int i,n; double sum; printf("please enter the n ="); scanf("%d",&n); sum=0; for(i=1;i<=n;i++) { sum=sum+fact(i); } printf("the sum = %f",sum); return 0; } double fact(int a) { double result; int i; result=0; if(a<0) { return 0;//负数的阶乘为无穷小,为零 } for(i=1;i<=a;i++) { result=result*i; } return result; }



