c语言day02

逗号表达式(逗号运算符又称顺序求值运算符)
用法:先计算左边的值,在计算逗号右边的值,最后取右边的结果。

    int a = 0;
    int b = (a+10,10,a*12);
    printf("%d\n",b);    
                                     ---->0

条件表达式

    int c = 2;
    int d = 3;
    int m_a=(d>c)?c++:d++;
和以下的if语句效果相同
    if(d>c){
        c++;    }
    else{
       d++;
    }
                                       ---->m_a=2

逻辑运算符 && || !

非零都是真,0是假

    3&&2真
    3&&0假
    0&&0假

    3||2真
    3||0真
    0||0假

     !3 假
短路运算
//a+b&&c+d  如果a+b为假的,那么c+d不参与运算
//a+b||c+d  如果a+b为真的,那么c+d不参与运算 
    int a=3;
    int b=0;
    if(b++||++a){
    }
    printf("%d,%d\n",a,b);
printf 和scanf
getchar和putchar

请参照课件和课堂Code(myc-day02)

流程控制

if语句

单分支
if(条件表达式)
{...}
当条件表达式为真的时候执行,假的时候不执行

if ...else
if ...else if...else

注意:else后面没有小括号,当有多个else的时候,else总是和上方最近的if配对。

//if(){}
//if(){}else{}
//if(){}else if(){}else{}

//判断是不是闰年
int main03(){
    int year = 1900;
    scanf("%d",&year);

    if( 0 == year%400 ||
            0 == year%4 && 0 != year%100){
        printf("闰年");
    }
    else
    {
        printf("非闰年");
    }

    return 0;
}

int main(){
    int a = 10;
    if(++a>=11 && a++ >11)
        printf("%d\n",a);
    printf("%d\n",a);
    return 0;
}

switch

switch(表达式){
case 常量表达式1: 语句1;
case 常量表达式2: 语句2;

case 常量表达式n: 语句n;
default: 语句n+1;
}
注意:switch括号里面可以是整型、字符型、枚举型表达式,而case后面只能是常量表达式(整数或者是结果为整数的表达式,但不能包含任何变量),而且后面的常量结果不能相同。

练习:实现简易版计算器

int main(){
   char ch ;
   int num1 = 0;
   int num2 = 0;
   scanf("%d%c%d",&num1,&ch,&num2);
   printf("******\n");
   switch (ch) {
   default:
       printf("error");
       break;
   case '+':
       printf("%d+%d=%d\n",num1,num2,num1+num2);
       break;
   case '-':
       printf("%d-%d=%d\n",num1,num2,num1-num2);
       break;
   case '*':
       printf("%d*%d=%d\n",num1,num2,num1*num2);
       break;
   case '/':
       printf("%d/%d=%d\n",num1,num2,num1/num2);
       break;
   }
}

while do...while for

//1+2+3+...+100
    int i=1;
    int sum =0;
    int time;
    scanf("%d",&time);
    while(i<time){
        //1+2+3
        sum = sum+i;
        i++;
    }
    printf("%d\n",sum);
    
    
    
    do{
        //1+2+3
        sum = sum+i;
        i++;
    }while (i<=time);


    for(i=1;i<=100;i++){
        
        sum = sum+i;
    }

练习

//1!+2!+3!
//1*1+2*1+3*2*1...
int main(){
    int i = 1;
    int time = 0;
    int sum = 0;
    int mul = 1;
    scanf("%d",&time);
    for(i=1;i<=time;i++){
        mul = mul*i;
        sum = sum+mul;
    }
    printf("%d\n",sum);
    return 0;
}
//水仙花数
//100~999之间范围的所有的水仙花数
//如下:
//153=1*1*1+5*5*5+3*3*3
//153/100   
//153%100/10
//153%10

    int i,j,a,b,c;
    for(i=2;i<=999;i++)
    {
        a=i/100;
        b=i%10;
        c=i%100/10;
        if(i==a*a*a+b*b*b+c*c*c)
        {
            printf("%d\n",i);
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。