首页 > 其他 > 详细

条件与循环和运算符

时间:2020-05-09 03:04:20      阅读:48      评论:0      收藏:0      [点我收藏+]

 

运算符优先级表

优先级

运算符

名称或含义

使用形式

结合方向

说明

1

[]

数组下标

数组名[常量表达式]

左到右

 

()

圆括号

(表达式)/函数名(形参表)

 

.

成员选择(对象)

对象.成员名

 

->

成员选择(指针)

对象指针->成员名

 

2

-

负号运算符

-表达式

右到左

单目运算符

(类型)

强制类型转换

(数据类型)表达式

 

++

自增运算符

++变量名/变量名++

单目运算符

--

自减运算符

--变量名/变量名--

单目运算符

*

取值运算符

*指针变量

单目运算符

&

取地址运算符

&变量名

单目运算符

!

逻辑非运算符

!表达式

单目运算符

~

按位取反运算符

~表达式

单目运算符

sizeof

长度运算符

sizeof(表达式)

 

3

/

表达式/表达式

左到右

双目运算符

*

表达式*表达式

双目运算符

%

余数(取模)

整型表达式/整型表达式

双目运算符

4

+

表达式+表达式

左到右

双目运算符

-

表达式-表达式

双目运算符

5

<< 

左移

变量<<表达式

左到右

双目运算符

>> 

右移

变量>>表达式

双目运算符

6

大于

表达式>表达式

左到右

双目运算符

>=

大于等于

表达式>=表达式

双目运算符

小于

表达式<表达式

双目运算符

<=

小于等于

表达式<=表达式

双目运算符

7

==

等于

表达式==表达式

左到右

双目运算符

!=

不等于

表达式!= 表达式

双目运算符

8

&

按位与

表达式&表达式

左到右

双目运算符

9

^

按位异或

表达式^表达式

左到右

双目运算符

10

|

按位或

表达式|表达式

左到右

双目运算符

11

&&

逻辑与

表达式&&表达式

左到右

双目运算符

12

||

逻辑或

表达式||表达式

左到右

双目运算符

13

?:

条件运算符

表达式1? 表达式2: 表达式3

右到左

三目运算符

14

=

赋值运算符

变量=表达式

右到左

 

/=

除后赋值

变量/=表达式

 

*=

乘后赋值

变量*=表达式

 

%=

取模后赋值

变量%=表达式

 

+=

加后赋值

变量+=表达式

 

-=

减后赋值

变量-=表达式

 

<<=

左移后赋值

变量<<=表达式

 

>>=

右移后赋值

变量>>=表达式

 

&=

按位与后赋值

变量&=表达式

 

^=

按位异或后赋值

变量^=表达式

 

|=

按位或后赋值

变量|=表达式

 

15

,

逗号运算符

表达式,表达式,…

左到右

从左向右顺序运算

 

 基本的if语句

              if (条件成立) { 则执行此语句 }; //

     if (1) printf("条件成立");

认识算术比较

     小于 <

     大于 >

     等于 ==

关系运算符表达式

    5>10 //不成立 0

    1>0  //成立 1

    3==5 //

    5<1 //

运算符表达式用法

      int 明=22,玲=23;

           printf("明%d岁,玲%d岁,",明,玲);

           if (明>玲) printf("明比玲大%d 岁\n",abs(明-玲));

                if (明<玲) printf("明比玲小%d 岁\n",abs(明-玲));

技术分享图片
#include <stdio.h>
#include <math.h>
int  main(void) //main是程序入口
  {
     
     
    int 明=129,玲=29;
    printf("明%d岁,玲%d岁,",明,玲);
    if (明>玲) 
    {
        printf("明比玲大%d 岁\n",abs(明-玲));
    }
    if (明<玲)
    {
        printf("明比玲小%d 岁\n",abs(明-玲));
    }
    if (明==玲)
    {
        
        printf("明与玲一样大\n");
    }
      
    getchar();
    return 0;  //返回一个0
  }//一段程序结束
View Code
技术分享图片
明129岁,玲29岁,明比玲大100 岁
View Code

