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);
}