2022年6月18日星期六

2022年6月18日-4

 2022年6月18日

c语言是一门 结构化 的程序设计语言

生活中的结构

1.顺序结构:顺序,从上到下,没有插叙补叙

2.选择结构:中途有分叉,可A可B可C等选择

3.循坏结构:一直循环,或某一刻出去

本节课着重介绍后二者

分支语句 ~ if与switch

什么是语句:

c语言中由一个分号;隔开的就是一个语句

;//也是语句,空语句

 

if语句 

if(表达式)

语句;

 

 

if(表达式)

语句1;

else

语句2;

 

 

//多分句

 

if(表达式1)

语句1;

else if(表达式2)

语句2;

else

语句3;

 注意:

①else只与最近的未匹配的if匹配,所以若不想让某else与最近的if匹配,可以用{ }

②if(condition)

{return x ;}

return y ;

//符合条件,输出x,不符合条件输出y

③判断常量与变量关系时,为避免出bug,一般讲常量放在变量前,如5 == num,避免赋值操作

//错误例
int main()
{
int age = 10;
if(18<=age<28)//else if(18<=age<28)有问题,这是因为代码的顺序问题,先判断18<=age,为假,输出0,而0<28为真,故输出青年
printf("青年");

 

int main()
{
int age =20
if(age<18)
printf("未成年");
else if(age>=18 && age<28)
printf("青年");
else if(age>=28 && age<60)
printf("壮年");
else
printf("老年");
return 0 ;
}

也可以

int main()
{
int age =20
if(age<18)
printf("未成年");
else 
{
if(age>=18 && age<28) printf("青年") else if(age>=28 && age<60) printf("壮年"); else printf("老年"); } return 0 ; }

 

0 表示假,非0 表示真

如果条件成立,要执行多条语句,怎么利用代码块?

if(age<18)

{

printf("未成年");

printf("不能谈恋爱");

}

示例,输出1~100之间的奇数

int main()
{
    int i = 1;
        while(i <= 100)
        {
            if (i % 2 == 1)
            {
                printf("%d\n", i);
            }
            i ++;

        }
    return 0;
}

 

switch语句

若想输入1~7的一个数字,输出一个“星期N”,若用if语句要用if,else if*5 , else。

switch专门实现多分句

switch(整型表达式)//不能float、char等浮点

{

语句项;

}

那么语句项是什么呢?答:是一些case语句。如

case 整型常量表达式://条件

      语句;  //执行

      break;//跳出语句

示例:

 

int main()
{
    int day = 0;
        scanf_s("%d", &day);
    switch (day)
    {
    case 1:
        printf("星期一");
        break;
    case 2:
        printf("星期二");
        break;
    case 3:
        printf("星期三");
        break; 
    case 4:
        printf("星期四");
        break;
    case 5:
        printf("星期五");
        break;
    case 6:
        printf("星期六");
        break;
    case 7:
        printf("星期天");
        break;

    }
    return 0;
}

多个条件一个结果

int main()
{
    int day = 0;
        scanf_s("%d", &day);
    switch (day)
    {
    case 1:
    case 2:
    case 3: 
    case 4:
    case 5:
        printf("工作");
        break;
    case 6:
    case 7:
        printf("休息日");
        break;
        //多个条件一个结果

    }
    return 0;
}
int main()
{
    int day = 0;
        scanf_s("%d", &day);
    switch (day)
    {
    case 1:
    case 2:
    case 3: 
    case 4:
    case 5:
        printf("工作");
        break;
    case 6:
    case 7:
        printf("休息日");
        break;
        //多个条件一个结果
        //若前面case不能匹配(如8/9),则用户输入非法 ,可用default提示
    default:
        printf("你输错了,1~7谢谢");
        break;

    }
    return 0;
}

 

当然case语句中也能夹if之类的语句

注:if(1)表示真

循环语句

示例


打印1~10

int main()
{
int i = 1 ;
while(i <= 10)
  {printf("%d\n",i);
i ++ ;

   }
return 0 ;
}

 break

循环里碰到break直接终止循环,会不会与switch里的break混淆呢?

用例,打印1~4

int main()
{
    int i = 1;
    while (i <= 10)
    {
        if (i == 5)
        {
            break;
        };
        printf("%d\n", i);
i ++; }
return 0; }

 

continue介绍

while中遇到continue,终止本次后面代码,回到while重新判断(是否进入进入下一次循环的入口判断)。

如死循环例

int main()
{
    int i = 0;
    while(i <=10)
    {
        if(i == 5)
        {
            continue;
        }
        printf("%d\n", i);
        i++;
    }
    return 0;
}

 

 

正确的正确的打印1~10&&跳过5

int main()
{
    int i = 0;
    while(i <10)
    {
        i++;
        if(i == 5)
        {
            continue;
        }

        printf("%d\n", i);
        
    }
    return 0;
}

 

 

函数getchar和putchar

int main()
{
    char ch = 0;
        while ((ch = getchar()) != EOF)
        {
            putchar(ch);
        };
return 0;
}

getchar()--可接受键盘字符

如int ch = getchar()

之后打印字符可以用 putchar(ch)或printf("%c",ch),二者效果相同(不过printf的“”里还能带一些其他东西。。)

这里的EOF意为end of file(文件结束标志),一个字符,ctrl+z打出

0 评论:

发表评论