elric
21 次阅读
约 5 分钟 · 1553 字
C语言笔记1

C语言/C++ 笔记

2023-7-28 ~ 2023-8-27

计算机思维

枚举法、二分法 等等

程序设计的三种思想

顺序执行、选择执行(判断)、循环执行 (顺序结构,分支结构,循环结构)

基础语法

int

(integer 整数) 输出整数%d

C
int a;   //int main() 可以被解释为“返回一个整数”的意思

float

(浮动 ==> 浮点数,即小数)输出小数%f

C
float a;

double

(双精度浮点数 ”double float“ 的“双”) 用%lf来输出小数(lf=long float)

C
double a;

printf

(print打印;输出)

C
 printf(“%d”,&a);

scanf

(scan扫描;输入(一定不要忘记加&)) &是 ”取址符“

C
scanf(“%d”,&a);

char

(character 字符)用来存放字符:

C
char a,b[10];
  1. %c是以字符形式输入输出;

  2. %s是以字符串来输入输出,这时输入时 scanf(“%s”,a) 的a前一般不加&,因为数组名(即这个字符串本身)就是一个地址,所以不用加&取地址的

  3. 若char后面是字符串,如 char a[10]; 时,
    {只有九个小空间(原本有十个a[0]~a[9]),因为字符串后要加一个字符\0来让它成为一个”字符串“(\0是字符串结束标记,可当作0) }

if

(如果)

C
if(){  ;}

else

(否则)(可以一个if后跟好多个同级别的else)

C
else{  ;}

while

(当)(用于循环)小括号中为真命题时开始循环,为假时不执行大括号中的内容,这点约等于if()

// /**/

//后或/* */中的内容是无用的或是注释

Sleep