scanf格式化输入

    scanf; %d来格式化

 

if..else扩展语句 

   if (明<=玲)

         {

                  printf("明比玲小%d 岁\n",abs(明-玲));

         }

         if (明>玲)

         {

         printf("明与玲一样大\n");

              }

//等价于下边代码

 

   if (明<=玲)

         {

                  printf("明比玲小%d 岁\n",abs(明-玲));

         }else

         {

         printf("明与玲一样大\n");

              }

在if语句中使用代码块

if (明>玲)

         {

                  printf("明比玲大%d 岁\n",abs(明-玲));         

                  printf("玲比明小一些\n");

              }

 

if语句的嵌套使用

if (明>玲)

         {

                  printf("明比玲大%d 岁\n",abs(明-玲));

                  if ( 明-玲 >10)

                  {

                           printf("明比玲大得多\n");

                  }

         }

 

技术分享图片
#include <stdio.h>
#include <math.h>
int  main(void) //main是程序入口
  {
     
     
    int 明=0,玲=0;
    printf("请输入明的年龄:");
    scanf("%d",&明);
    printf("请输入玲的年龄:");
    scanf("%d",&玲);
    getchar();
    printf("明%d岁,玲%d岁,",明,玲);
    if (明<玲)
    {
        printf("\n明比玲小%d 岁\n",abs(明-玲));
    }else

    if (明>玲) 
        {//
            printf("\n明比玲大%d 岁\n",abs(明-玲));
            if (明-玲>20) 
            {
                 printf("\n明比玲大很多\n");
            }
        }else    printf("\n明与玲一样大\n");
    
    
      
    getchar();
    return 0;  //返回一个0
  }//一段程序结束
View Code
技术分享图片
请输入明的年龄:1 2
请输入玲的年龄:明1岁,玲2岁,
明比玲小1 岁
View Code

 

 

例:某公司招聘职员,年龄要求:18-30;

 

逻辑运算符 &&

  条件1: 年龄>=18

  条件2: 年龄<=30

  条件1&&条件2 满足要求

   1 && 1=1;

   0 && 1=0;

   1 && 0=0;

   0 && 0=0;

 

  int   age;

逻辑运算符 ||

  条件1: 年龄<18

  条件2: 年龄>30
  条件1 || 条件2 都不满足要求
  1 || 1=1
  0 || 1=1
  1 || 0=1
  0 || 0=0

 

逻辑运算符 !

! (1223)=0;

! (0)=1;

!(条件1 || 条件2)  // 条件1&&条件2



elise if


if (age>=18)

         {

                  if (age<=30)

                  {

               printf("年龄=%d  满足应聘条件YYY\n",age);

                  }else

                  {

           printf("年龄=%d 不满足应聘条件NNN\n",age);

                  }

         }else

         {

      printf("年龄=%d 不满足应聘条件NNN\n",age);

         }

 

技术分享图片
#include <stdio.h>
#include <math.h>
int  main(void) //main是程序入口
  {
     
     
    int age=0;
    printf("请输入应聘人的年龄:");
    scanf("%d",&age);
    getchar();
    /*if (age>=18&&age<=30)
    {
        printf("年龄=%d  满足应聘条件YYY\n",age);
    }else
    {
        printf("年龄=%d 不满足应聘条件NNN\n",age);
    }*/
    /*if (! (age<18||age>30) )
    {
        printf("年龄=%d  满足应聘条件YYY\n",age);
    }else
    {
        printf("年龄=%d 不满足应聘条件NNN\n",age);
    }*/
    /*if (age>=18)
    { 
        if (age<=30)
        {
               printf("年龄=%d  满足应聘条件YYY\n",age);
        }else
        {
           printf("年龄=%d 不满足应聘条件NNN\n",age);
        }
    }else
    {
      printf("年龄=%d 不满足应聘条件NNN\n",age);
    }*/
    if (age<18)
    { 
         printf("年龄=%d 不满足应聘条件NNN\n",age);
    }else if(age>30)
    {
         printf("年龄=%d 不满足应聘条件NNN\n",age);
    }else
    {
         printf("年龄=%d  满足应聘条件YYY\n",age);
    }
    
    getchar();  
    getchar();
    return 0;  //返回一个0
  }//一段程序结束
