ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

c语言基础4 分之语句 if switch while for

2022-07-10 01:32:27  阅读:145  来源: 互联网

标签:语句 int while break switch 循环 printf main


一、选择语言

语法:

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

举例

#include <stdio.h>
int main()
{
    int input = 0;
    printf("Workhard or not?(1/0)");
    scanf("%d\n", &input);
    if(input==1)
    {
        printf("Make more money.");
    }
    else
    {
        printf("Make less money.");
    }
    return 0;
}

注意条件判断多个条件时,需要使用&&

int main()
{
  int score = 80;
  if(score<60)
  {
    printf("不及格");
  }
  else if(60<=score && score <70)
  {
    printf("及格“);
  }
}

 

举例:求1-100之间的奇书

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

    }
    return 0;
}

 

 

二 switch 语句

 

注意:switch后面的表达式必须是整型常量表达式! 

 

举例:

#include <stdio.h>

int main()
{
    int day = 2;
    switch (day) //括号中是整型表达式
    {
    case 1: //case决定入口在哪里,
    {
        printf("Monday\n");
        break;//break决定出口在哪里;入口没有break,会从入口开始,一直往下执行;
    }
    case 2:
    {
        printf("Tuesday\n");
        break;
    }
    case 3:
    {
        printf("Wedsday\n");
        break;
    }
    default:
        break;
    }
    return 0;
}

results: Tuesday

下面把break全去掉

 

 

// 要求:输入1-5时打印工作日,输入6-7时打印休息日
int main()
{
    int day = 1;
    switch (day)
    {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    {
        printf(" work day!\n");
        break;
    }
    case 6:
    case 7:
    {
        printf("Off work!\n");
        break;
    }
    default: // 输入的条件都不符合上面的case,进入default,
    {
        printf("输入日期不正确!\n");
        break;
    }
    }
    return 0;
}

 

 上面的case先后无顺序,只是习惯将default放在最后。

 

三、while循环

1.语法

while()

{
  //循环体    
}

 

2.举例

知识点:

getchar 读取字符,返回值是int 键盘输入字符+enter后,该字符就存在buffer中了,getchar就从buffer中把字符读取出来  --读取成功的话,返回的是读取字符的ASCII码值  --读取错误的话,返回的是EOF=-1 (end of file),文件结束标志   # define EOF (-1) ctrl+z 结束getchar  
int main()
{
    int ch = getchar();
    printf("%c\n", ch);
    putchar(ch); //输出字符

    return 0;
}
int main()
{
    char ch = 0;
    while((ch=getchar()) != EOF) // 如果读取的字符不是EOF,就输出该字符
    {
        putchar(ch);
    }
    return 0;
}

 

举例2:

// 举例2
int main()
{
    char password[20] = {0}; // password数组可以存放20个字符,默认是全0
    printf("请输入密码:");
    scanf("%c", password); // 数组的名字就是地址,这里不需要加取地址符号
    printf("请确认密码(Y/N):");
    //1.这里当输入密码时,比如123456+enter,buffer里面存的是123456\n,scanf会拿走123456,剩下
    //\n会被下面的getchar拿走,buffer不为空,就是导致getchar读取的字符不是最新键盘输入的
    //2.如果输入的密码是123456 abcdef\n, 那么scanf会拿走123456,剩下的字符,getchar会拿一个字符,所以
    //要使用循环将buffer中已经存在的字符清空
    
    int tmp = 0;
    while((tmp=getchar) != '\n') //清理缓冲区
    {
        ;//空语句,直到ch=\n,说明buffer已经清空了
    }
    char ch = 0;
    if((ch == getchar()) =='Y')
        printf("设置密码成功。");
    else
        printf("设置密码失败。");
}

 

举例3:

getchar获取的字符在字符0-9以内的,就可以输出出来, 字符在0-9以外的字符,直接跳过;

 

四、for循环

1.for循环的语法

for(初始化;条件判断;调整部分)

 

2.for循环的执行顺序

for循环的执行顺序是(1表示初始化,2表示条件,3表示调整部分,4表示循环体):

1,2,4,3 ,2,4,3,2,4直到循环结束;

所以由上可看出,初始化部分只会被执行1次 

 

 

举例:用for循环打印1-10

//for(表达式1;表达式2;表达式3)
//    循环体

// 举例, for循环实现1-10的输出打印

int main()
{
    int i = 0;
    for(i=1;i<=10;i++)
    {
        printf("%d ", i);
    }
}

 

3.for循环中的continue 跟break

break:跳出循环,终止

continue: 跳出本次循环,进行下一个循环

for循环中的continue是跳到 调整部分进行i的调整(比如i++);而while循环,continue可能会跳过调整部分造成死循环

 

4.for语句的循环控制变量

建议:

 

int main()
{
    int arr[10] = {0,1,2,3,4,5};
    int i = 0;
    for(i=0;i<10;i++) // i<10 ,右开左闭,而不是使用<=9
    {
        printf("%d ", arr[i]); // result: 0 1 2 3 4 5 0 0 0 0 
    }
}

 

5.for循环的变种

判断部分的省略,表示判断部分恒为真,就可能导致死循环。不建议使用。

int main()
{
    int i  = 0;
    int j = 0;
    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
        {
            printf("inner loop.\n");
        }

}

result:打印9次 inner loop.

下面将j的初始化省略,

int main()
{
    int i  = 0;
    int j = 0;
    for(i=0;i<3;i++)
        for(;j<3;j++)
        {
            printf("inner loop.\n");
        }

}

result:打印3次inner loop.

解析:当i=0时,j是0,内部循环3次,此时j=3;

当i=1时,j没有初始化,还是为3,此时内部循环不符合条件,再次跳到外层循环。。。。

 

面试题: 

 

 0次,判断条件是赋值语句,k赋值0,条件恒为假,不会进入循环体内部。

 

五、do ...while循环

语法:

do

 循环语句;

while(表达式);

举例:用do...while 实现打印1-10的数字

#include <stdio.h>

int main()
{
    int a = 1;
    do
    {
        printf(" a = %d\n", a);
        a++;
    } while (a < 11);

    return 0;
    
}

结果:

 

 

那么在do...while中的continue,break又是如何呢?

举例2:

#include <stdio.h>

int main()
{
    int a = 1;
    do
    {
        if(5==a)
            break;
        printf(" a = %d\n", a);
        a++;
    } while (a < 11);

    return 0;
    
}

结果:1,2,3,4; 到5的时候被break了,而打印在break之后,所以5就没有被打印

 

举例3

#include <stdio.h>

int main()
{
    int a = 1;
    do
    {
        if(5==a)
            continue;
        printf(" a = %d\n", a);
        a++;
    } while (a < 11);

    return 0;
    
}

结果:死循环,a=5时,跳出循环,continue后面的语句不会执行,但是还是会进入while的判断部分,a一直为5,死循环了。

 

总结: do...while循环的循环体至少执行一次!

 

标签:语句,int,while,break,switch,循环,printf,main
来源: https://www.cnblogs.com/ananmy/p/16357774.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有