二分法查找有序数组中的数字、猜数字小游戏、模拟输入密码场景、输出相对应的大小写字母,不输出数字

本文介绍了一种高效的搜索算法——二分查找,并通过一个简单的猜数字游戏展示了其应用。此外,还提供了密码验证及字符转换的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在整形有序数组中查找想要的数字

二分法查找(binary_search)

#include <stdio.h>

int binary_search(int arr[], int x, int sz)
{   
    int left = 0;
    int right = sz-1;
    while(left<=right)
    {
        int mid = 0;
       mid = left + (right-left)/2;
       if(x == arr[mid])
        {
          return mid;
        }
        else if(x < arr[mid])
        {
          right = mid-1;
        }
        else
        {
          left = mid+1; 
        }
    }
    return -1;
}
int main()
{
    int arr[]={1,2,3,4,5,6,7,8,9};
    int x = 0;
    int sz = sizeof(arr)/sizeof(arr[0]);
    int ret = binary_search(arr,x,sz);
    if(ret == -1)
    {
      printf("找不到\n");
    }
    else
    {
      printf("找到了,下标为%d",ret);
    }
    return 0;
}

猜数字游戏

猜1-100之间的数字小游戏

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void menu()
{
  printf("************************\n");
  printf("*****  1.开始游戏  ******\n");
  printf("*****  0.退出游戏  ******\n");
  printf("************************\n");
}
void game()
{
  int x = 0;
  int y = 0;
  x = rand()%100;         //将这个数取模100,得到100以内的数 
  while(1)
  {
    scanf("%d",&y);
    if(y>x)
    {
      printf("猜大了\n");
    }
    else if(y<x)
    {
      printf("猜小了\n");
    }
    else
    {
      printf("猜对了\n");
      break;
    }
  }
}
int main()
{
  int i = 0;
  srand((unsigned int)time(NULL));//随机一个数,这个数大于3w
  do                              //至少玩一次游戏
  {
    menu();
     printf("请选择");
    scanf("%d",&i);
    switch(i)
    {
    case 1:
          printf("游戏开始,请输入数字:");
          game();
          break;
    case 0:
          printf("退出游戏\n");
          break;
    default:
          printf("输入错误\n");
          break;
  }
  }
    while(i);
    return 0;
  }

模拟三次密码输入的场景

如果三次输入错误,将退出程序。

#include <stdio.h>
#include <windows.h>

int main()
{
    char password[20] = {0};
    int i = 0;
  for(i=1; 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;
}

输入字母,输出对应的大小写字母,输入数字不输出

#include <stdio.h>

int main()
{
    int ch = 0;
    while((ch=getchar()) != EOF)
    {
      //sacii码表中数字的对应值为48-57
      if(ch >= 48 && ch <= 57)  
      {
        printf("数字,不输出\n");
      }
      //sacii码表中字母小写的对应值为97-122,
      //对应的大写为sacii码值减去32
      else if(ch >= 97 && ch <= 122)
      {
        putchar(ch-32);
        printf("\n");
      }
      //sacii码表中字母小写的对应值为65-90,
      //对应的大写为sacii码值加上32
      else if(ch >=65 && ch <= 90)
      {
        putchar(ch+32);
        printf("\n");
      }
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值