View Code
技术分享图片
请输入应聘人的年龄:25
年龄=25  满足应聘条件YYY
View Code

 

 

认识switch格式

 switch(表达式)

 {

   case 常量表达式:

    语句1;

    break;

   case 常量表达式:

    语句2;

    break;

   case 常量表达式:

    语句3;

    break;  

    ................

   default:

   语句n; 

   break;  

  }

.........

 

实例运用:

 假设有一期彩票开奖,数字28赢得一等奖,数字 16赢得二等奖,数字39赢得三等奖,数字138赢得末等奖;

这时要求我们设计一段程序来判断:

 

技术分享图片
#include <stdio.h>

#include <math.h>

int  main(void) //main是程序入口

  {

    

    

   int num;

   printf("请输入彩票号码:");

   scanf("%d",&num);

   //if (num==28)

   //{

           // printf("彩票号码为%d,恭喜,你中了一等奖\n",num);

   //}else if (num==16)

   //{

           //  printf("彩票号码为%d,恭喜,你中了二等奖\n",num);

   //}else if (num==39)

   //{

           // printf("彩票号码为%d,恭喜,你中了三等奖\n",num);

   //}else if (num==138)

   //{

           // printf("彩票号码为%d,恭喜,你中了末等奖\n",num);

   //}else

   //{

           // printf("你彩票的号码未中奖...");

   //}

        

   switch(num)

   {

   case 28:

                  {

                           printf("彩票号码为%d,恭喜,你中了一等奖\n",num);

                           break;

                  }

   case 16:

                  {

                           printf("彩票号码为%d,恭喜,你中了二等奖\n",num);

                           break;

                  }

   case 39:

                  {

                           printf("彩票号码为%d,恭喜,你中了三等奖\n",num);

                           break;

                  }

   case 138:

                  {

                           printf("彩票号码为%d,恭喜,你中了末等奖\n",num);

                           break;

                  }

   default:

        printf("你彩票的号码未中奖...");

 

   }

         getchar(); 

         getchar();

         return 0;  //返回一个

  }//一段程序结束

 
View Code
技术分享图片
请输入彩票号码:50
你彩票的号码未中奖...
View Code

 

 

认识goto格式

    goto 标签地址:

    一般会配合if语句使用

 

实例运用:

 假设有一期彩票开奖,数字28赢得一等奖,数字 16赢得二等奖,数字39赢得三等奖,数字138赢得末等奖;

这时要求我们设计一段程序来判断:

 

技术分享图片
#include <stdio.h>

#include <math.h>

int  main(void) //main是程序入口

  {

    

    

   int num;

  

   printf("请输入彩票号码:");

   scanf("%d",&num);

   if (num==28)

   {

             goto Label1;

   }else if (num==16)

   {

             goto Label2;

            

   }else if (num==39)

   {

             goto Label3;

          

   }else if (num==138)

   {

             goto Label4;

           

   }else

   {

            goto Label5;

   }

        

 

  

         getchar(); 

         getchar();

         return 0;  //返回一个

Label1:

          printf("彩票号码为%d,恭喜,你中了一等奖\n",num);

          goto end;

Label2:

          printf("彩票号码为%d,恭喜,你中了二等奖\n",num);

         goto end;

Label3:

          printf("彩票号码为%d,恭喜,你中了三等奖\n",num);

         goto end;

Label4:

          printf("彩票号码为%d,恭喜,你中了末等奖\n",num);

    goto end;

Label5:

          printf("你彩票的号码未中奖...");

         goto end;

end:

 getchar(); 

 getchar();

 return 0;  //返回一个

  }//一段程序结束
View Code
技术分享图片
请输入彩票号码:28
彩票号码为28,恭喜,你中了一等奖
View Code

 

 

