分支循环语句刷题

一、do while循环

do...while循环

do

    循环语句;

while(表达式);   

(先执行在判断,至少执行一次,和while一样,想要执行多条语句需要用{}引起来)

二、循环练习

1.计算n的阶乘

代码如下:

int main()                                       
{                                                   
     int n = 0;                                    
     scanf("%d", &n);                          
     int i = 0;                                  
     int ret = 1;                                       
    for (i = 1; i <= n; i++)                       
        {ret = ret * i;}                                                                                       
    printf("%d\n", ret);
    return 0;
}                         
2.计算1-10的阶乘

在上面代码的基础上限值循环次数为十次,并且每次结果相加即可

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

3.有序数组查找某个数

 我们使用二分查找法,先找出中间元素,进行对比,调整范围, 依次进行查找缩小范围找到。

#include<stdio.h>
int main()
{
       int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
       int l = (sizeof(arr) / sizeof(arr[0]));
       int left = 0;
       int right = l - 1;
       int j = 9;
       while (left<=right)
       {
              int k=(left + right) / 2;             
              if (arr[k] <j)                                                                        
              {
                     left = left + 1;          // 注意:这里的k,当left和right都特别大
              }                                //时,相加会越界,导致结果不精确,这里
              else if (arr[k] > j)             // 可以用  int k=left+(right-left)/2即可
              {
                     right = right - 1;            
              }
              else
              {
                     printf("找到了,为%d\n",k);
                     break;
              }
              if (left > right)
                     printf("找不到\n");
       }

4.制作效果多个字符从两端移动,向中间汇聚:

#include<stdio.h>
#include<windows.h>    //使用system("cls")  引用 的头文件
#include<string.h>      
int main()
{
        char arr1[]="welcome to bit!!!!"
        char arr2[]="*******************"
        int left=0;
        int right=strlen(arr1)-1;
        {
        while(left<=right)
        arr2[left]=arr1[left];
        arr2[right]=arr1[right];
        printf("%s",arr2);
        Sleep(1000);                    //Sleep是一个控制时间的快慢  windows下单位是毫秒
        left++;
        right--;
        system("cls")                    //cls是清屏    system是windows命令
        }
    printf("%s\n",arr2);
    return 0;
}

5.编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正则提示登录成,如果三次均输入错误,则退出程序。

这里用到字符串比较函数来比较输入内容是否和密码相同

#include<stdio.h>
int main()
{
    int password[20]=0;
    int i=0;
    for(i=0;i<3;i++)
    {
        printf("请输入密码\n");
        scanf("%s",&password);
        if(strcmp(password,"qwer")==0);
        {
            printf("密码正确\n");
            break;
        }
        else
        {
            printf("密码错误\n");
        }
    }
    if(i==3)
    {
        printf("三次密码输入错误,退出\n");
    }
    retutn 0;
}

6.猜数字小游戏

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
       printf("******************************\n");       //游戏开始菜单
       printf("*********1.进入游戏***********\n");
       printf("*********0.退出游戏***********\n");
       printf("******************************\n");
       printf("******************************\n");
}
void game()
{
       int guss = 0;
       int rad = rand() % 100 + 1;    //rand函数可以生成随机数    //返回一0~RAND_MAX(32767)
       while (1)
       {
              printf("请猜数");
              scanf("%d", &guss);
              if (guss < rad)
              {
                     printf("猜小了\n");
              }
              else if (guss>rad)
              {
                     printf("猜大了\n");
              }
              else
              {
                     printf("恭喜你猜对了\n");
                     break;
              }
       }
}
int main()
{      int num = 0;
       srand((unsigned int)time(NULL));      //初始化随机数
       do
       {
              menu();
              printf("请选择\n");
              scanf("%d", &num);
              switch (num)
              {
              case 1:
                     game();
                     break;
              case 0:
                     printf("退出游戏\n");
                     break;
              default:
                     printf("输入错误\n");
                     break;
              }
       } while (num);
              return 0;
}

总结

主要进行循环语句的训练,包含二分查找法,简单的猜数字小游戏,以及生产随机数的使用

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值