C语言基础学习----循环结构设计

验证哥德巴赫猜想,任意一个很大的偶数,都可以写成两个素数之和
1
#include<stdio.h> 2 #include<stdlib.h> 3 #include<math.h> 4 5 void main() 6 { 7 int x; 8 int p=1,q,i,j; 9 int flagp,flagq; 10 do 11 { 12 x=0; 13 printf("input an even number\n"); 14 scanf("%d",&x); 15 }while(x%2!=0); 16 do 17 { 18 p+=1; 19 q=x-p; 20 flagp=1; 21 flagq=1; 22 for(i=2;i<=(int)(floor(sqrt((double)(p))));i++) 23 { 24 if((p%i)==0) {flagp=0; break;} //判断q是否为素数 25 26 } 27 if(flagp==0) continue; //当p不是素数时,不再判断q是否为素数,执行下一次循环 28 j=2; 29 while(j<=(int)(floor(sqrt((double)(q))))) //当p为素数时,判断q是否为素数 30 { 31 if((q%j)==0) {flagq=0; break;} 32 j++; 33 } 34 }while(flagp*flagq==0); 35 printf("%d=%d+%d\n",x,p,q); 36 }

 

跳转语句   

  • break     只能用于循环语句和switch语句中。  循环体中经常和if 配套使用
  • continue    只能用于循环语句、循环体中。程序跳过continue语句后面的其余语句,接着执行循环体的下一次循环。
 1 #include<stdio.h>
 2 void main                                      //输出100-200之间的奇数
 3 { 
 4     int n;
 5     n=100;     
 6     while(n<=200)
 7     {
 8         if(n%2==0)
 9         {
10             n++;
11             continue;                           //跳过后面语句,执行下一次循环
12         }
13         printf("%d\n",n);
14         n++;
15     }
16 }
  • goto     无条件转移语句    goto跳转到同一函数内部某个位置的一个标号语句处。可以从循环体内部跳出循环,在多层循环中,可以跳到任意一层循环体。
  •     goto  标号;  //标号用标识符表示
  •     标号:语句;
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int i,sum=0;
 5     i=1;
 6     loop:if(i<=100)
 7     {
 8         sum+=i;
 9         i++;
10         goto loop;                //goto后没有:
11     }
12     printf("sum=%d",sum);
13     getchar();
14     return 0;
15 }

循环结构

  • do  while             //当条件为真时执行循环,为假则结束循环
  • do  until              //当条件为真时结束循环,为假时执行循环
 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<math.h>
 4 int main()
 5 {
 6     double s,t,x;                      //s表示多项式的值,t表示每一项的值
 7     int n;
 8     printf("input the value of x:\n");
 9     scanf("%lf",&x);
10     t=x;
11     n=1;
12     s=x;
13     do                                                //计算sin(x)的值,最后一项绝对值小于1e-7时截止
14     {              
15         n+=2;
16         t=t*(-x*x)/((float)(n)-1)/((float)(n));       //n值为1,3,5,7.... 后一项是前一项乘一个因子(-x*x)/(n*(n-1))
17         s=s+t;
18     }while(fabs(t)>=(1e-8));                          //fabs(double num)返回绝对值,属于math.h函数库
19     printf("sinf(%f)=%lf\n",x,s);
20 
21     system("pause");
22     return 0;
23 }

求两个数的最大公约数和最小公倍数

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 int main()
 4 {
 5     int x,y,num1,num2,temp;
 6     printf("input two number num1 and num2 \n");
 7     scanf("%d %d",&num1,&num2);
 8     if(num1>num2)
 9     {
10         temp=num1;
11         num1=num2;
12         num2=temp;
13     }
14     x=num1;
15     y=num2;
16     while(y!=0)                                 //迭代计算最大公约数,x为二者中较小的一个数
17     {
18         temp=x%y;
19         x=y;
20         y=temp;
21     }
22     printf("最大公约数是:%d\n",x);
23     printf("最小公倍数是:%d\n",num1*num2/x);
24 
25     system("pause");
26     return 0;
27 
28 }

 

posted @ 2016-11-13 11:28  哇咔咔2016  阅读(122)  评论(0)    收藏  举报