⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex5.cpp

📁 这里有大量的习题解答
💻 CPP
字号:
                    
    //       第5章    循环控制

	

//    [例5.1] 求小于n的奇数的和(n选定为6)
	#include<stdio.h>
    void main(void)
	{   const int n=6; 	int sum=0;     
	    int  Odd=1;                    //循环的初值	
        while (Odd <=n)
	    {   if (Odd % 2==1) sum+=Odd;    // Odd =2*n+1 , Odd%2==1	
	        Odd++;                     //循环的增量条件不应受if 表达式的影响
	    } 
	    printf("Odd sum =%d from 0 to %d,Odd =%d\n",sum,n,Odd);
	}				//输出:Odd  sum =9 from  0  to 6,Odd =7
//[例5.2]求不大于 n的偶数的和(n选定为6)
    #include<stdio.h>
    void main(void)
	{   const int n=6;	 int  sum=0;
	    int  Even = 0; 		                //循环的初值	
        do {   if (Even%2 ==0)   sum+=Even;  // Even =2*n , Even%2==0
		  Even++; //循环的增量条件不能受上面if 表达式的影响,否则是死循环
	    } while (Even <=6) ;          
	    printf("Even sum =%d from 0 to %d,Even+1=%d\n",sum,n,Even);      
	}							//输出:Even sum =12 from 0 to 6,Even+1=7
//	[例5.3]do~while循环与while循环的比较  
	#include<stdio.h>                            #include<stdio.h>
    int d(int k)                                 
    {   int sum=0;                             
	    do   sum+=k++;                           
	    while(k<101);                          	  
		return sum;                              
    } //do~while循环求和
    int w(int k)
	{   int sum=0;
		  while(k<101) sum+=k++;
		   return sum;
    }   //while循环求和
	void main(void)                               
	{                                           
	    printf("%d,%d",d(1),d(101));              
		printf("%d,%d",w(1),w(101));
	 }	/*输出:5050,101*/                           //输出: 5050;0
//[例5.4]弦截法求方程y=f(x)=((x-5)*x+16)*x-80=0的根
   # include<stdio.h>
    # include<math.h>//fabs函数原型在math.h
	float f(float x)	{ return ((x-5)*x+16)*x-80;	}
	float root(float a,float b)
	{  if(f(a)*f(b)>0) return  -8888888.0;
	   float x;
	   do{	x=(a*f(b)-b*f(a))/(f(b)-f(a));
			if(f(a)*f(x)>0)    a=x ;
			else            b=x;
		}while (fabs(f(x))>0.00001 );
	   return x;
	}
	void main(void)
	{  printf("%f\n ",root(2,6));//输出:5.000000
	   printf("%f",root(2,4));  //输出:-8888888.000000
    }   
//[例5.5] 求小于n的奇数的和(n选定为6)          
	#include<stdio.h>                          
    void main(void)                             
	{   const int n=6 ; 	int sum=0;                   
        for (int i=1;i <n;i++)                       
	      if (i % 2==1) sum+=i;                 	 
	    printf("sum =%d \n",sum);                       
	}	/*输出:sum =9*/                       
	//[例5.6] 求上限为n的偶数的和的函数
	 int  f(int n)
	 {    int sum=0;
		  for (int i=1;i <=n;i++)
			   if (i % 2==0) sum+=i;
	     return sum;  
	 }
 //  [例5.7]用公式求近似值
   	#include<stdio.h>                          
    void main(void)                             
	{   int sign=1 ;	double pi=1;
	    for (double n=1;n<1000000;n+=2,pi+=sign/n)	
			  sign=-sign; 
	    printf("pi =%f\n",pi*4);          /*输出:pi =3.141595*/    
	}//表达式sign/n中,sign和n不能都是整数,因为当n>2,1/(int)n的结果为0。
//(常规形式:for (initexpre;conditionexpre;stepexpre){ statement;} 
      # include<iostream.h>     //求自然数的和
      void main(void) 
      { int sum=0;for(int k=0;k<=100;sum+=k++)
	             ;      // 循环体的语句为空语句
	     cout<<sum <<endl;
      }               //输出  5050
