短地址服务
短地址服务
需求分析
短地址服务,短网址,tiny_url
URL 统一资源定位符
原始地址:
https://www.gnu.org:80/philosophy/kind-communication.html
短地址服务,短网址,tiny_url
URL 统一资源定位符
原始地址:
https://www.gnu.org:80/philosophy/kind-communication.html
一、填空题(30)
1、C程序中 inta=5,intb=4,表达式 a&b 等于___,表达式a|b等于_____ ,表达式a^b等于_____
2、数组 int a[]={7,2,9,42,0,5},表达式*(a+3)的值是_____
3.函数ma11oc()与calloc()的区别是________
4.结构体 struct tl {int_a,char b,longc,int e}的大小为____字节
二、程序题(70)
1.定义函数 int gcd(int p,int q)返回参数 p和q的最大公约数。
2.定义函数 int fib(int n)返回斐波那契数列第n个数,使用非递归算法。
3.定义函数 int max(int *a,int n)返回数组 a 中最大的数。
3.定义函数 int second(int *a,int n)返回数组 a 中第二大的数。
4.定义函数 void copy(char *dest,char *src)实现字符串拷贝。
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
1 | $ hexo new "My New Post" |
More info: Writing
1 | $ hexo server |
More info: Server
1 | $ hexo generate |
More info: Generating
1 | $ hexo deploy |
More info: Deployment
使用hexo框架搭建
Hexo安装文档见下
https://hexo.io/zh-cn/docs/
pnpm 下载速度比npm更高效,不能混用
1 | $npm install -g pnpm |
清除缓存文件 (db.json
) 和已生成的静态文件 (public
)。
1 | $hexo clean |
启动服务器。 默认情况下,访问网址为: http://localhost:4000/
。
1 | $hexo server |
推送到服务器端
1 | $hexo deploy |
-g , --generate |
在部署前生成 |
命令 | 简写 | 中文含义 |
---|---|---|
hexo server | hexo s | 本地启动 |
hexo generate | hexo g | 生成静态文件 |
hexo deploy | hexo d | 部署网站 |
hexo clean | 清除缓存和已经生成的静态文件 |
hexo new page “”
##C 语言的编译流程
##写代码, 打印 hello world
##纸上写各个类型及其大小(字节)
##复习八进制、十六进制、二进制
(99)转10,8,16,2进制
小数转二进制:0.1
##输入一个四位数,输出各个位数的乘积与各个位数的累加和
##CPU访问各种存储器的速度。
十进制整数、小数 转二进制
0.725
0.1
##上课的示例:
1)三个数求最大、最小、中间
2)闰年判断
##个人所得税
1)不考虑五险一金
2)考虑减去五险一金
##打印空心正方形
打印三角形
打印菱形
1.裁判员人数 5名或7名,0~10分,可以打0.5
2.去掉最高分和最低分,获得总和,总和 * 难度系数
3.录入多名运动员的成绩
double[12][5]
1 2 3 4 5 h l s
1 9 7 8.5 6 8 9 6 7.5
2 9 7 8.5 6 8 9 6 7.5
3 9 7 8.5 6 8 9 6 7.5
4 9 7 8.5 6 8 9 6 7.5
功能
0.显示菜单:录入、显示、退出
1.录入成绩(打分),给第?位运动员录入成绩,5个值,计算得到最低分,最高分
2.显示成绩,显示所有运动员的成绩(放一个计数器),不要求做排序
3.退出程序
##1.计算斐波那契数列,分别用递归和循环来实现
2.计算两个数的最大公约数,int gcd(int,int)分别用递归和循环实现
3.打印1000以内所有的质数,is_prime(int)定义一个函数是否是质数
扩展:定义函数开根号
##1. 定义一个函数,传入年、月、日,返回该日期是这一年的第多少天
int days(int y, int m, int d)
1 | // 返回数组中的最小值 |
##1.输入字符串,把字符都转为大写
2.输入字符串,翻转
3.输入字符串(数值),计算累加和
4.定义一个函数,实现十进制转十六进制
扩展5.输入字符串(数值),凯撒加密
##实现字符串标准库函数
##URL超链接,短地址服务
stdlib.h
-malloc() 分配内存
-free() //释放空间,不释放就不会停止,
//在一个函数中结束就会释放内存,但在一直运行的程序中就会内存泄露(内存一直变少),程序结束就会归还空间
-realloc 重新分配(扩容)
-calloc 分配内存(空间初始化0)
-memset
-memcpy
-memcmp
指针:一种数据类型,存储内存空间的编号(地址)
‘’’c
int *p1; 整型指针
char *p2; 字符指针
//类型不确定的指针
void *p3;
int *p = p3;
char *p = p3;
double *p = p3;
p3=p1;
p3=p2;
*p3 ERROR,需要把他赋给类型确定的指针类型
数据类型
‘’’c
//自定义的数据类型
struct user
{
char name[16];
int age
char *tel;
}
int a;
struct user u1;
1.结构体变量相互赋值,拷贝了属性的值(复印件)
2.操作结构体的函数,参数应该是指针类型,否则函数无法修改结构体的属性
1.属性类型中在最大值(int long double)的整数倍(字符不算连续的)
2.属性最小往大排序,空间占用最小
URL 超链接
‘’’c
char s[] = “bye”; //ERROR 实际要3+1位置
char s1[64] = "this is a line"; //sizeof(容量)64,strlen(长度)11
//n+1, '\0'
char *s2 = "this is a line"; //sizeof 8
1.
s1[0] = 'T'; // 1 OK
s2[0] = 'T'; // 1 ERROR
2.
s1 = "next line"; //ERROR 字符数组【不可以】再次直接赋值
s2 = "next line"; //OK 字符指针【可以】执行其他字符串常量值
1.是否可以通过【下标】修改内容
s1可以,s1是数组(一块连续空间,不可变s1只能指向这块空间)
s2不可以,s2是指针,此刻指向内存的一个常量区域,内容不可变;s2可以指向其他常量字符串
2.变量能否通过 =符号再次赋值
s1不可以,s1是字符数组
s2可以,s2是字符指针.
-strlen 长度
-strcpy 复制
-strncpy
-strcat 拼接
-strncat
-strcmp 比较
-strncmp
char 1byte 8bit 2^8=256
ANSI 美国国家标准信息码
GBK (简体中文)windows默认使用的编码
GB2312 国标码
Big5 繁体中文 一个汉字两个字节 2byte 2^16=65536
CJK
unicode 统一编码 字符编码 每个符号一个数值 几乎所有的移动端都在使用
UTF-8 字符集(变长的,不同的字符编码长度不同,不固定长度) 一个中文一般3字节 支持世界上所有的文字和符号
字符:a,b,+,&,汉,😷
有序的字符序列
‘’’c
char s1[] = {‘h’,’e’,’l’,’l’,’o’};
char s2[] = “hello”;
char *s3 = “hello”;
## 作业
1.输入字符串,把字符都转为大写
2.输入字符串,翻转
3.输入字符串(数值),计算累加和
4.定义一个函数,实现十进制转十六进制
扩展5.输入字符串(数值),凯撒加密
指针:是一种数据类型,存储内存的编号(地址)
数组:是一种(复合)数据类型,一块连续的内存空间,存储相同类型的多个值
1 |
|
1 | // 返回数组中的最小值 |
指针:是一种数据类型,存储内存的编号(地址)
可变类型的指针
void *p;
‘’’c
// 声明整型变量
int a = 3;
// 整型指针变量,未初始化,nil(空),可打印值,不可访问
int *p;
int *p2;
.
//赋值,指针 p 指向了 a,可以通过指针 p 操作变量 a
p = &a;
p2 = &a;//或者表示为p2 = p 代表两个指针指向同一个空间
。
。
p2 空指针
p2 = &p1; //p2 指向 p1,存储了变量p1所在的内存空间编号
//寻址并复制
*p2 = 42
int b = a;
b = 9;
//a ?
int *pa = &a;
*pa = 9;
.
// sizeof(p) = 8 byte;x86,64
& 取地址运算,获得内存地址,若打印 %p
指针存储其他变量的地址,它自己也有地址
指针变量,不论是什么类型,它的 size 都是确定的,只与平台相关8byte