认识for循环格式

   1、 for (初值表达式;结束条件;循环表达式)

     {

      语句1;

      语句2;

      ...

      语句n;

     }

     语句b;

     ....

   2、备注

  初值表达式:在执行语句1以前仅执行一次;

  结束条件:  当条件成立后 语句b;

  循环表达式:语句n执行完后就会执行一次循环表达式

实例运用:

   假设有一期彩票开奖,数字28赢得一等奖,数字 16赢得二等奖,数字39赢得三等奖,数字138赢得末等奖;

这时要求我们设计一段程序来判断:

   修改代码,用for循环优化程序.

  

 

技术分享图片
#include <stdio.h>
#include <math.h>
void isyes()
{
    int num;
    scanf("%d",&num);
    getchar(); 

    switch(num)
    {
    case 28:
        {
            printf("彩票号码为%d,恭喜,你中了一等奖\n",num);
            break;
        }
    case 16:
        {
            printf("彩票号码为%d,恭喜,你中了二等奖\n",num);
            break;
        }
    case 39:
        {
            printf("彩票号码为%d,恭喜,你中了三等奖\n",num);
            break;
        }
    case 138:
        {
            printf("彩票号码为%d,恭喜,你中了末等奖\n",num);
            break;
        }
    default:
        printf("你彩票的号码未中奖...\n");

    }
}
int  main(void) //main是程序入口
  {
     
     
   
    int i;
   printf("请输入彩票号码:");
   
   
   for (i=0;i<=100;++i)
   {
       //验证是否中奖
       isyes();
    
   }
   
   getchar();
    return 0;  //返回一个0
  }//一段程序结束
View Code
技术分享图片
请输入彩票号码:20
你彩票的号码未中奖...
View Code

修改代码,用goto和swich优化程序.

技术分享图片
#include <stdio.h>
#include <math.h>
int  main(void) //main是程序入口
  {
     
     
   int num;
   int i=0;
start:
   printf("请输入彩票号码:");
   scanf("%d",&num);
 
    
   switch(num)
   {
   case 28:
        {
            printf("彩票号码为%d,恭喜,你中了一等奖\n",num);
            break;
        }
   case 16:
        {
            printf("彩票号码为%d,恭喜,你中了二等奖\n",num);
            break;
        }
   case 39:
        {
            printf("彩票号码为%d,恭喜,你中了三等奖\n",num);
            break;
        }
   case 138:
        {
            printf("彩票号码为%d,恭喜,你中了末等奖\n",num);
            break;
        }
   default:
        printf("你彩票的号码未中奖...\n");

   }
    getchar();  
    i++;
    if (i<1000) goto start;
    getchar();
    return 0;  //返回一个0
  }//一段程序结束
View Code

 

 

认识while循环格式

   1、 while(循环条件)

     {

      语句1;

      语句2;

      ...

      语句n;

     }

     语句b;

     ....

    for(;条件;)

二、实例运用:

   假设有一期彩票开奖,数字28赢得一等奖,数字 16赢得二等奖,数字39赢得三等奖,数字138赢得末等奖;

这时要求我们设计一段程序来判断:

  1、 修改代码,用while循环优化程序.

技术分享图片
#include <stdio.h>
#include <math.h>
void isyes()
{
    int num;
    scanf("%d",&num);
    getchar(); 

    switch(num)
    {
    case 28:
        {
            printf("彩票号码为%d,恭喜,你中了一等奖\n",num);
            break;
        }
    case 16:
        {
            printf("彩票号码为%d,恭喜,你中了二等奖\n",num);
            break;
        }
    case 39:
        {
            printf("彩票号码为%d,恭喜,你中了三等奖\n",num);
            break;
        }
    case 138:
        {
            printf("彩票号码为%d,恭喜,你中了末等奖\n",num);
            break;
        }
    default:
        printf("你彩票的号码未中奖...\n");

    }
}
int  main(void) //main是程序入口
  {
     
     
   
    int i;
   printf("1--100以内能被3整除的数有:\n");
   
   
   //for (i=0;i<=100;++i)
    i=1;
    while(i<=100)
   {
       //验证是否中奖
       //isyes();
       if (i%3==0)
       {
           printf("%2d,",i);
       }
       if (i%10==0)
       {
           printf("\n");
       }
       ++i;//i=i+1;
   }
   
   getchar();
    return 0;  //返回一个0
  }//一段程序结束
