C-分支和循环语句-ONE

本文详细介绍了C语言中的if、else、switch语句以及while循环的使用方法,包括多分支条件判断、循环中的break和continue的运用,并通过实例演示了如何判断奇数、打印星期、处理输入等操作,帮助读者掌握C语言的基本控制流程。
摘要由CSDN通过智能技术生成

C语言中由一个;隔开的就是一条语句

IF语句

 if语句格式

if (/* 表达式 */)
{
    /* 语句 */
}
if (/* 表达式 */)
{
    /* 语句1 */
}
else
{
    /* 语句2 */
}

多分支如下:(扩展就继续加else if语句)

if (/* 表达式1 */)
{
    /* 语句1 */
}
else if (/* 表达式2 */)
{
    /* 语句2 */
}
else
{
    /* 语句4 */
}

if和else引用多个语句需用{ },else与最近的未匹配的if相匹配

例:判断0~100内的奇数并打印

int main()
{
  int a = 0;
  while (a<=100)
  {
    if (a%2 == 1)  //a连续除以2余1
    {
      printf("%d ", a);
    }
    a++;
  }
  return 0;
}

SWITCH语句

 switch语句是一种分支语句,常用于多分支情况

语法:

switch (/* 表达式 */)
{
case /* 常量表达式 */:
  /* 代码 */
  break;

default:
  /* 代码,当结果不匹配的时候输出,default语句可不写 */
  break;   //case与default没有书写顺序
}

(switch语句中可加入if语句)

例1:输出星期

int main()
{
  int day = 0;
  scanf("%d", &day);
  switch (day)
  {
  case 1:
    printf("Monday\n");  //case是入口,break是出口
    break;
  case 2:
    printf("Tuesday\n");
    break;
  case 3:
    printf("Wednesday\n");
    break;
  case 4:
    printf("Thursday\n");
    break;
  case 5:
    printf("Friday\n");
    break;
  case 6:
    printf("Saturday\n");
    break;
  case 7:
    printf("Sunday\n");
    break;

  default:
    printf("Oh\n");
    break;
  }
  return 0;
}

上面例子中每个case子句中需加入break(但只加最后一个case语句的break程序也没出错/混乱)

例2:打印工作日和休息日

int main()
{
  int day = 0;
  scanf("%d", &day);
  switch (day)
  {
  case 1:
  case 2:
  case 3:
  case 4:
  case 5:
    printf("Working day\n");
    break;
  case 6:
  case 7:
    printf("Off day\n");
  
  default:
    printf("Oh\n");
    break;
  }
  return 0;
}

例3:

int main()
{
  int n = 1;
  int m = 2;
  switch (n)
  {
  case 1:
    m++;       //m变成3
  case 2:
    n++;       //n变成2
  case 3:
    switch (n) //swicth语句中可继续套用switch语句
    {
    case 1:
      n++;
    case 2:    //此时n=2,从此入
      m++;     //m变成4
      n++;     //n变成3
      break;   //跳出内层的switch语句

    default:
      break;
    }
  case 4:
    m++;       //m变成5
    break;     //跳出外层switch语句
  
  default:
    break;
  }
  printf("n=%d, m=%d\n", n, m);
  return 0;
}

WHILE语句

 语法:

while (/* 条件 */)
{
  /* 代码 */
}

例1:打印出1~10

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

while语句中break可使循环终止

int main()
{
  int a = 1;
  while (a<=10)
  {
    if (a == 5)
      break;
    printf("%d\n", a); //只打印1 2 3 4
    a++;
  }
  return 0;
}

而continue可跳过当前循环进行下一步循环

int main()
{
  int a = 1;
  while (a<=10)
  {
    if (a == 5)
      continue;
    printf("%d\n", a); //只打印1 2 3 4并陷入死循环
    a++;
  }
  return 0;
}

 例2:

int main()
{
    int ch = 0;
    while((ch=getchar()) !=EOF) //EOF=End Of File=-1,当输入不是EOF时,就执行while
    {
        putchar(ch);   //输入Ctrl+Z,ch就会接收到EOF
    }
    return 0;
}

PS:getchar与putchar

int main()
{
  int ch = getchar();  //getchar()可接收一个字符赋给ch
  putchar(ch);  //等于printf("%c\n", ch)
  return 0;
}

例1:

int main()
{
    int a = 0;
    char password[10] = {0};
    printf("Please enter  password\n");
    scanf("%s", password);      /* scanf和getchar为输入函数,从输入缓冲区中获取 */
    /* 若想代码成功需在此加入 getchar(); 可消除掉\n */
    printf("Please confirm(Y/N):>");
    a = getchar();      /* 输完密码后回车时,密码被password接收,而回车是\n,被a接收 */
    if (a=='Y')
    {
        printf("Succeeded");
    }
    else
    {
        printf("Failed");
    }    
    return 0;
}

输入密码时输入了空格还会出错,改良如下:

int main()
{
    int a = 0;
    int b = 0;
    char password[10] = {0};
    printf("Please enter  password\n");
    scanf("%s", password);
    while ((b=getchar()) !='\n')
    {
        ;
    }
    printf("Please confirm(Y/N):>");
    a = getchar();
    if (a=='Y')
    {
        printf("Succeeded");
    }
    else
    {
        printf("Failed");
    }    
    return 0;
}

例2

int main()
{
    int a = 0;
    while ((a=getchar()) !=EOF)
    {
        if (a<'0' || a>'9')
        {
            continue;
        }
        putchar(a);
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值