C语言学习笔记

复合赋值

  • 5个算术运算符,+一/%,可以和赋值运 算符“=”结合起来,形成复合赋值运算符 :“+=”、“-=”、“=”、“/=”和“%=”
  • total += 5;
  • total = total + 5;
  • 注意两个运算符中间不要有空格
  • total +=(sum+10)/2;

    • total = total + (sum + 100)/2;
  • total*= sum+12;

    • total = total*(sum+12)

递增递减运算符

  • “++”和“--”是两个很特殊的运算符,它们 是单目运算符,这个算子还必须是变量。 这两个运算符分别叫做递增和递减运算符, 他们的作用就是给这个变量+1或者-1。
  • count++;
  • count += I;
  • count = count + 1;



关系运算的结果

  • 当两个值的关系符合关系运算符的预期时, 关系运算的结果为整数1,否则为整数0
  • printf("%d\n", 5==3);
  • printf("%d\n", 5>3);
  • iprintf("%d\n", 5<=3);

优先级

  • 所有的关系运算符的优先级比算术运算的低,但比赋值运算的高。

    • 7>=3+4
    • int r = a>0
  • 判断是否相等的==和=的优先级比其他的低,而连续的关系运算是从左到右进行的。

    • 5>3==6>4
    • 6>5>4
    • a==b==6
    • a==b>0

做判断

找零计算器

  • 找零计算器需要用户做两个操作:输入购 买的金额,输入支付的票面,而找零计算 器则根据用芦的输入做出相应的动作:计 算并打印找零,或告知用户余额不足以购 实。
  • 从计算机程序的角度看,这就是意味着程 序需要读用户的两个输入,然后进行一些 计算和判断,最后输出结果。
#include <stdio.h> 

int main()
{
    int price =0;
    int bill =0;
    //读入金额和票面
    printf("请输入金额") ;
    scanf("%d",&price);
    printf("请输入票面");
    scanf("%d",&bill);
    //计算找零
    if (bill>=price)
    {
    printf("应找您:%d\n",bill-price);
    }
     else{
         printf("你的钱不够");
        }
    return 0; 
}

计算薪水

# include <stdio.h>

int main()
{
    const double RATE =8.25;
    const int STANDARD =40;
    double pay =0.0;
    int hours;

    printf ("请输入工作小时数;"); 
    scanf("%d",&hours);
    printf("\n");
    if(hours>STANDARD)
        pay = STANDARD * RATE + (hours - STANDARD)*(RATE * 1.5);
    else
        pay = hours * RATE;
    printf("应付工资%f\n",pay);

    return 0;

}

嵌套的if-else

  • 当if的条件满足或者不满足的时候要执行的语句也 可以是一条if或if-else语句,这就是嵌套的if语句。

比较三个数的大小

# include <stdio.h>

int main ()
{
    int a,b,c;
    int max = 0;
    scanf("%d %d %d",&a,&b,&c);

    if (a>b)
        if(a>c)
            max = a;
        else
            max = c;
    else
        if(b>c)
            max = b;
        else
            max = c;
printf("最大值是%d\n",max);
return 0;
}
  

else总是和最近的那个if匹配。

建议:在if或else后面总是用“{}”即使只有一条语句时。

级联的if-else if

if-else的常见错误

if语句常见错误

  • 忘了大括号
  • if后面的分号
  • 错误使用==和=
  • 使人困惑的else

代码风格

  • 在if和else之后必须加上大括号形成语句块
  • 大括号内的语句缩进一个tab的位置

多路分支

# include<stdio.h>

int main()
{
    int a;
    printf("请输入您的分数");
    scanf("%d",&a);

    if (a>=90){
    printf("A") ;
    } else if(a>=80){
    printf("B");
    } else if(a>=70){
    printf("C");
    } else if(a>=60){
    printf("D");
    }else{
    printf("E");
    }
    return 0;
} 

# include<stdio.h>

int main()
{
    int a;
    printf("请输入您的分数");
    scanf("%d",&a);

    a /= 10;  //a=a/10
    switch(a){
        case 10:
        case 9:
          printf("A\n");break;
        case 8:
          printf("B\n");break;
        case 7:
          printf("C\n");break;
    case 6:
          printf("D\n");break;
        default:
          printf("E\n");break;
        }
        return 0;
} 

参考资料

程序设计入门——C语言\_浙江大学\_中国大学MOOC(慕课) (icourse163.org)

最后修改:2023 年 10 月 21 日
如果觉得我的文章对你有用,请随意赞赏