View Code
技术分享图片
1--100以内能被3整除的数有:
 3, 6, 9,
12,15,18,
21,24,27,30,
33,36,39,
42,45,48,
51,54,57,60,
63,66,69,
72,75,78,
81,84,87,90,
93,96,99,
View Code

 

  2、 找出1至100内能被3整除的数

技术分享图片
//郁金香灬外挂技术 www.yjxsoft.net www.yjxsoft.com  QQ150330575

#include <stdio.h>
#include <math.h>
void isyes()
{
    int num;
    scanf("%d",&num);
    getchar(); 

    switch(num)
    {
    case 28:
        {
            printf("彩票号码为%d,恭喜,你中了一等奖\n",num);
            break;
        }
    case 16:
        {
            printf("彩票号码为%d,恭喜,你中了二等奖\n",num);
            break;
        }
    case 39:
        {
            printf("彩票号码为%d,恭喜,你中了三等奖\n",num);
            break;
        }
    case 138:
        {
            printf("彩票号码为%d,恭喜,你中了末等奖\n",num);
            break;
        }
    default:
        printf("你彩票的号码未中奖...\n");

    }
}
int  main(void) //main是程序入口
  {
     
     
   
    int i;
   printf("1--100以内能被3整除的数有:\n");
   
   
   //for (i=0;i<=100;++i)
    i=1;
    while(i<=100)
   {
       //验证是否中奖
       //isyes();
       if (i%3==0)
       {
           printf("%2d,",i);
       }
       if (i%10==0)
       {
           printf("\n");
       }
       ++i;//i=i+1;
   }
   
   getchar();
    return 0;  //返回一个0
  }//一段程序结束
View Code

 

三、while和for的区别比较

while(条件表达式)

  语句是括号里值为1,一直干下去;括号里值为0,停止循还,程序往后执行

  等价于 for(;条件表达式;)

for(循还环处理仅一次;是否满足继续循环条件判断;每一次循环后处理)

{

  A;

}

 B;

 

四、作业

 1、把课程代码里的while循环改变等价的for循环

 2、写一段代码,找出100以内能被5整除的数

技术分享图片
#include <stdio.h>
#include <math.h>

     
int  main(void) //main是程序入口
  {
     int i=100;
     while(i){
        if(i%5==0) 
             printf("%d\t",i);
        i--;
         }
    getchar();
    return 0;  //返回一个0
  }//一段程序结束
View Code
技术分享图片
100     95      90      85      80      75      70      65      60      55      50      45      40      35      30              25      20      15      10      5
View Code

 

 3、写一段代码,找出100以内所有奇数 

技术分享图片
#include <stdio.h>
#include <math.h>

     
int  main(void) //main是程序入口
  {
     int i=100;
     while(i){
        if(i%2) 
             printf("%d\t",i);
        i--;
         }
    getchar();
    return 0;  //返回一个0
  }//一段程序结束
View Code   
技术分享图片
99      97      95      93      91      89      87      85      83      81      79      77      75      73      71              69      67      65      63      61      59      57      55      53      51      49      47      45      43              41      39      37      35      33      31      29      27      25      23      21      19      17      15              13      11      9       7       5       3       1
View Code

 

 

认识 循环嵌套

   for (表达式;条件1;表达式)

    {         

       代码段;//可以没有

      for (表达式;条件2;表达式)

          {         

           代码段;//可以没有

           for (表达式;条件3;表达式)

           {         

             代码段;//可以没有

              ....

           }

         }

    }

      

while(条件)

{

  代码段;//可以没有

  while(条件)

    {

       代码段;//可以没有

      while(条件)

      {

       代码段;//可以没有

       ..........      

      }

    }

 

}

 

while(条件)