Sleep等待~秒再下一步(记得要大写呀!)(window独有)(#include <windows.h>)

C
Sleep(5000);  //暂停程序执行5000毫秒(即5秒

system

system函数 (位于 <stdlib.h> 头文件中)

C
//cls			(clear+s 清理+复数)清屏   system("cls")//color 		改颜色system("color 0f") 		//第一个0~f为背景色,第二个为文字颜色,若只有一个字符,则是文字颜色)
0=黑色1 =蓝色2 =绿色3 =浅蓝色4=红色5 =紫色6 =黄色7=白色
8 =灰色9 =淡蓝色a=淡绿色b =淡浅绿色c=淡红色d=淡紫色e=淡黄色f=亮白色

rand

rand 产生随机数(random随机)(伪随机数生成函数)

用rand()时要如此用:

C
int a;srand((unsigned)time(NULL));a=rand();//其中,//srand()是用于初始化随机数发生器的种子,这里用于获取当前时间值为数值的种子,//括号中的是种子;//	unsigned:无符号的;//	NULL空值(这里也可改成0);//	time()调用现在的时间。 //或写成:srand(time(0));int a=rand();

for

for 循环, (英文:表示时间持续-->循环)

C
for(){    }

a=a+1 可简写成a++ 同理 a=a-1 <==> a-- (注a++ 与++a)

a=a+2 <==> a+=2 ; a=a*3 <==> a*=3 “/”、“-”同理。 话说这个还不如写原式叻

break

break 中断,断开,暂停,打破(中断循环,不进行之后几轮循环直接结束循环)

continue

continue 继续 (跳过本轮循环中,这个单词后面的内容,直接开始下一轮循环的)

~scanf("%d%d",&a,&b) 中的~让scanf的返回值永不为0,即永不为假命题

如while(1){scanf XXX} <==> while(~scanf XXX){XXX}

shutdown 关机,停工

C
system(“shutdown -s -t 50”)		//五十秒后关机// “-s”		关机 //“-r”		重启//“-t 100”	100秒后关机//“-a”		取消关机

a[10] (是a[0]~a[9]) ; a[3][4] 一个在第三行第四列的二维数组

数组a[10]的单元个数 = “sizeof(a)/sizeof(a[0]) “= “10”

​ (sizeof给出整个数组所占的内容的大小,单位字节,sizeof(a)/sizeof(a[0]) 所有的除以单个的=个数)

数组`int a[]={}`中大括号中不用加双引号;二维数组`int a[][]={}中也是,是用a[][]={ {1 , 1 , 2 } , { } , { } }

int a[10]={ [0] = 2 , [2] = 3 , 6 , }给指定位置赋值(这里给了0=>2 ; 2=>3 ; 3=>6 ;)

字符串char a[][]={}是用a[][]={“apple”,”bus”,”car”}

注:普通数组、字符串都没有上述红色的

输入字符时:

a=getchar(); <==> scanf(“%c”,&a); (输入一个字符,要按回车后才进行下一步)

a=getche(); (输入一个字符时,不用按回车,立刻就进行下一步)

a=getch(); (输入一个字符时,不显示所按的字符,并立刻进行下一步)

字符数组又叫字符串

输入字符串时:

scanf(“%s”,a); 其中输入的内容会被空格隔开,只读入空格前的

gets(a) 不会被空格隔开,可以识别空格,只要在同一行之内即可

最好用fgets

fgets(a,sizeof(s),stdin);

sscanf(a,”%d”,&b); 可以从给定的字符串a中获取整数b,作用和scanf一样

sprintf同理,是将一个值输入到字符串中

输出字符串时:

printf(“%s”,a); 输出这个字符串

puts(a); <==> printf(“%s\n”,a); 即输出这个字符串后,并换一行,向对二维数组a[50][30],只用输入 puts(a[第几行]); ,即后面的表示串串的不用输入

对字符串设定初始值:

char a[10]={“hello”};

strlen 获取字符串的长度(string length字符串+长度);如:b=strlen(a); a这个字符串的长度为多少个”小房子“,告诉b

a[10][20] 第一个[]表示这个二位字符串有10行,第二个[]表示这个字符串有21个小房子,当然,可以提取出其中的某一字符,如a[5][3] (第五行第二列)

strcmp()用于比较a、b两数(字符串)在字典序中的顺序(即先按首字母a-z,再按第二个字母a-z等等)

​ 如strcmp(a,b)

​ 若a为put,b为main,则b>a

​ 若a在字典中比b先出现,那么,返回值<0;

​ 若a在字典中比b后出现,那么,返回值>0;

​ 若a=b,则返回值=0

​ 注:strcmp(string compare字符串+比较)

strcpy()用于将第一个数的值等同于第二个数“(string copy 字符串+复制)

​ 如:strcpy(a,b)既是将b的值赋予给a ;有点像a=b;

strcat()用于将a字符串与b字符串拼接在一起(string catch字符串+接住)

​ 如:c=strcat(a,b); 若a=eat; b=a apple;则c=eat a apple

scanf与printf的f是formatting

const int A=100; 设置常量A为100。子厚无法改a的值。一般为全大写,以表明这是个常量

do...while

C
do{    }while()//先做后判断

switch

C
switch(一个变量){    case 常量:    xxxxx;break;    case 常量2		//如1、2、1+1    xxxxx;    ......    default:    xxxxx;}

每一个分支后都要加上break;,不然的话,他会从出发的分支一直向后运行(运行下一个case),直到本次循环结束。

default:缺席(若那个变量不等于任何一个常量,则进行default这个分支的循环)

switch:切换

case:实例;案例

goto

goto:去(如用goto out; out: 则是到goto语句后跳到他后面的单词out后,即out:“后。无论out:在前还是后,但一般多用于从多重嵌套循环中跳去整个循环,而减少多次用break)

函数

函数定义:

​ 如求和函数:

C
void sum(int begin,int end) 	//这是函数头//sum是函数名//void是返回类型		(void是”没有“不返回任何东西)//函数头中的括号部分是参数表。若是空的表示不接受任何函数//下面是函数体{	int i;	int sum=0;                                 	for(i=begin; i<=end;i++)    {                   		sum+=1;                              	}                                           	printf("%d到%d的和是%d\n",begin,end,sum);}  

调用函数:

  1. 函数名(参数值);
  2. ()起到了表示函数调用的重要作用
  3. 即使没有参数也需要()
  4. 如果有参数,则需给出正确的数量与顺序,这些值会被按照顺序依次初始化函数中的参数

void:不返回任何东西(其后不能用带值的return(可用return;)或可以没有return)

int :返回return后的结果(如return i,则返回i中的值)

return后停止这个函数的运行,并返回一个值(一个函数可以出现多个函数)

把函数放在int main上面是因为c的编译器是自上而下分析代码,它必须要先看到自创的函数才能运用,

或者将函数头复制一遍并搬到前面去并加;,从而对编译器进行一次“原型声明”,告知它有这个代码

如:

C
void sum(~);int main(~){~}void sum(~){~}

若调用函数时给的参数类型不匹配,c语言会悄悄改好,但c++,java等不会(如double 2.4 ==>int 2)

在不同函数中可以有相同的未知数(如:a函数中可以有int a; b函数中也可以有int a;可类比f(x)g(x)的x)

(参数)(那个函数sum(a,b)中的a、b叫值,值传给参数叫传值)

代码最好是少出口,以减少后期改动的麻烦

定义在函数内部的变量(包括参数),都是本地变量,其是在“块”内运行,即大括号中运行,

比如在

C
int main(){	    int a,b;	if()    {        int c;    }	b++;    c++;}

中,

a、b在红括号中可运行,c只能在蓝括号中运行。

程序进入这个块之前,其中的变量不存在,离开后,其中的变量就消失了。但在块外面定义的变量到里面也有用。如果在块里面定义一个与外面所定义的相同名字的变量,则会在里面临时顶替它,等出去后在变成进来前的数值

如:

C
int main(){    int a=10;	{		int a=0;         printf(“%d,”,a);	}	a++;     printf(“%d,”,a);} //结果输出的是“0,11,”

但在同一个块中(大括号中)不能定义两次相同的变量(如:int a,a;)

本地变量不会被默认初始化,会得到任意的值。但参数在进入一个新函数中会被初始化(因为必须给一个值才能让它进入那个新函数

其他

c语言不能函数中嵌套定义函数

\n 换行(≈Enter键)

\t 空四格(Tab键)

异或 a^b:

​ a或b两者其一成立,输出1,同时成立或不成立输出0;

结构体

在C语言中,struct是一种自定义的数据类型,用于定义一组相关的变量,这些变量可以具有不同的数据类型。struct关键字用于定义一个结构体(structure),结构体是一个将多个变量打包在一起的数据类型。

结构体可以包含多个成员变量,每个成员变量都有自己的名称和数据类型。通过定义结构体,我们可以将这些相关的变量组织在一起,形成一个更大的数据单元,以便于处理和管理。

以下是一个示例,展示了如何定义和使用结构体:

C
#include <stdio.h>// 定义结构体struct Student {    char name[20];    int age;};int main() {    // 声明并初始化结构体变量    struct Student student1 = {"John", 20};        // 访问结构体成员变量    printf("Student Name: %s\n", student1.name);    printf("Student Age: %d\n", student1.age);        return 0;}

在上面的例子中,我们定义了一个名为Student的结构体,它包含两个成员变量:name和age。在main函数中,我们声明并初始化了一个student1的结构体变量,并使用.运算符访问和打印了结构体成员变量的值。

C
//运行程序将输出:Student Name: JohnStudent Age: 20

结构体能够更好地组织和管理相关的数据,使得程序更具可读性和可维护性。通过使用结构体,可以创建自定义的数据类型,以便更灵活地处理复杂的数据结构。

sizeof 是一个运算符,用于给出某个类型或变量在内存中所占据的字节数

C
sizeof(int)sizeof(a)

运算符&,用于取址

指针

定义

指针,就是保存地址的变量

C
int i;int* p=&i;    			 //p是一个指针,保存了i的地址int* p,q;  =  int *p,q;  //p是一个指针,q是一个变量int *p,*q    			//p是一个指针,q是一个指针//*p此时可以当作i

可以通过指针来访问、改变其他函数的变量

作为参数的指针

C
void f(int *p);//在被调用的时候得到了某个变量的地址:int i=0;f(&i);//在函数里面可以通过这个指针访问外面的这个i

访问那个地址上的变量

C
//*是一个单目运算符,用来访问指针的值所表示的地址上的变量//可以做右值也可以做左值int k=*p;*p=k+1;

数组参数

.以下四种函数原型是等价的:

C
//以下四种函数原型是等价的:int sum(int *ar, int n);int sum(int *, int):int sum(int ar[], int n);int sum(int [], int);

数组变量是特殊的指针

数组变量本身表达地址,所以

C
int a[10]; int*p=a; //无需用&取地址 //但是数组的单元表达的是变量,需要用&取地址a==&a[0]    //[]运算符可以对数组做,也可以对指针做:p[0]<==>a[0]    //*运算符可以对指针做,也可以对数组做:a=25; //数组变量是const的指针,所以不能被赋值int a[]<==> int* const a=....

char

定义

char即character

注意

char是一种整数,也是一种特殊的类型:字符。这是因为:

用单引号表示的字符字面量:'a', '1'

"也是一个字符

printf和scanf里用%c来输入输出字符

字符的输入输出

如何输入'1'这个字符给char c?

C
scanf("%c",&c);				-->1scanf("%d", &i); c=i; 		-->49

对于scanf("%d%c"):

如果scanf的%d后%c前没有空格,就是说他只读到整数为止。像如果输入12a那只读12,a不读。

但如果有空格,则读完整数还要读后面空格后的内容(空格可以空好多格)。

字符计算

C
char c='A';c++;printf("%c\n", c);int i='Z'-'A';printf("d\n", i);//一个字符加一个数字得到ASCII码表中那个数之后的字符

逃逸字符

用来表达无法印出来的控制字符或特殊字符,它由一个反斜杠\开头,后面跟上另一个字符,这两个字符合起来,组成了一个字符

C
printf("请分别输入身高的英尺和英寸,"       "如输入"5 7"表示5英尺7英寸:");

逃逸字符有

字符 意义
\b 回退一格(≠删除)
'' 双引号
\t 到下一个表格位
' 单引号
\n 换行
\ 反斜杠本身
\r 回车

如:

C
printf("123\b\n456\n");//		 ↓//		12A//		456

字符数组

C
char word[]=('H','e',I'.I','o','l'];//其中://word[0]  H//word[1]  e//word[2]  l//word[3]  l//word[4]  o//word[5]  ! //注://这不是C语言的字符串,因为不能用字符串的方式做计算//在最后面还要加一个“\0”才是字符串。

字符串

  • 以0(整数0)结尾的一串字符

  • 0或\0是一样的,但是和0不同

  • 0标志字符串的结束,但它不是字符串的一部分

  • 计算字符串长度的时候不包含这个0

  • 字符串以数组的形式存在,以数组或指针的形式访问

  • 更多的是以指针的形式

  • string.h 里有很多处理字符串的函数

  • C语言的字符串是以字符数组的形态存在的

  • 不能用运算符对字符串做运算

  • 通过数组的方式可以遍历字符串

指针还是数组?

C
char *str="Hello";			//这个str是个常量char word[] = "Hello";
  • 数组:这个字符串在这里作为本地变量空间自动被收

  • 指针:这个字符串不知道在哪里处理参数、动态分配空间

  • 如果要构造一个字符串 --> 数组

  • 如果要处理一个字符串 --> 指针

char*是字符串?

  • 符串可以表达为char*的形式

  • char*不一定是字符串

  • 意是指向字符的指针,可能指向的是字符的数组(就像int*一样)

  • 有它所指的字符数组有结尾的0,才能说它所指的是字符串

字符串输入输出

C
char string[8];scanf("%s",string);printf("%s", string);//scanf读入一个单词(到空格、tab或回车为止)

在scanf的%和s中间加一个数字,那个数字表明你最多读多少个字符,可以通过这种方法以防数组越界。当然了,要记得字符串,最后一个是0

安全的输入

C
char string[8];scanf("%7s", string);//在%和s之间的数字表示最多允许读入的字符的数量,这个数字应该比数组的大小小一

常见错误

C
char *string;scanf("%s",string);//以为char*是字符串类型,定义了一个字符串类型的变量string就可以直接使用了

string.h

包括

strlen

strcmp

strcpy

strcat

strchr

strstr

strlen

C
size_t strlen(const char *s);//返回s的字符串长度(不包括结尾的0)

strcmp

C
int strcmp(const char *s1, const char *s2)://比较两个字符串,返回://0:s1==s2//1:s1>s2//-1:s1<s2

·int strcmp(const char *s1, const char *s2):

. 比较两个字符串,返回:

·0:s1==s2

·1:s1>s2

·-1:s1<s2

strcat

C
char * strcat(char *restrict s1, const char *restrict s2);//把s2拷贝到s1的后面,接成一个长的字符串	//返回s1	//且s1必须具有足够的空间

安全问题

strcpy和strcat都可能出现安全问题. 如果目的地没有足够的空间?

安全版本

C
char * strncpy(char *restrict dst, const char *restrict src, size_t n);char * strncat(char *restrict s1, const char *restrict s2, size_t n);int strncmp(const char *s1, const char *s2, size_t n);
C
//字符串中找字符char * strchr(const char *s, int c);char * strrchr(const char *s, int c);//返回NULL表示没有找到 //如何寻找第2个?

!= NULL 和 != EOF

!= NULL 和 != EOF 是两种不同的比较方式,它们用于不同的上下文。

​ != NULL:这个比较通常用于检查指针是否为空。在 C 语言中,指针变量可以包含空值(NULL),表示指针不指向任何有效的内存位置。因此,当我们想要检查一个指针是否为空时,可以使用 != NULL。比如,ptr != NULL 表示指针 ptr 不为 NULL。

示例代码:

C
int* ptr = NULL;if (ptr != NULL) {   // 指针不为空} else {   // 指针为空}

​ != EOF:这个比较通常用于检查文件读取操作是否成功。在 C 语言中,EOF 是一个特殊的宏,表示文件结束符。当我们使用类似 fgetc 或 fgets 等函数从文件中读取字符时,它们会返回读取的字符或 EOF。因此,在读取文件时,我们可以用 != EOF 来检查读取操作是否成功。

示例代码:

C
FILE* file = fopen("data.txt", "r");int ch;while ((ch = fgetc(file)) != EOF) {   // 成功读取一个字符}

总结来说,!= NULL 用于指针是否为空的判断,而!= EOF则用于文件读取操作是否成功的判断。它们分别适用于不同的场景和目的。

运算符优先级

优先级运算符含义类结合律
16名称、字面值简单记号主无
[]数组取下标后缀从左到右
f(...)函数调用后缀
.结构/联合成员后缀
->结构/联合间接成员后缀
++自增后缀
--自减后缀
(type name) (init)复合字面值(C99)后缀
15++自增前缀从右到左
--自减前缀
sizeof数据类型长度一元
~按位 取反一元
!逻辑 非一元
-负号一元
+正号一元
&取地址一元
*间接访问一元
14(type name)类型转换一元从右到左
13*乘法二元从左到右
/除法二元
%求余二元
12+加法二元从左到右
-减法二元
11<<左移二元从左到右
>>右移二元
10<、>、<=、>=小于、大于、小于等于、大于等于二元从左到右
9==、!=相等、不相等二元从左到右
8&按位 与二元从左到右
7^按位 异或二元从左到右
6|按位 或二元从左到右
5&&逻辑 与二元从左到右
4||逻辑 或二元从左到右
3?:条件三元从右到左
2=、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=赋值二元从右到左
1,逗号运算符(顺序求值)二元从左到右

Ascii表

ASCII中的0\~31为控制字符;32\~126为打印字符(可显示字符);127为Delete(删除)命令
0NUL(空)32(space)64@96`
1SOH(头标开始)33!65A97a
2STX(正文开始)34"66B98b
3ETX(正文结束)35#67C99c
4EOT(传输结束)36$68D100d
5ENQ(查询)37%69E101e
6ACK(确认)38&70F102f
7BEL(震铃)39'71G103g
8BSK(backspace)40(72H104h
9HTK(水平制表符)41)73I105i
10LFK(换行/新行)42*74J106j
11VTK(竖直制表符)43+75K107k
12FFK(换页/新页)44,76L108l
13CRK(回车)45-77M109m
14SOK(移出)46.78N110n
15SIK(移入)47/790111o
16DLE(数据链路转意)48080P112p
17DCI(设备控制1)49181Q113q
18DC2(设备控制2)50282R114r
19DC3(设备控制3)51383S115s
20DC4(设备控制4)52484T116t
21NAK(反确认)53585U117u
22SYN( 同步空闲)54686V118v
23TBK(传输块结束)55787W119w
24CAN(取消)56888X120x
25EMK(媒体结束)57989Y121y
26SUB(替换)58:90Z122z
27ESC(转意)59;91[123{
28FSK(文件分隔符)60<92\124\|
29GSK(组分隔符)61=93]125}
30RSK(记录分隔符)62>94^126~
31USK(单元分隔符)63?95_127DEL
ASCII扩展字符(EBCDIC 编码)(IBM制定)——(为了适应更多字符) 128\~255,或者-128\~-1,其中,-128对应128,依次递增对应
128(-128)Ç160(-96)á192(-64)└224(-32)α
129(-127)ü161(-95)í193(-63)┴225(-31)ß
130(-126)é162(-94)ó194(-62)┬226(-30)Γ(γ)
131(-125)â163(-93)ú195(-61)├227(-29)π
132(-124)ä164(-92)ñ196(-60)─228(-28)Σ
133(-123)à165(-91)Ñ197(-59)┼229(-27)σ
134(-122)å166(-90)ª198(-58)╞230(-26)μ
135(-121)ç167(-89)º199(-57)╟231(-25)Τ
136(-120)ê168(-88)¿200(-56)╚232(-24)Φ
137(-119)ë169(-87)┌201(-55)╔233(-23)Θ
138(-118)è170(-86)┐202(-54)╩234(-22)Ω
139(-117)ï171(-85)½203(-53)╦235(-21)δ
140(-116)î172(-84)¼204(-52)╠236(-20)∞
141(-115)ì173(-83)¡205(-51)═237(-19)φ
142(-114)Ä174(-82)«206(-50)╬238(-18)ϵ
143(-113)Å175(-81)»207(-49)╧239(-17)∩
144(-112)É176(-80)░208(-48)╨240(-16)≡
145(-111)æ177(-79)▒209(-47)╤241(-15)±
146(-110)Æ178(-78)▓210(-46)╥242(-14)≥
147(-109)ô179(-77)│211(-45)╙243(-13)≤
148(-108)ö180(-76)┤212(-44)Ô244(-12)⌠
149(-107)ò181(-75)╡213(-43)╒245(-11)⌡
150(-106)û182(-74)╢214(-42)╓246(-10)÷
151(-105)ù183(-73)╖215(-41)╫247(-9)≈
152(-104)ÿ184(-72)╕216(-40)╪248(-8)º
153(-103)Ö185(-71)╣217(-39)┘249(-7)•
154(-102)Ü186(-70)║218(-38)┌250(-6)∙
155(-101)¢187(-69)╗219(-37)█251(-5)√
156(-100)£188(-68)╝220(-36)▄252(-4)ⁿ
157(-99)¥189(-67)╜221(-35)▌253(-3)²
158(-98)₧(₧)190(-66)╛222(-34)▐254(-2)■
159(-97)ƒ191(-65)┐223(-33)▄255(-1)ÿ
ASCII扩展字符(Windows-1252)——(为了适应更多字符) 128\~255,或者-128\~-1,其中,-128对应128,依次递增对应
128(-128)€160(-96)192(-64)À224(-32)à
129(-127)161(-95)¡193(-63)Á225(-31)á
130(-126)‚162(-94)¢194(-62)Â226(-30)â
131(-125)ƒ163(-93)£195(-61)Ã227(-29)ã
132(-124)„164(-92)¤196(-60)Ä228(-28)ä
133(-123)…165(-91)¥197(-59)Å229(-27)å
134(-122)†166(-90)¦198(-58)Æ230(-26)æ
135(-121)‡167(-89)§199(-57)Ç231(-25)ç
136(-120)ˆ168(-88)¨200(-56)È232(-24)è
137(-119)‰169(-87)©201(-55)É233(-23)é
138(-118)Š170(-86)ª202(-54)Ê234(-22)ê
139(-117)‹171(-85)«203(-53)Ë235(-21)ë
140(-116)Œ172(-84)¬204(-52)Ì236(-20)ì
141(-115)173(-83)205(-51)Í237(-19)í
142(-114)Ž174(-82)®206(-50)Î238(-18)î
143(-113)175(-81)¯207(-49)Ï239(-17)ï
144(-112)176(-80)°208(-48)Ð240(-16)ð
145(-111)‘177(-79)±209(-47)Ñ241(-15)ñ
146(-110)’178(-78)²210(-46)Ò242(-14)ò
147(-109)“179(-77)³211(-45)Ó243(-13)ó
148(-108)”180(-76)´212(-44)Ô244(-12)ô
149(-107)•181(-75)µ213(-43)Õ245(-11)õ
150(-106)–182(-74)214(-42)Ö246(-10)ö
151(-105)—183(-73)Æ215(-41)×247(-9)÷
152(-104)˜184(-72)¸216(-40)Ø248(-8)ø
153(-103)™185(-71)¹217(-39)Ù249(-7)ù
154(-102)š186(-70)º218(-38)Ú250(-6)ú
155(-101)›187(-69)»219(-37)Û251(-5)û
156(-100)œ188(-68)¼220(-36)Ü252(-4)ü
157(-99)189(-67)½221(-35)Ý253(-3)ý
158(-98)ž190(-66)¾222(-34)Þ254(-2)þ
159(-97)Ÿ191(-65)¿223(-33)ß255(-1)ÿ
评论区

分享你的想法,与大家交流讨论

Twikoo 加载失败

Twikoo 脚本加载失败