C语言
[[2.C语言Char和string]]
[[3.C语言指针]]
[[4.C语言函数]]
[[C语言代码集]]
[[C++速转Python]]
细节
main()函数
在最新的 C99 标准中,只有以下两种定义方式是正确的:
int main( void ) /* 无参数形式 */
{
…
return 0;
}
int main( int argc, char argv[] ) / 带参数形式 */
{
…
return 0;
}
在C90标准中也可以
int main(){
return 0;
}
变量
变量名以英文字母开头
不可以包含空格、标点符号和类型说明符(%、&、!、#、@、$)
字母是区分大小写
字符数组中如果分配的空间多余字符的数目,后面是用0填充的,通过验证可以知道这里是数字0而不是字符0
数据类型
signed与unsigned
signed的作用是:声明有符号类型的整数类型。
- signed意思为有符号的,也就是第一个位代表正负,剩余的代表大小,例如:signed int 大小区间为-32768 到 +32767的整数
unsigned的作用是:声明无符号的整数类型。
- unsigned意思为无符号的,所有的位都为大小,没有负数,例如:unsigned int 大小区间为:0到 的非负整数
Float 与Double
float和double都属于浮点数。区别在于:double所表示的范围,整数部分范围大于float,小数部分,精度也高于float
浮点数不可以直接用==
与!=
比较
Char与String
char取值为[-127,127],如果超过127则为-128+(超出128的部分),如128=-128,129为-127
原因是129二进制是10000001,char存储八位,将第一位认为是符号位
string 是字符串,char是单个的字符。string相当于一个容器,char可以放在里面。string有结束符,char没有
char 用''
,string用""
char数组的最后应该是'\0'
变量
关键字
不能用作变量名
这些关键字如下:
auto | break | case | char | const | continue | default | do |
---|---|---|---|---|---|---|---|
double | else | enum | extern | float | for | goto | if |
int | long | register | return | short | signed | sizeof | static |
struct | switch | typedef | union | unsigned | void | volatile | while |
Printf函数细节
%是C语言的格式符号
print type | 描述 |
---|---|
i or d | signed integer |
u | unsigned integer//最高位不是符号位,没有符号 |
f,lf | floating point number with”.”,标准是f |
e | floating point number with”e”(以指数方式输出实数) |
o,x | octal(八进制),hexadecimal(16进制) |
c,s | Character(仅输出最后一位), String |
\n | 换行 |
\t | 将光标移到最接近8的倍数的位置 |
%
零标志 最小字段宽度(如果实际宽度大,就正常输出) 精度(小数点后有几位) 转换说明符
比如printf(“%7s%13s”,”tht”,”nb”);输出为“ tht nb”
tht前有4个空格,nb前有11个空格
标识符
字符 | 说明 |
---|---|
- | 结果左对齐,右边填空格;默认右对齐,左边填空格 |
+ | 输出符号(正好或负号) |
space | 输出值为正时加上空格,为负时加上负号 |
# | type是0,x,X时,增加前缀0,0x,0X |
0 | 在输出前补上零,直到占满指定列宽为止 |
小数的输出 %e的用法
C语言中小数的指数形式为:aEn 或 aen
a 为尾数部分,是一个十进制数;n 为指数部分,是一个十进制整数;E或e是固定的字符,用于分割尾数部分和指数部分。整个表达式等价于 a×10n。
2.1E5 = 2.1×10^5,其中 2.1 是尾数,5 是指数。
3.7E-2 = 3.7×10^-2,其中 3.7 是尾数,-2 是指数。
switch语句
switch语句中的 expression 是一个常量表达式,必须是一个整型或枚举类型。
在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。
当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。
一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。
1 |
|
赋值语句作判断条件
它并不是以是否赋值成功作为true和false的判断机制,而是看赋值的值是多少,如果为0自动就作为false了
判断句优先级低于运算
循环
for循环
for(x=999;x>=1;x-=2)printf(“%d\n”,x);
//最后输出1,for循环先判断-2后是否满足,再进入循环
do while循环
do{
if(x%2==0)
printf(“%d\n”,x);
x+=2;
}while(x<100);//注意这里的“;”
//最后是98
1 |
|
随机数
在#include<stdlib.h>
中
rand()
能产生伪随机数
srand(time(NULL));
//初始化随机过程
需要搭配#inlcude<time.h>
数组
a[3][4]
0,0 | 0,1 | 0,2 | 0,3 |
---|---|---|---|
1,0 | 1,1 | 1,2 | 1,3 |
2,0 | 2,1 | 2,2 | 2,3 |
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)a[i][j]
最终是一行一行扫下来
int matrix[4][3] = {[0][0]=1,[1][1]=5, [2][2]=9};
期末考复习
输入输出
1 |
|
下半学期
1 |
|