{

  代码段;//可以没有

  for(表达式;条件;表达式)

    {

       代码段;//可以没有

      while(条件)

      {

       代码段;//可以没有

       ..........      

      }

    }

 

  

 

二、实例运用:

1、n的阶乘问题(n>0,n为整数)

   1*2*3...*n-1*n

   1*2*3*4*5=120

   

技术分享图片
#include <stdio.h>

#include <math.h>

void 阶乘(void)

{
         int num=1;

         int n=0;

         int i=1;

         num=n=i=1;

start:
         scanf("%d",&n);

         getchar();

         if(n<=0)

         {
                  printf("输入的值不合法,请重新输入\n");

                  goto start;
         }
         printf("%d的阶乘计算公式如下:\n",n);

         printf("1");
         do
         {
                  num=num*i;

                  if (i>1)

                  {
                           printf("*%d",i);//1*1*2*3
                  }
                  i=i+1;

         }while(i<=n);   

         printf("=%d \n",num);

         //

         return ;
}

 int  main(void) //main是程序入口

  {
           //代码开始
           //while

           for(;1;)//死循环
           {
                    阶乘();
            }

    getchar();

         return 0;  //返回一个

  }//一段程序结束         
View Code
技术分享图片
10
10的阶乘计算公式如下:
1*2*3*4*5*6*7*8*9*10=3628800
View Code 

 

2、打印出9*9乘法表如下图格式

技术分享图片
#include <stdio.h>
int main(void)
{
    int i,j;
    for (i=1;i<=9;i++)
    {
        for(j=1;j<=i;j++)
        {
            printf("%d*%d=%2d ",i,j,i*j);
        }
        printf("\n");
    }
    getchar();
    return 0;
}
View Code

 

技术分享图片
1*1=1  

2*1=2   2*2=4  

3*1=3   3*2=6    3*3=9  

4*1=4   4*2=8    4*3=12   4*4=16  

5*1=5   5*2=10   5*3=15   5*4=20   5*5=25  

6*1=6   6*2=12   6*3=18   6*4=24   6*5=30   6*6=36  

7*1=7   7*2=14   7*3=21   7*4=28   7*5=35   7*6=42   7*7=49  

8*1=8   8*2=16   8*3=24   8*4=32   8*5=40   8*6=48   8*7=56   8*8=64  

9*1=9   9*2=18   9*3=27   9*4=36   9*5=45   9*6=54   9*7=63   9*8=72   9*9=81
View Code

 

三、作业

 1、把本课代码里的for循环   替换成等价的while循环.  

技术分享图片
#include <stdio.h>
int main(void)
{
    int i=1;
    while(i<10){
        int j=1;
        while(j<=i){
        printf("%2d * %2d = %2d   ",j,i, i*j);
        j++;
        }
        printf("\n");
    i++;
    }
    getchar();
    return 0;

}
View Code
技术分享图片
 1 *  1 =  1
 1 *  2 =  2    2 *  2 =  4
 1 *  3 =  3    2 *  3 =  6    3 *  3 =  9
 1 *  4 =  4    2 *  4 =  8    3 *  4 = 12    4 *  4 = 16
 1 *  5 =  5    2 *  5 = 10    3 *  5 = 15    4 *  5 = 20    5 *  5 = 25
 1 *  6 =  6    2 *  6 = 12    3 *  6 = 18    4 *  6 = 24    5 *  6 = 30    6 *  6 = 36
 1 *  7 =  7    2 *  7 = 14    3 *  7 = 21    4 *  7 = 28    5 *  7 = 35    6 *  7 = 42    7 *  7 = 49
 1 *  8 =  8    2 *  8 = 16    3 *  8 = 24    4 *  8 = 32    5 *  8 = 40    6 *  8 = 48    7 *  8 = 56    8 *  8 = 64   
 1 *  9 =  9    2 *  9 = 18    3 *  9 = 27    4 *  9 = 36    5 *  9 = 45    6 *  9 = 54    7 *  9 = 63    8 *  9 = 72    9 *  9 = 81
View Code

 

 2、把本课代码里的while循环 替换成等价的for循环.  

 3、按自己的思路重新设计打印出9*9乘法表,要求分别用for循环和do while循环.

20节

 

条件与循环和运算符

原文:https://www.cnblogs.com/sd-xyy/p/12853474.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!