C语言集训 马麒 第三次作业

230 阅读6分钟

课堂笔记

1.算数运算符

算术运算符分为+(加法运算符)、-(减法运算符)、* (乘法运算符)、\(除法运算符)、%(求余运算符或模运算符)

  • 算数运算规则:除法的运算结果和运算对象的数据类型有关,两个数都是int,则商就是int,若商有小数,则截取小数部分;取余的运算对象必须是整数,结果是整除后的余数,且其余数的符号与被除数相同。
  • C语言允许在表达式中进行混合运算,系统将自动进行类型转换。 2.关系运算符

关系运算符有<(小于)、<=(小于等于)、>(大于)、>=大于等于)、==(等于)、!=(不等于)

  • C语言中没有逻辑型数据,规定用1表示逻辑"真”,用0表示逻辑“假” 3.逻辑运算符

逻辑运算符有!(逻辑非)、&&(逻辑与)、||(逻辑或)

  • a&&b:若a、b都为真,则a&&b为真;若a、b之一为假,则a&&b为假。a||b:若a、b之一为真,则a||b为真;若a、b都为假,则a||b为假。!a:若a为真,则!a为假;若a为假,则!a为真。 4.赋值运算符

赋值运算符的作用是讲一个数据赋给“=”左边的变量

  • 算数运算符、位运算符与赋值号“=”结合在一起,形成复合的赋值运算符。如:a+=b等价于 a=a+b;a/b等价于a=a/b;a>>=b等价于a=a>>=b。 5.自增自减运算符

自增自减运算符的格式:++变量或变量++,如++i或i++;--变量或变量--,如--i或i--。其作用是使变量的值增1或减1

  • 无论是i++还是i--,对i而言都有i+1的运算,++的位置对i的值没有影响,但影响了i参与运算表达式的值 6.三目运算符

条件运算符是唯一个三元运算符,即有三个操作数参加运算的运算符,条件表达式的一般格式:表达式1?表达式2:表达式3

  • 表达式1?表达式2:表达式3。表达式1?中的问号也是对前面表达式1进行发问,问表达式1成立否?成立则选择表达式2的值;不成立则选择表达式3的值。 7.- 运算符优先级

任意一个运算符都具有优先级和结合方向这两个重要属性。C语言的运算符种类共有15级。大概可以记忆为括号优先级>算术运算符>关系运算符>逻辑运算符>条件运算符>赋值运算符 注意:遇到优先级问题时,为提高代码可读性,尽量使用括号,不要写出有歧义的代码。一行代码不要出现多个自增自减符号,这会被视作垃圾代码。

流程控制

  • 定义:程序代码执行的顺序。
  • 分类:顺序执行;选择执行,某些代码可能执行,也可能不执行,有选择的执行某些代码;循环执行。 1.if else语句
  • 格式:if (表达式) 语句;功能:如果表达式为真,执行语句,如果表达式为假,不执行语句
  • if的范围问题1:
if (表达式)
                 语句A
                 语句B

解释:if默认只能控制语句A的执行或不执行,if无法控制语句B的执行或不执行,即语句B一定能执行

  • if的范围问题2:if (表达式){ 语句A,语句B},此时if可以控制语句A和语句B

    if默认只能控制一个语句的执行或不执行,如果想要控制多个语句的执行或不执行,就必须要用花括号括起来
    2.for语句

更适用于循环次数已经确定的情况

  • 一般格式:for(表达式1;表达式2;表达式3) 循环体语句

一般来说,“表达式1”用于提供循环的初始值,“表达式2”用于提供循环的条件,“表达式3”用于改变循环的条件 3.while 语句 while可以翻译为:当......的时候

  • while的一般格式为:while(表达式) 循环语句;

4.switch 语句

switch语句被称为开关语句,switch括号里的表达式的值只能是整形或字符型,case后面的常量表达式的类型必须与之匹配

  • switch的一般格式:
switch(表达式)
{
    case 常量表达式1:语句组1 [break ;]
    case 常量表达式2:语句组2 [break ;]   
    ......
    case 常量表达式n:语句组n [break ;] 
    
    [defaukt :语句组n+1]
    }

5.do while 语句

主要用于人机交互

  • do while 语句的一般形式:
 do
  循环语句;
 while (表达式);

6.break与continue区别

  • break如果用于循环是终止循环;break如果用于switch,则是用于终止switch;break不能直接用于if,除非if属于循环内存中的一部分;break只能用于终止距离它最近的循环。

  • continue用于跳过本次循环余下的语句,转去判断是否需要执行下次循环。

break语句与continue语句的区别:continue语句只结束本次循环,而不是终止整个循环的执行;break语句则是结束整个循环,使程序转到循环语句后的下一条语句

课程中出现的代码

1.测试取模运算符的例子

#include <stdio.h>
int main( )
{
    printf("%d %d %d %d %d %d \n",3%3,13%-3,-13%3,-13%-3,-13%23,3%5);

    return 0;
}   

2.逻辑运算符举例1

#include <stdio.h>
int main( )
{
    int i = 10;
    int k = 20;
    int m;
    m = (3>2) && (k = 8);
    printf ( "m = %d, k = %d\n", m, k);

    return 0;
}   

3.逻辑运算符举例2

#include <stdio.h>
int main( )
{
    int i = 10;
    int k = 20;
    int m;
    m = (1>2) || (k = 5);   /*不含有分号的是表达式,含有分号的是语句*/
    printf ( "m = %d, k = %d\n", m, k);

    return 0;
}   

4.if的范围问题

#include <stdio.h>
int main( )
{
    if(1>2);
    {
        printf("AAAA\n");
        printf("BBBB\n");
    }
    printf("CCCC\n");

    return 0;
}   

5.if举例:求分数的等级

#include <stdio.h>
int main( )
{
    float score;

    printf("请输入您的考试成绩:");

    scanf("%d",&score);

if (score>100)   
   printf("这是做梦!\n");
else if(score>=90 && score<=100)
       printf("优秀!\n");
     else if(score>=80 && score<90)
          printf("良好!\n");
          else if("score>=60 && score<80")
               printf("及格!\n");
               else
                   printf("输入的分数过低,不要如此自卑!\n");
return 0;
}

6.对任意三个数字排序

#include <stdio.h>
int main( )
{
    int a,b,c,t;

    printf("请输入三个整数(中间以空格分割)");
    scanf("%d %d %d ,&a &b &c");
    if (a<b)
    {
        t = a;
        a = b;
        b = t;
    }
    if (a<c)
    {
        t = a;
        a = c;
        c = t;
    }
    if (b<c)
    {
        t = b;
        b = c;
        c = t;
    }
    return 0;
}

课后习题

5.10 第七题 输出结果为:so:8 30.00 屏幕截图 2021-11-25 230937.png

5.10 第十三题

屏幕截图 2021-11-25 231521.png

5.11 第三题运行结果

屏幕截图 2021-11-25 231923.png

5.11 第八题运行结果

屏幕截图 2021-11-25 232302.png

6.16 第五题运行结果

屏幕截图 2021-11-25 234352.png

6.16 第十二题运行结果

屏幕截图 2021-11-25 234532.png

6.16 第十八题运行结果

屏幕截图 2021-11-25 234732.png

7.11 第二题

屏幕截图 2021-11-25 233349.png

7.11 第十题运行结果

屏幕截图 2021-11-25 235057.png