当前位置:网站首页>编程学习记录——第5课【分支和循环语句】
编程学习记录——第5课【分支和循环语句】
2022-07-27 05:20:00 【秋名山车神ae】
do while语句
先执行语句,后判断,意味着至少执行一次。
二分查找
在一个已排序的数组中查找一个元素,因为已排序,可以通过二分发查找,通过对数组中间元素进行大小判断,缩小查找范围,如此往复,直至找出对应元素为止。
#include <stdio.h>
int main()
{
int i = 0;int n = 0;int arr[100] = { 0 };
printf("请输入元素个数(不超过100):\n");
scanf("%d", &n);
printf("请从小到大输入元素:\n");
for (i = 0;i < n;i++) { scanf("%d", &arr[i]); }
int target = 0;
printf("请输入需要查找的元素:\n");
scanf("%d", &target);
int left = 0;
int right = n - 1;
while (left <= right) //判断条件,左下标不可比右下标大。
{
int m = (left + right) / 2;//亦可使用left+(right-left)/2,使用于数字较大情况
if(arr[m] < target) { left = m + 1; }//左下标右移,缩小范围
else if (arr[m] > target) { right = m - 1; }//右下标左移,缩小范围
else { printf("查找成功,下标是%d,排第%d位。", m, m + 1);goto end; }
}
printf("未找到该元素");
end:
return 0;
}猜数字游戏
随机数的生成,需要两个函数,rand()与srand(),需要向srand传递一个随机数,初始化随机函数,从而使rand()函数持续输出随机数,这里向srand传递时间戳作为随机数,
srand((unsigned int)time(NULL));表示向srand()传递一个经过强制时间转换的时间戳,不需要存放指针地址,因此向time()存放一个空指针NULL;
猜数字游戏
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
printf("*****猜数字游戏*****\n");
printf("********************\n");
printf("*******1-开始*******\n");
printf("*******0-退出*******\n");
printf("********************\n");
}
void game()
{
int s = rand()%100+1;//取模的操作,使得将输出的随机数控制在1-100;
int guess = 0;
while (1)//放入一个恒为真的值,通过循环内的语句控制循环的继续与跳出。
{
printf("请输入数字(1-100整数):\n");
scanf("%d", &guess);
if (guess < s) { printf("猜小了\n");continue; }
else if (guess > s) { printf("猜大了\n");continue; }
else { printf("恭喜你,猜对了。\n"); break; }
}
}
int main()
{
srand((unsigned int)time(NULL));
int input = 0;
do//将菜单及输入与判断放入循环内,从而实现多次操作。
{
menu();
printf("请输入命令\n");
scanf("%d", &input);
switch (input)
{
case 1: game();break;
case 0: printf("退出成功\n");break;
default: printf("无效命令\n");break;
}
} while (input);
return 0;
}模拟用户登陆
//模拟用户登陆
//int main()
//{
// char password[] = "liangzai";
// char input[100] = " ";
// int i = 0;
// for (i = 0;i < 3;i++)
// {
// printf("请输入密码:\n");
// scanf("%s", &input);
// if (strcmp(password, input) == 0) { printf("登陆成功,欢迎靓仔");break; }
// }
// if (i == 2) printf("叼毛,没有密码还登陆?");
// return 0;
//}
这里需要注意的点是char类型的定义,如果是定义单个字符,只需要char ch='a',这样定义就好,如果是定义一个字符串,需要定义一个数组,char ch[100]="abcedfg"; 可自行考虑数组的大小,但要确保防止数组溢出,strcmp函数是对字符串进行比较的一个函数,返回的数值是整形,当数值相同时,返回0.strcmp(password, input) == 0表示两个字符类型变量的字符串完全相同。若不相同则返回一个正整数。
边栏推荐
- 物联网操作系统多任务基础
- 视觉横向课题bug1:FileNotFoundError: Could not find module ‘MvCameraControl.dll‘ (or one of it
- Weidongshan digital photo frame project learning (III) transplantation of freetype
- 【头歌】重生之我在py入门实训中(12):Matplotlib接口和常用图形
- 能替代ps的修图软件?
- 9. High order operation
- arcgis for js api(2) 获取要素服务的id集合
- [first song] rebirth of me in py introductory training (2): formula programming
- WebODM win10安装教程(亲测)
- 小技巧-彻底删除U盘中的文件
猜你喜欢
随机推荐
【头歌】重生之我在py入门实训中(7): 函数调用
pytorch的多GPU训练的两种方式
常见的SQL优化方法
【头歌】重生之数据科学导论——回归进阶
3. Classification problems - initial experience of handwritten digit recognition
Digital image processing Chapter 8 - image compression
4. Tensor data type and creation tensor
Super remote connection management tool: Royal TSX
8. Mathematical operation and attribute statistics
关于druid连接不上数据库的问题
【头歌】重生之我在py入门实训中(2):公式编程
【头歌】重生之我在py入门实训中(10): Numpy
安装windows下的redis
Weidongshan digital photo frame project learning (II) displaying Chinese characters on LCD
能替代ps的修图软件?
Redis在windows下的idea连接不上问题
编程学习记录——第4课【分支和循环语句】
安全帽反光衣检测识别数据集和yolov5模型
[song] rebirth of me in py introduction training (5): List
[concurrent programming series 9] priorityblockingqueue, delayqueue principle analysis of blocking queue



![[MVC Architecture] MVC model](/img/71/e10da490d5f0098c64b33e77d158e7.png)





