当前位置: 首页 > news >正文

C语言从入门到进阶

视频:https://www.bilibili.com/video/BV1Vm4y1r7jY?spm_id_from=333.788.player.switch&vd_source=c988f28ad9af37435316731758625407&p=23

//枚举常量
enum Sex{MALE,FEMALE,SECRET
};printf("%d\n", MALE);//0
printf("%d\n", FEMALE);//1
printf("%d\n", SECRET);//2enum Sex flanza = MALE;

转义字符:
\ddd ddd表示1~3个八进制的数字。 如: \130 为 X
\xdd dd表示2个十六进制数字。 如: \x30 为 0

//test.c
int a = 100;
//main.c
extern int a;//extern申明在mian.c文件中使用test.c的全局变量a
int main() {printf("%d\n", a);return 0;
}

一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使
用。
一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
x86 32位
x64 64位

int* p1,p2,p3;//p1是int*,p2p2是int

在这里插入图片描述

struct Stu {char name[20];int age;char sex[10];char tele[12];
};void print(struct Stu* p) {//指针变量p接收s的地址//结构体指针变量->成员名//地址指向的对象printf("%s %d %s %s\n", p->name, p->age, p->sex, p->tele);//结构体对象.成员名//解地址再获取成员printf("%s %d %s %s\n", (*p).name, (*p).age, (*p).sex, (*p).tele);
}int main() {struct Stu s = {"zhansan",20,"male","100120110"};print(&s);//传s的地址return 0;
}

在这里插入图片描述
键盘输入a不回车,a还没到输入缓冲区;
回车后,a到达输入缓冲区,getchar()取输入缓冲区的一个字符a;
打印a;
getchar()取输入缓冲区的一个字符\n
打印换行;
在这里插入图片描述
输入一个1并回车,getchar()获取了两次,循环走了2次
在这里插入图片描述
scanf以空格或回车作为输入不同组内容的 组间间隔和结束符号

在一个有序数组中查找具体的某个数字n。(讲解二分查找)

	int arr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int left = 0;int right = sizeof(arr) / sizeof(arr[0]) - 1;//r若为字符串数组,元素个数包含'\0',减2个才表示数组的最后一个元素下标int mid = left + right / 2;int find = 7;while (left <= right){printf("Find...\n");if (arr[mid] > find){right = mid;}else if (arr[mid] < find){left = mid;}else{printf("Find!\n");break;}mid = left + (right - left) / 2;//防溢出}

猜数字游戏实现

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>void menu()
{printf("********************\n");printf("******1.play********\n");printf("******0.exit********\n");printf("********************\n");
}
//RAND_MAC为0x7fff,rand()函数所能返回的最大值
void game()
{int random_num = rand() % 100 + 1;//1-100之间的数int input = 0;while (1){printf("输入1-100之间的数字:>\n");scanf("%d", &input);if (input > random_num){printf("大了\n");}if (input < random_num){printf("小了\n");}else{printf("好了\n");break;}}
}
int main()
{int input = 0;srand((unsigned)time(NULL));//time()获得时间戳,程序每次运行时间戳不同,设置的随机种子不同,产生的随机数不同;do{menu();scanf("%d", &input);switch (input){case 1:game();break;case 0:break;default:printf("选择错误,重新选择\n");}} while (input);return 0;
}

在这里插入图片描述
printf返回值为打印的元素个数

int my_strlen(char* p)//求字符串的长度
{if (*p != '\0')return 1 + my_strlen(p + 1);elsereturn 0;
}
void print(int n)//接受一个整型值(无符号),按照顺序打印它的每一位。
{if (n > 9)print(n / 10);print("%d ", n % 10);
}
http://www.lryc.cn/news/527486.html

相关文章:

  • Python中容器类型的数据(下)
  • MySQL 用户相关的操作详解
  • 如何删除hugging face dowloaded的llm model?
  • Vue 封装http 请求
  • 恒源云云GPU服务器训练模型指南
  • Spring Boot应用中实现基于JWT的登录拦截器,以保证未登录用户无法访问指定的页面
  • MySQL 基础学习(1):数据类型与操作数据库和数据表
  • zyNo.19
  • Kafka生产者ACK参数与同步复制
  • IPhone14 Pro 设备详情
  • 【Linux】磁盘
  • Shell编程(for循环+并发问题+while循环+流程控制语句+函数传参+函数变量+函数返回值+反向破解MD5)
  • 强化学习数学原理(三)——值迭代
  • Day27-【13003】短文,什么是栈?栈为何用在递归调用中?顺序栈和链式栈是什么?
  • [JMCTF 2021]UploadHub
  • C++学习——认识和与C的区别
  • 为AI聊天工具添加一个知识系统 之63 详细设计 之4:AI操作系统 之2 智能合约
  • 基于SpringBoot的网上摄影工作室开发与实现 | 含论文、任务书、选题表
  • Flutter子页面向父组件传递数据方法
  • 回顾Maven
  • 除了layui.js还有什么比较好的纯JS组件WEB UI?在谷歌浏览上显示
  • 力扣111二叉树的最小深度(DFS)
  • c++学习第十三天
  • zookeeper-3.8.3-基于ACL的访问控制
  • Java定时任务实现方案(四)——Spring Task
  • WGCLOUD运维工具从入门到精通 - 如何设置主题背景
  • Babylon.js 中的 setHardwareScalingLevel和getHardwareScalingLevel:作用与配合修改内容
  • Qwen2-VL:在任何分辨率下增强视觉语言模型对世界的感知 (大型视觉模型 核心技术 分享)
  • Docker——入门介绍
  • 02数组+字符串+滑动窗口+前缀和与差分+双指针(D2_字符串(D2_刷题练习))