C语言从入门到进阶

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

c 复制代码
//枚举常量
enum Sex{
	MALE,
	FEMALE,
	SECRET
};

printf("%d\n", MALE);//0
printf("%d\n", FEMALE);//1
printf("%d\n", SECRET);//2

enum Sex flanza = MALE;

转义字符:

\ddd ddd表示1~3个八进制的数字。 如: \130 为 X

\xdd dd表示2个十六进制数字。 如: \x30 为 0

c 复制代码
//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位

c 复制代码
int* p1,p2,p3;//p1是int*,p2p2是int
c 复制代码
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。(讲解二分查找)

c 复制代码
	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;//防溢出
	}

猜数字游戏实现

c 复制代码
#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返回值为打印的元素个数

c 复制代码
int my_strlen(char* p)//求字符串的长度
{
	if (*p != '\0')
		return 1 + my_strlen(p + 1);
	else
		return 0;
}
void print(int n)//接受一个整型值(无符号),按照顺序打印它的每一位。
{
	if (n > 9)
		print(n / 10);
	print("%d ", n % 10);
}
相关推荐
charlie11451419128 分钟前
嵌入式现代C++教程: 构造函数优化:初始化列表 vs 成员赋值
开发语言·c++·笔记·学习·嵌入式·现代c++
wjs202430 分钟前
Bootstrap5 消息弹窗
开发语言
资生算法程序员_畅想家_剑魔37 分钟前
Kotlin常见技术分享-02-相对于Java 的核心优势-协程
java·开发语言·kotlin
IT=>小脑虎1 小时前
C++零基础衔接进阶知识点【详解版】
开发语言·c++·学习
Felven1 小时前
A. Helmets in Night Light
c语言
nbsaas-boot1 小时前
Go vs Java 的三阶段切换路线图
java·开发语言·golang
码农小韩1 小时前
基于Linux的C++学习——指针
linux·开发语言·c++·学习·算法
微露清风1 小时前
系统性学习C++-第十九讲-unordered_map 和 unordered_set 的使用
开发语言·c++·学习
BBBBBAAAAAi2 小时前
Claude Code安装记录
开发语言·前端·javascript
毕设源码-钟学长2 小时前
【开题答辩全过程】以 基于Java的慕课点评网站为例,包含答辩的问题和答案
java·开发语言