C语言一些零碎东西
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
//int main()
//{
// /*
// printf("hehe\n");
// printf("%f", 3.14);
// printf("%d", 3);
// printf("%c", 'h');
// printf("%d\n", '\n');
// for (int i = 32;i <= 127;i++)
// {
// printf("%c ", i);
// if (i % 16 == 15)
// printf("\n");
// }
// printf("%s\n", "hehe");
// printf("%c ", '\'');
// printf("%s ", "\"");
// printf("c\\nde");
// printf("are u ok??");
// printf("\a");
// printf("abcd\bfe");
// //getchar();
// printf("a\tbc\tccc\tdddddddd\t");
//
// //printf("%d\n", 016);
// //printf("%c\n", '\130');
// //printf("%c\n", '\x30');
// //printf("c\\nde");
// //printf("%c\n", '\x3f');
// //printf("%zd\n", strlen("abcd\0df")); //4
//
// //第二章
// _Bool a = true;
// if (a) printf("1\n");
// bool b = false;
// if (!b) printf("2\n");
// int c = 3;
// if (c) printf("3\n");
// printf("%zd\n",sizeof(int));
// printf("%zd\n",sizeof(c));
// printf("%zd\n", sizeof(3 + 3.5));
// printf("%zd\n", sizeof(3));
// short d = 0;
// printf("%zd\n", sizeof(c = d + 1));
// printf("%d\n", c);
// float cc= 2.3f;
// double bb = 4.5;
// printf("%f %f\n", cc, bb);
// return 0;
// */
//}
//第二章 全局变量 局部变量
//int m = 100;
//int main()
//{
// {
// printf("%d\n", m);
// }
// printf("%d\n", m);
// return 0;
//}
//int main()
//{
// {
// int n = 10;
// printf("%d\n", n);
// }
// printf("%d\n", n); //此处会出错
// return 0;
//}
//加减乘除
//int main()
//{
// int a = 10;
// printf("%d\n", 5 * 6);
// printf("%d\n", 5 * a);
// return 0;
//}
//
//int main()
//{
// printf("%d\n", 9 / 2);
// printf("%f\n", 9 / 2); //0.000000
// printf("%f\n", 9 / 2.0); //4.500000
// printf("%f\n", 5 / 20.0 * 100);
// printf("%d\n", 9 % 2);
// printf("%d\n", 9 % -2);
// printf("%d\n", -9 % 2);
// /*int a = 0;
// int cc, bb;
// cc = bb + 1 = a + 2;
// printf("%d %d\n", bb, cc);*/
// int a = 3;
// a += 3;
// printf("%d\n", a);
// a++;
// printf("%d\n", a);
// a--;
// printf("%d\n", a);
// int b = a--;
// int c = --a;
// printf("%d %d\n", b, c);
// int aa = 1;
// int bbb = (++aa) + (++aa) + (++aa);
// printf("%d\n", bbb);
// printf("%d\n", -bbb);
//
// return 0;
//}
//printf
//int main()
//{
// printf("%s\n", "zhangsan");
// printf("%e\n", 123.456);
// printf("%x\n", 96);
// printf("%%\n");
// printf("%3d\n", 12345);
// printf("%-5d\n", 123);
// printf("%+d\n", 12);
// printf("%.2f\n", 123.456);
// printf("%6.2f\n", 12.34);
// printf("%*.*f\n", 6, 2, 0.5);
// printf("%.4s\n", "hello");
//
// return 0;
//}
//scanf
//int main()
//{
// int a;
// scanf("%d",&a);
// printf("%d\n", a);
// int b;
// float c, d;
// scanf("%d%d%f%f", &a, &b, &c, &d);
// printf("%d %d %f %f\n", a, b, c, d);
// return 0;
//}
//int main()
//{
// int a;
// float b;
// scanf("%d%f", &a, &b);
// printf("%d %f\n", a, b);
// return 0;
//}
//int main()
//{
// int a, b;
// float c;
// int ret = scanf("%d%d%f", &a, &b, &c);
// printf("%d %d %f %d\n", a, b, c, ret);
// return 0;
//}
//int main()
//{
// char a;
// scanf(" %c", &a);
// printf("%c\n", a);
// scanf("%c", &a);
// printf("%c\n", a);
//}
//int main()
//{
// char a[10] = { 0 };
// scanf("%5s", a);
// printf("%s\n", a);
//}
//int main()
//{
// int a, b, c;
// scanf("%d%*c%d%*c%d", &a, &b, &c);
// printf("%d %d %d\n", a, b, c);
//}
//int main()
//{
// printf("%x\n", 96);
//}
//第三章
//if语句
//int main()
//{
// int n = 0;
// scanf("%d", &n);
// if (n % 2 == 0) printf("偶数\n");
// return 0;
//}
//else语句
//int main()
//{
// int n = 0;
// scanf("%d", &n);
// if (n % 2 == 0) printf("偶数\n");
// else printf("奇数\n");
// return 0;
//}
//int main()
//{
// int age;
// scanf("%d", &age);
// if (age >= 18) printf("成年\n");
// else printf("未成年\n");
// return 0;
//}
//多条语句
//int main()
//{
// int age;
// scanf("%d", &age);
// if (age >= 18)
// {
// printf("成年\n");
// printf("可以谈恋爱\n");
// }
// else printf("未成年\n");
// return 0;
//}
//嵌套语句
//int main()
//{
// int n;
// scanf("%d", &n);
// if (n == 0) printf("0\n");
// else if (n > 0) printf(">0\n");
// else printf("<0\n");
// return 0;
//}
//int main()
//{
// int age;
// scanf("%d", &age);
// if (age < 18) printf("少年\n");
// else if (age < 44) printf("青年\n");
// else if (age < 59) printf("中老年\n");
// else if (age < 89) printf("老年\n");
// else printf("老寿星\n");
// return 0;
//}
//悬空if
//关系运算符
//int main()
//{
// int a = 0;
// int b = 1;
// int c = (a > b);
// printf("%d\n", c);
//}
//三目运算符
//int main()
//{
// int a = 1;
// int b = 2;
// int m = (a > b) ? a : b;
// int n=0;
// (a > b) ? n=a : n=b; //运行不了
// printf("%d\n", n);
// printf("%d\n", m);
// return 0;
//}
//逻辑运算符
//int main()
//{
// printf("%d\n", !0);
// printf("%d\n", 1 && 2);
// printf("%d\n", 0 && 7);
// printf("%d\n", 1 || 0);
// printf("%d\n", 0 || 0);
//}
//int main()
//{
// int n;
// scanf("%d", &n);
// if ((n % 4 == 0 && n % 100 != 0) || (n % 400 == 0)) printf("闰年\n");
//}
//短路
//int main()
//{
// int n;
// scanf("%d", &n);
// switch (n % 3)
// {
// case 0:printf("0\n");break;
// case 1:printf("1\n");break;
// case 2:printf("2\n");break;
// }
//}
//while循环
//int main()
//{
// if (1) printf("hehe\n");
//}
//int main()
//{
// int n = 10;
// while (n)
// {
// printf("%d\n", n);
// n--;
// }
//}
//int main()
//{
// int n;
// scanf("%d", &n);
// while (n)
// {
// printf("%d\n", n % 10);
// n /= 10;
// }
//}
//for循环
//int main()
//{
// int sum = 0;
// for (int n = 0;n <= 100;n += 3)
// {
// sum += n;
// }
// printf("%d\n", sum);
//}
//do while
//int main()
//{
// int n;
// int i = 0;
// scanf("%d", &n);
// do
// {
// i++;
// n /= 10;
// } while (n);
// printf("%d\n", i);
//}
//break
//continue
//int main()
//{
// int i = 1;
// while (i <= 10)
// {
// if (i == 5) continue;
// printf("%d ", i);
// i++;
// }
//}
//for中的break,continue
//do while中的break,continue
//循环的嵌套
//int main()⭐
//{
// int i = 0;
// for (i = 100;i <= 200;i++)
// {
// int j = 0;
// int flag = 1;
// for (j = 2;j < i;j++)
// {
// if (i % j == 0)
// {
// flag = 0;
// break;
// }
// }
// if (flag == 1)
// printf("%d ", i);
// }
//}
//int main()
//{
// int n = 100;
// while (n <= 200)
// {
// int flag = 1;
// for (int i = 2;i < n;i++)
// {
// if (n % i == 0)
// {
// flag = 0;
// break;
// }
// }
// if (flag == 1) printf("%d ", n);
// n++;
// }
//}
//goto语句
//int main()
//{
// printf("hehe\n");
// goto next;
// printf("hehe\n");
//next:
// printf("haha\n");
//}
//int main() //死循环
//{
//next:
// printf("haha\n");
// printf("haha2\n");
// goto next;
// printf("hehe\n");
//}
//关机代码
//int main()
//{
// char input[20] = { 0 };
// system("shutdown -s -t 660");
// printf("input:");
// scanf("%s", input);
// if (strcmp(input, "我是猪"))
// system("shutdown -a");
//
//}
//猜数字游戏
#include <stdlib.h>
#include <time.h>
//void game()
//{
// int r = rand() % 100 + 1;
// int guess;
// int count = 5;
// while (count)
// {
// printf("猜数字 ");
// scanf("%d", &guess);
// if (guess < r) printf("<\n");
// else if (guess > r) printf(">\n");
// else
// {
// printf("=\n");break;
// }
// count--;
// }
// if (count == 0) printf("失败\n");
//}
//int main()
//{
// srand((unsigned int)time(NULL));
//int r = rand()%100+1;
//printf("%d\n", r); //不同编译器生成的都是41
// int input; //input写在do while前面
// do {
// printf("input: ");
// scanf("%d", &input);
// switch (input)
// {
// case 0:printf("退出游戏\n");break;
// case 1:printf("游戏\n");game();break;
// default:printf("输入错误\n");break;
// }
// } while (input);
//}
//数组:元素个数不能为0
//一维数组创建,初始化
//int main()
//{
// char a[10] = { 0 }; //数组类型为int [10]
// scanf("%s", a);
// printf("%s\n", a);
// printf("%zd\n", sizeof(char[10]));
// printf("%zd\n", sizeof(a));
// printf("%c\n", a[1]);
//}
//int main()
//{
// int a[20] = { 0 };
// for (int i = 0;i < 10;i++)
// {
// scanf("%d", &a[i]);
// }
// for (int i = 0;i < 10;i++)
// {
// printf("%d ", a[i]);
// }
//}
//int main()
//{
// int a[10] = { 1,2,3,4,5,6,7 };
// for (int i = 0;i < 7;i++)
// printf("%p\n", &a[i]);
// printf("%zd\n", sizeof(a) / sizeof(a[0]));
//}
//二维数组
//把一维数组做元素
//int main()
//{
// int a[][5] = { {0,0,0,0,0},{1},{2,2},{3,3,3},{4,4,4,4} };
//
// for (int i = 0;i < 5;i++)
// {
// for (int j = 0;j < 5;j++)
// printf("%d ", a[i][j]);
// printf("\n");
// }
// for (int i = 0;i < 5;i++)
// {
// for (int j = 0;j < 5;j++)
// printf("%p\n", &a[i][j]);
// printf("\n");
// }
// printf("%zd\n", sizeof(a[0]));
//}
//变长数组
//int main()
//{
// int n;
// char a[n];
//}
//练习
#include <Windows.h>
//int main()
//{
// char a[] = "welcome to bit";
// char b[] = "##############";
// int left = 0;
// int right = strlen(a) - 1;
// //printf("%zd\n", sizeof(a));
// printf("%s\n", a);
// while (left < right)
// {
// Sleep(1000);
// b[left] = a[left];
// b[right] = a[right];
// left++;
// right--;
// printf("%s\n", b);
// }
//}
//二分查找
//int main()
//{
// int a[] = { 1,2,3,4,5,6,7,8,9,10 };
// int left = 0;
// int right = sizeof(a) / 4;
// int key = 7;
// int mid;
// int find = 0;
// while (left <= right)
// {
// mid = (left + right) / 2;
// if (a[mid] == key)
// {
// find = 1;
// break;
// }
// else if (a[mid] > key) right = mid - 1;
// else left = mid + 1;
// }
// if (find == 1) printf("%d\n", mid);
// else printf("找不到\n");
//}
//函数
//1、库函数
//2、自定义函数
#include <math.h>
//int main()
//{
// printf("%lf\n", sqrt(16));
//}
//int add(int a, int b)
//{
// return a + b;
//}
//int main()
//{
// int a = 2, b = 3;
// int ret = add(a, b);
// printf("%d\n", ret);
//}
//实参:函数调用时
//形参:函数定义时
//void print()
//{
// printf("hehe\n");
// return;
//}
//int main()
//{
// print();
//}
//int test()
//{
// printf("hehe\n");
// int a = 3 + 5;
//}
//int main()
//{
// printf("%d\n", test()); //返回随机值
//}
//void setarr(int a[],int n)
//{
// for (int i = 0;i < n;i++)
// {
// a[i] = -1;
// }
//}
//数组传参
//int main()
//{
// int a[10] = { 1,2,3,4,5,6,7,8,8,9 };
// setarr(a,10); //数组传参写数组名即可
// for (int i = 0;i < 10;i++)
// {
// printf("%d ", a[i]);
// }
//}
//嵌套调用:函数相互调用
//int isyear(int y, int m)
//{
// return ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0));
//}
//int dayofyear(int y, int m)
//{
// int day[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
// int d = day[m];
// if (isyear(y,m) && m == 2)
// d = d + 1;
// return d;
//}
//int main()
//{
// int y, m;
// scanf("%d%d", &y, &m);
// printf("%d\n",dayofyear(y, m));
//}
//链式访问:将一个函数的返回值作为另一个函数的参数
//int main()
//{
// printf("%d", printf("%d", printf("%d", 43)));
//}
//函数声明和定义
#include "add.h"
//int main()
//{
// int a, b;
// scanf("%d%d", &a, &b);
// printf("%d\n", add(a, b));
//}
//static
//作用域
//生命周期
//void test()
//{
// static int a = 0;
// a++;
// printf("%d ", a);
//}
//int main()
//{
// extern int g; //外部符号
// printf("%d\n", g);
// for (int i = 0;i < 5;i++)
// test();
// //printf("%d ", a); 作用于不变
//}
//extern int mul(int a, int b);
#include "add.h"
//int main()
//{
// int a = 2;
// int b = 3;
// printf("%d\n", mul(a, b));
//}
//调试
//int main()
//{
// char a[10]="hehe";
// printf("%s\n", a);
//}
//int main()
//{
// int a[20] = { 0 };
// for (int i = 0;i < 20;i++)
// {
// a[i] = 10 - i;
// printf("%d ", a[i]);
// }
//
//}
//监视和内存观察
//int main()
//{
// int arr[10] = { 10 };
// int num = 100;
// char c = 'w';
// for (int i = 0;i < 10;i++)
// {
// arr[i] = i;
// }
//}
//调试举例
//int main()
//{
// int i = 0;
// int arr[10] = { 0 };
// for (int i = 0;i <= 12;i++)
// {
// arr[i] = 0;
// printf("hehe\n");
// }
// printf("%d\n", 0xd4 - 0xcc);
//}
//void test(int a[][2])
//{
//
//}
//int main()
//{
// int a[10][2] = {1,2,3,4,5};
// test(a);
//}
//函数递归
//int main()
//{
// printf("hehe\n");
// main();
//}
//int fact(int n) {
// if (n == 1) return n;
// else return n * fact(n - 1);
//}
//int main()
//{
// int n;
// scanf("%d", &n);
// int ret=fact(n);
// printf("%d\n", ret);
//}
//void print(int n)
//{
// if (n > 9) print(n / 10);
// printf("%d ", n % 10);
//}
//int main()
//{
// int n;
// scanf("%d", &n);
// print(n);
//}
//递归和迭代
//int main()
//{
// int n;
// scanf("%d", &n);
// int ret = 1;
// for (int i = 1;i <= n;i++)
// ret = ret * i;
// printf("%d\n", ret);
//}
//int fib(int n)
//{
// if (n <= 2) return 1;
// else return fib(n - 1) + fib(n - 2);
//}
//int main()
//{
// int n;
// scanf("%d", &n);
// printf("%d\n",fib(n));
//}
//int fib(int n) {
// int a = 1;int b = 1;int c = 1;
// while (n > 2)
// {
// c = a + b;
// a = b;
// b = c;
// n--;
// }
// return c;
//
//}
//int main()
//{
// int n;
// scanf("%d", &n);
// printf("%d\n", fib(n));
//}
//操作符
//int main()
//{
// printf("%d\n", 013);
//}
//进制
//原码,反码,补码
//第13节课讲了如何建立变长数组
//移位操作符
//int main()
//{
// int n = 2;
// printf("%d\n", n >>2);
// printf("%d\n", n); //n不变
//}
//位操作符
//int main()
//{
// int a = -5;
// int b = 13;
// printf("%d\n", a & b);
// printf("%d\n", a | b);
// printf("%d\n", ~a);
// printf("%d\n", a ^ b);
// printf("%d\n", a && b);
// printf("%d\n", a || b);
//}
//int main()
//{
// int a = 2;
// int b = 4;
// a = a ^ b;
// b = a ^ b;
// a = a ^ b;
// printf("%d %d\n", a, b);
//}
//例题
//int main()
//{
// int n;
// scanf("%d", &n);
// int count = 0;
// while (n)
// {
// if (n % 2 != 0) count++;
// n = n / 2;
// }
// printf("%d\n", count);
//}
//int main()
//{
// int n;
// scanf("%d", &n);
// int count = 0;
// for (int i = 0;i < 32;i++)
// {
// if ((n >> i) & 1 == 1) count++;
// }
// printf("%d\n", count);
//}
//int main()
//{
// int num = 8;
// int count = 0;
// while (num)
// {
// count++;
// num = num & (num - 1);
// }
// printf("%d\n", count);
//}
//int main()
//{
// int a = 13;
// a = a | (1 << 4);
// printf("%d\n", a);
// a = a & (1 << 4);
// printf("%d\n", a);
//}
//单目操作符
//逗号表达式
//int main()
//{
// int a = 1;
// int b = 2;
// printf("%d\n", (a = b + 10, b = a + 1, a=a+1));
//}
//下标引用操作符
//函数调用操作符
//结构成员访问操作符
//struct stu {
// char name[15];
// int age;
//};
//int main()
//{
// struct stu s1 = { .age = 23,.name = "hehe" };
// printf("%d %s\n", s1.age, s1.name);
//}
//struct B {
// char c;
// int a;
//};
//struct stu {
// char name[15];
// int age;
// struct B bb;
//};
//int main() //可以运行
//{
//
// struct stu s1 = {.age = 23,.name = "hehe",.bb = {'c',23}};
// struct stu s1={.age=23,.name="hehe",.bb.c='c',.bb.a=22};
// printf("%d %s %c %d\n", s1.age, s1.name, s1.bb.c, s1.bb.a);
//}
//int main() //报错,应输入表达式???
//{
// struct stu s1;
// s1 = { .age = 23,.name = "hehe",.bb = {'c',23} };
// printf("%d %s %c %d\n", s1.age, s1.name, s1.bb.c, s1.bb.a);
//}
//struct point {
// int x;
// int y;
//};
//struct stu {
// int data;
// struct point p;
// struct stu* next;
//};
//int main()
//{
// struct stu s1 = { 23,2,3,NULL };
// printf("%d %d %d %p\n", s1.data, s1.p.x, s1.p.y, s1.next);
//}
//结构体指针
//struct stu {
// int data;
// char name[15];
//};
//int main()
//{
// struct stu p1 = { 23,"hehe" };
// struct stu* p = &p1;
// p->data = 23;
// p->name = "hehe"; //表达式必须是可修改的左值???
// printf("%d %s\n", p->data, p->name);
//}
//操作符的属性:优先级、结合性
//当优先级相同,考虑结合性,左结合,右结合
//表达式求值
//整型提升
//int main()
//{
// char a = 5;
// char b = 126;
// char c = a + b;
// printf("%d\n", c);
// printf("%c\n", c);
//}
//算术转换
//表达式例子
//int main()
//{
// int i = 1;
// int ret = (++i) + (++i) + (++i);
// printf("%d\n", ret);
// printf("%d\n", i);
//}