6.循环控制
例子:
1).用 do while 求算术平方根:
#include <stdio.h>
double DoSqrt(double z){
double a=1;
double b=0;
double c=0;
do{
if(b*b<z){
b+=a;
}
else{
c=b;
b-=a;
a/=10;
}
}while(a>0.000001);
return (b+c)/2;
}
int main(void){
double x, y;
printf("Please input a number:");
scanf("%lf", &x);
if(x<0){
printf("Input error!");
}
else {
y=DoSqrt(x);
printf("Sqrt of %g : %g.\n", x, y);
}
int z=1;
do{
main();//while 10 times
z++;
}while(z>10);
return 0;
}
2).求素数(Prime number)
算法代码:
int PrimeNumber(int n){
for(i=2;i<=sqrt(n);i++){
if(n%i==0){
return 0; //不为素数
}
else{
return 1; //为素数
}
}
}
求100以内的素数。
#include<stdio.h>
#include<math.h>
int main(){
int i,j;
printf("100以内的素数有:\n");
for(i=2;i<100;i++){
for(j=2;j<sqrt(i);j++){
if(i%j==0){
break;
}
}
if(j>sqrt(i)){
printf("%d,\t",i);
}
}
}
第一个循环里面。i遍历从2到100以内的所有数字,第二个循环是在2到sqrt(i)之间看看是不是可以整除i。可以整除则不是素数,相反不可以整除,则是素数。