C语言循环与分支

C语言是一门   结构化  的程序设计语言
1、顺序结构    2、选择结构    3、循环结构
分支语句;  if语句、switch语句
循环语句:  while    for      do while   go to
#include<stdio.h>
int main()
{
    int ret = 0;
    int ch = 0;
    char password[20] = { 0 };
    printf("请输入密码:->");
    scanf("%s", password);//输入密码,并存放在password数组中
    //缓冲区还剩一个'\n'
    //读取一下'\n'
    while ((ch=getchar()) != '\n')
         {
         ;
         }
    printf("确认密码(Y/N):->");
    ret=getchar();
    if (ret == 'Y')
         printf("完成确认!");
    else
         printf("放弃确认!");
    return 0;
}
 
while 语句
 
#include<stdio.h>
int main()
{
    int ch = 0;
    while ((ch = getchar()) != EOF)
    {
         if (ch < '0'|| ch>'9')
             continue;
             putchar(ch);
    }
    return 0;
}
输出0-9的数字
for语句(continue与break区别)
#include<stdio.h>
int main()
{
    int i;
    for (i = 1; i <= 10; i++)
    {
         if (i == 5)
             continue ;
         printf("%d\n", i);
    }
    return 0;
}
 
 
代码实现 
#include<stdio.h>
int main()
{
    int i;
    for (i = 1; i <= 10; i++)
    {
         if (i == 5)
             break ;
         printf("%d\n", i);
    }
    return 0;
}

 

 
do while 语句(continue与break区别)
#include<stdio.h>
int main()
{
    int num = 1;
    do
    {
         if (num == 5)
             continue;
         printf("num=%d\n", num);
         num++;
    } while (num <= 10);
    return 0;
}

 

 
#include<stdio.h>
int main()
{
    int num = 1;
    do
    {
         if (num == 5)
             break;
         printf("num=%d\n", num);
         num++;
    } while (num <= 10);
    return 0;
}

 

 
计算n!
#include<stdio.h>
int main()
{
    int i = 0;
    int n = 0;
    int ret = 1;
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
         ret = ret*i;
    }
    printf("ret=%d\n", ret);
    return 0;
}

 

 
计算1!+2!+3!+……+10!
#include<stdio.h>
int main()
{
    int i = 0;
    int n = 0;
    int ret = 1;
    int sum = 0;
    for (n = 1; n <= 10; n++)
    {
         //ret必须起始值=1
         ret = 1;
         for (i = 1; i <= n; i++)
         {
             ret = ret*i;
         }
         sum = sum + ret;
    }
         printf("sum=%d\n", sum);
    return 0;
}

 

 
代码改进
int main()
{
    int n = 0;
    int i = 0;
    int ret = 1;
    int sum = 0;
    for (n = 1; n <= 10; n++)
    {
         ret = ret*n;
         sum = sum + ret;
    }
    printf("sum=%d\n",sum);
    return 0;
}

 

有序数组中查找具体的某个数字
#include<stdio.h>
//遍历算法
int main()
{
    int i = 0;
    int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    int sz = sizeof(arr) / sizeof(arr[0]);
    int k = 7;
    for(i = 0; i < sz; i++)
    {
         if (k ==arr[i])
         {
             printf("找到了,下标为%d\n", i);
             break;
         }
         if (i==sz)
         {
             printf("找不到!");
         }
    }
    return 0;
}

 

代码改进 
 
#include<stdio.h>
int main()
//二分查找算法
{
    int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    int left= 0;
    int k = 7;
    int sz = sizeof(arr)/sizeof(arr[0]);
    int right = sz-1;
    while (left<=right)
    {
         int mid = (right + left) / 2;
         if (arr[mid] > k)
         {
             left = 0;
             right = mid - 1;
         }
         else if (arr[mid] < k)
         {
             left = mid + 1;
             right = sz - 1;
         }
         else
         {
             printf("找到了,下标为:%d\n",mid);
             break;
         }
    }
if (left > right)
    {
         printf("找不到\n");
    }
    return 0;
}

 

 
演示多个字符从两端移动,向中间汇集
#include<stdio.h>
#include<string.h>
#include<windows.h>
int main()
{
    char arr1[] = { "beautiful queen" };
    char arr2[] = { "***************" };
    int left = 0;
    int right = strlen(arr1) - 1;
    while (left <= right)
    {
         arr2[left] = arr1[left];
         arr2[right] = arr1[right];
         printf("%s\n", arr2);
         //打印休息一秒
         Sleep(1000);
         left++;
         right--;
    }
    return 0;
}

 

 
当然代码还可以改进在Sleep(1000);后再加上语句system(cls)引用头文件#include<stdlib.h>可以每执行一次清屏,在执行下一次
 
模拟用户登录情景,并且只能登陆三次。(只允许输入三次密码,密码正确则登陆成功,密码错误,则退出程序)
#include<stdio.h>
#include<string.h>
int main()
{
    int i = 0;
    char password[20] = { 0 };
    for (i = 0; i < 3; i++)
    {
         printf("请输入密码:->");
         scanf("%s", password);
         if (strcmp(password, "123456")==0)
         {
             printf("密码正确!\n");
             break;
         }
         else
         {
             printf("密码错误,请重新输入!\n");
         }
    }
    if (i == 3)
    {
         printf("三次密码错误,退出程序!\n");
    }
    return 0;
}

 

 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值