//     (初始化表达式前置: initexpre; for (;conditionexpre;stepexpre)    { statement; }
     # include<iostream.h>
	 int sum(int k)            //此种形式用于函数体中,初始值直接从形参中获得
	 {  int s=0;
	    for(;k<=100;s+=k++)  ; // 循环体的语句为空语句
	    return s;
	 }
    void main(void)     {  cout<<sum(10) <<endl; }        //输出 5005
    ( 条件表达式内置(目的是灵活控制循环的跳出条件):
       for (initexpre;;stepexpr)
        {   if(condition1==0) break;    //条件1为0跳出循环
            statement;               //条件1非0继续循环
            if(condition2)  break;      //条件2为非0跳出循环
        }       //for (initexpre;;stepexpr)等价于 for (initexpre;1;stepexpr)
//[例5.8]输出奇数                                
      # include<iostream.h>                
      void main(void)                        
      {   for(int k=1;k<10;k++)             
		  {   if(k%2==0) continue; 	             
			  cout<<k<<",";                   
	     }	                                
      }/*输出:1,3,5,7,9,*/                 
  //[例5.9]输出偶数  
	 # include<iostream.h>
	void main(void)
	 {  for(int k=1;;k++){
		  if(k%2==0) {cout<<k<<","; continue; }
		  if(k>10)   break;
		}  
	}  //输出:2,4,6,8,10,	
//[例5.10]输出奇数                         
     # include<iostream.h>                    
     void main(void)                        
     { for (int k=0;;)                        
	   {  k++;                               
	      if(k<10) 	                            
		   {if(k%2){cout<<k; continue;}}             
          else   break;                        
	   }                                 
	  }//输出:13579
 //[例5.11]输出偶数
	 # include<iostream.h>
	  void main(void)
	  {  for (int k=0;;)
		 {   k++;
		     if(k%2==0) {cout<<k; continue;}
		     if(k>10)   break;
	    }
	  }//输出:246810
	 //(无穷循环for (;;)
     # include<iostream.h>  
     void main(void)
     {   int k=0,sum=0;          // initexpre;
         for(; ;)                 //for (;;)
         {   if( k>100)  break;   //{ if(condition)  break;条件判断为真退出循环
             sum+=k;           //   statement;         条件判断为0执行循环体
             k++;               //  stepexpre;         循环步长增量变动
         }                      //}  
         cout<<sum <<endl;       /*输出 5050*/
     }   
//[例5.12]for循环与if~goto label 循环比较
//1.for循环实现求和                
# include<iostream.h>                       
void main(void)                               
{  	int k=0,sum=0;                            
	for(; ;)                                            
	{  if( k>100)  break;                    
	   sum+=k++;                                 
	}                                          
 	cout<<sum <<endl;                    
}                                      
	
//2. if~goto label 循环求和 
	# include<iostream.h>
	void main(void)  
	 {  int k=0,sum=0;
	 loop: 
	   if(k>100) goto end; 
	   sum+=k++;    
	   goto loop;     
	 end:cout<<sum <<endl; 
	 }/*输出 5050*/    
 //3. goto 语句循环求和函数
	 int sum(int n=100)
	 {   int k=1,s=0;
	  loop:
	  	if(k<=n)
		{  s+=k++;
			goto loop;
		}
		return s;
    }
//	[例5.13] 求和,误差小于指定的精度eps
	#include<stdio.h>
	#include<math.h>
	const  double e=exp(1);
	double expf()                 //函数名为expf,入口无参,返回double型数据
	{	double const eps=1.0e-19;  	
		double sum=1; int n=1;
		while(e-sum>eps)
		 {  	double facn=1;
			for(int i=1;i<=n;i++) facn*=i;  //内层循环求n!阶乘。n!=1*2*...*n
			sum+=1.0/facn; 
			n++;
		 }
		return sum;                //函数返回所求结果
	}					//输出:e=2.718282,es=2.718282
	void main()	
	{	
		printf("e=%lf,es=%lf\t",e,expf());
	}






⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -