【C语言---3】一些练习题

本文通过三个典型实例:猜数字游戏、折半查找算法及密码登录验证,详细讲解了C语言的基本应用技巧,包括随机数生成、用户输入处理、条件判断及循环控制等核心概念。

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

猜数字游戏:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

菜单界面:

int menu() 
{                             
	//创建菜单,人机交互界面
	  printf("============\n");
	  printf(" 1.开始游戏\n");
	  printf(" 0.退出游戏\n");
	  printf("============\n");
	  printf("请输入您的选项:\n");
	  int choice = 0;
	  scanf("%d", &choice);
	  return choice;
 }

游戏执行:

void game()
{
     int to_guess = rand() % 100 + 1;
     while (1)
     {
   	   printf("请输入一个整数:");
   	   int num = 0;
   	   scanf("%d", &num);
   	   if (num < to_guess)
   	   {
   		    printf("低了!\n");
   	   }
   	   else if (num>to_guess)
   	   {
   		    printf("高了!\n");
   	   }
   	   else
   	   {
   		    printf("恭喜您猜对了!\n");
   		    break;
   	   }
     }
}

主函数:

int main()
{
     srand(( unsigned int) time(0));
     while (1)
     {
   	   int choice = menu();
   	   if (choice == 1)
   	   {
   		    game();
   	    }
   	   else printf("退出成功,再见!\n");}
      return 0;
}

折半查找:

思路分析:找一个中间位置,去和查找数字比较,如果查找数字比中间位置的数大,说明在右边,反之在左边,注意边界left和边界right的更新

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

int main()
{
   int arr[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
   int to_find = 3;
   int left = 0;
   int right = 8;
   //left>right时候,说明整个区间都已查找完
   while (left <= right)
   {
  	  int mid = (left + right) / 2;
  	  if (arr[mid] < to_find)
  	  {
  		   left = mid + 1;//表明只在右边查找
  	  }
  	  else if (arr[mid]>to_find)
  	  {
  		   right = mid - 1;
  	   }
  	  else break;
   }
   if (left>right)//说明整个区间查完,没找到
   {
  	  printf("不存在!\n");
   }
   else printf("存在!\n");
   system("pause");
   return 0;
}

模拟密码登录:

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

int main()
{
    int i;
    for (i = 1; i < 4; i++)
    {
   	  printf("请您输入密码:");
   	  char password[10] = { 0 };
   	  scanf("%s", password);
   	  if (strcmp(password, "1241528539") == 0)
   	  {
   		   break;
   	  }
    }
    if (i < 4)
    {
   	   printf("密码正确,登陆成功:\n");
    }
    else printf("密码错误超过三次,禁止登陆\n");
    system("pause");
    return 0;
}

转换字符大小写

思路分析: putchar(a - (‘A’ - ‘a’));//如果输入大写字母,转换为小写字母

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

int main()
{
   while (1)
   {
  	  char a;
  	  a=getchar();
  	  if (a<='z'&&a>='a')
  	  {
  		   putchar(a-('a'-'A'));//如果输入小写字母,转换为大写字母
  	  }
  	  else if (a <= 'Z'&&a >= 'A')
  	  {
  		   putchar(a - ('A' - 'a'));//如果输入大写字母,转换为小写字母
  	  }
  	  else if (isalnum(a))
  	  {
  		   // 如果输入的是数字,就什么也不做
  	  }
  	  if (a == ' ')//设定跳出条件为输入的字符为空格
  	  {
  		   break;
  	  }
  	  else putchar(a);//输入符号之类的正常输出
   }
   system("pause");
   return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值