c语言循环和选择语句

C语言是一门结构化的程序设计语言,支持三种结构:

*顺序结构

*选择结构:if、switch

*循环结构:for、while、do while

if语句

1.else是和离他最近的if匹配的

2.每个分块最好用花括号括起来,使代码更清晰

3.有时针对一个变量有多种情况时,用switch语句更方便

#include <stdio.h>
int main()
{
    int day=0;
    switch(day)
    {
    default://case和default的上下排序不重要,因为switch语句是运行时去匹配,哪个分支成立就走哪个
            printf("工作日\n")
            break;
    case 7://每一个小分块不需要加大括号,但要记得加break
            printf("星期日\n")
            break;
    case 6:
            printf("星期六\n")
            break;
    }
return 0;
}

while语句

1.()中条件为真时一直执行,可以用break永久终止循环;用continue时,只是终止本次循环,即循环体中语句continue以下的不会运行,但下一次循环还能运行

#include <stdio.h>
int main()
{
    int ch=0;
    while((ch=getchar()!=EOF)
        putchar(ch);
    return 0;
}//这个代码适当修改可以用来清理缓冲区
#include <stdio.h>
int main()
{
    char ch='\0';
    while((ch=getchar()!=EOF)
    {
        if(ch<'0'||ch>'9')
            continue;
        putchar(ch);
    }
    return 0;
}
//只打印数字字符,跳过其他字符

for语句

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

这三部分都可以省略

2.建议不在for循环体内修改循环变量,防止for循环失去控制

do while语句

do

{

        循环体

}

while(表达式);

//演示多个字符从两端移动,向中间汇聚
#include <stdio.h>
int main()
{
char arr1[] = "welcome to bit...";
char arr2[] = "#################";
int left = 0;
int right = strlen(arr1)-1;
printf("%s\n", arr2);
//while循环实现
while(left<=right)
{
Sleep(1000);//每隔1秒运行下一个语句
arr2[left] = arr1[left];
arr2[right] = arr1[right];
left++;
right--;
printf("%s\n", arr2);
}
//for循环实现
for (left=0, right=strlen(src)-1;
  left <= right;
  left++, right--)
 {
  Sleep(1000);
  arr2[left] = arr1[left];
  arr2[right] = arr1[right];
  printf( "%s\n", target);
 }
retutn 0;
}
//折半查找
#include <stdio.h>
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int left = 0;
int right = sizeof(arr)/sizeof(arr[0])-1;
int key = 7;
int mid = 0;
while(left<=right)
{
mid = (left+right)/2;
if(arr[mid]>key)
{
right = mid-1;
}
else if(arr[mid] < key)
{
left = mid+1;
}
else
break;
}
if(left <= right)
printf("找到了,下标是%d\n", mid);
else
printf("找不到\n");
}
//二分查找函数
int bin_search(int arr[], int left, int right, int key)
{
int mid = 0;
while(left<=right)
{
mid = (left+right)>>1;
if(arr[mid]>key)
{
right = mid-1;
}
else if(arr[mid] < key)
{
left = mid+1;
}
else
return mid;//找到了,返回下标
}
return -1;//找不到
}

go to语句

适用于多重for循环,然后内层循环条件成立需要跳出全部循环时

for(...)
  for(...)
 {
    for(...)
   {
      if(disaster)
        goto error;
   }
 }
  …
error:
if(disaster)
    // 处理错误情况
//关机程序
#include <stdio.h>
int main()
{
  char input[10] = {0};
  system("shutdown -s -t 60");
again:
  printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
  scanf("%s", input);
  if(0 == strcmp(input, "我是猪"))
 {
    system("shutdown -a");
 }
  else
 {
    goto again;
 }
  return 0;
}

用循环同样可以实现

#include <stdio.h>
#include <stdlib.h>
int main()
{
  char input[10] = {0};
  system("shutdown -s -t 60");
  while(1)
 {
    printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
    scanf("%s", input);
    if(0 == strcmp(input, "我是猪"))
   {
      system("shutdown -a");
      break;
   }
 }
  return 0;
}

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值