目录
main函数
printf函数
占位符
限定
宽度
小数位数
数据类型
变量
创建
初始化
常量
字面常量
const修饰的常变量(定义常量)
#define预处理器(定义常量)
字符常量
枚举(enum)
枚举变量
scanf函数
基本用法
占位符
赋值忽略符
多种main函数写法
//常见
int main()
{
return 0;
}
//表示main函数不接受任何参数
int main(void)
{
return 0;
}
f代表format(格式化),表⽰可以定制输出⽂本的格式。
默认情况下,打印正数不显示+号,只对负数显示-号。若想正数也输出+号,可以在%后面加一个+号
printf是一个库函数,库函数的使⽤,需要包含对应的头⽂件,⽐如printf函数的使⽤,需要包含
#include
#include
int main()
{
printf("There are %d apples\n", 3);
return 0;
}
结果-----> There are 3 apples
printf()允许限定占位符的最小宽度
输出默认右对齐,左对齐可以在占位符%后面加-号或者在输出内容后面添加空格
浮点数默认显示小数点后6位
%s用来输出字符串,默认全部输出。若只输出部分可以用%.[m]s指定输出的⻓度,其中[m]代表数字,表示所要输出的长度
#include
int main()
{
printf("%5d",123);
printf("%-5d\n", 123);
printf("%12f\n", 123.45);
printf("%.5s","hello word");
return 0;
}
结果
-------->" 123"
-------->"123 "
-------->" 123.450000"
-------->"hello"
#include
int main()
{
printf("%6.2f\n", 0.5); /*表示输出最⼩宽度为6,⼩数位数为2*/
return 0;
}
结果-------->" 0.50"
//也可以用*号来代替
#include
int main()
{
printf("%*.*f\n",6,2,0.5); /*表示输出最⼩宽度为6,⼩数位数为2*/
return 0;
}
字符 | char | |
[signed] char | ||
unsigned char | ||
短整形 | short [int] |
|
[signed] short [int]
|
||
unsigned short [int]
|
||
整形 |
int
|
|
[signed] int
|
||
unsigned int
|
||
长整形 |
long [int]
|
|
[signed] long [int]
|
||
unsigned long [int]
|
||
更⻓的整型
|
long long [int]
|
|
[signed] long long [int]
|
||
unsigned long long [int]
|
||
浮点型 | float | |
double | ||
long double |
布尔类型
专门表示真假的
取值为:true或false
1._Bool
#define bool _Bool
#define false 0
#define true 1
命名规则
创建基础语法
类型 变量名;---------> int a;
创建变量的同时赋予一个值,这叫变量的初始化。例:int a = 20;
常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量
包含整数常量和浮点常量(例如:1000、3.14)
用const修饰变量并赋值,使其变量拥有常量的特性,但本质上是变量
const修饰时要在一个语句完成
//使用形式
const 数据类型 变量名 = 常量值;
int main()
{
const int a = 100;
a = 200;
printf("%d",a)
return 0;
}
erro:运行错误的原因是变量a被const修饰被赋予了常量的特性不可被修改
#define 可以在程序中定义一个常量,他在编译时会被替换为其对应的值,相当于全局常量
//使用形式
#define 常量名 常量值
//用于VS运行scanf()函数是提示scanf函数不安全(需要放第一行)
#define _CRT_SECURE_NO_WARNINGS
//定义一个名为A、B的常量
#define A 3.14
#define B 2.33
int main()
{
int a;
a = A + B;
printf("%d\n",a);
return 0;
}
结果--------->"5.47"
有一些特定的字符,当它们前面有反斜杠时,它们就具有特殊的含义。
在字符串中有个隐含的字符常量\0,在计算字符串长度的时候\0是结束标志,不算字符串内容
\\ | \字符 |
\' | '字符 |
\" | "字符 |
\? | ?字符 |
\a | 警报铃声(蜂鸣) |
\b | 退格 |
\f | 换页 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | 1-3位的八进制数 |
\xdd | 1-n位的十六进制数 |
注:d为整数
enum用于定义一组具有离散值的常量,可以让数据更简洁,易读
每个枚举常量可以用一个标识符来表示,也可以为它们指定一个整数值,如果没有指定,那么默认从0开始递增
//语法定义格式
enum 枚举名{枚举元素1,枚举元素2,......};
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN /*枚举常量*/
};
int main()
{
enum DAY day; /*枚举变量*/
day = WED;
printf("%d",day);
return 0;
}
结果-------->"3"
也可使其不连续
enum A
{
enum1,enum2=3,enum3,enum4
};
/*没有指定值的元素,其值为前一元素+1。enum1的值为0,enum2的值为3,enum3的值为4,enum4的值为5*/
//先定义枚举类型,再定义枚举变量
enum A
{
enum1,enum2,enum3,enum4
};
enum A a;
//定义枚举类型的同时定义枚举变量
enum A
{
enum1,enum2,enum3,enum4
} a;
//省略枚举名称,直接定义枚举变量
enum
{
enum1,enum2,enum3,enum4
} A;
变量输入值可以使用scanf函数
用于读取键盘输入
头文件为stdio.h
//语法
//变量前必须加上&运算符(指针除外)
//如果是指针变量(比如字符串变量),那就不用加&运算符
scanf("%d",&i); /*输入一个整数,并将整数存入变量i中。*/
//⼀次将键盘输⼊读⼊多个变量的例子
scanf("%d%d%f%f", &i, &j, &x, &y);
#include
int main()
{
int x;
float y;
scanf("%d%f\n,&x,&y");
printf("%d %e\n",x,y);
return 0;
}
输入"-11.123e11#12" /*%d获取-11后,遇到.停止读取,第二次调用%f从.开始读取获取.123e11,遇到#停止(.123e11为科学计数法的浮点数格式)*/
结果-------->-11 1.230000e+10
scanf()与printf()的占位符基本一致
除了%c以外,其他占位符都会自动忽略起首的空白字符。%c不忽略,总是返回第一个字符无论该字符是否为空白。如果要强制跳过字符前的空白字符,可以写成scanf(" %c",%a),即在%前加个空格,表示跳过零个或多个空白字符。
%s从当前第一个非空白字符开始读起,直到遇到空白字符(即空格、\n、制表符等)为止。【scanf()和printf()遇到%s占位符,会在字符串变量末尾存储一个空字符\0】
为了避免某些情况下scanf()解析数据失败,所提供的一个赋值忽略符*(只要把*加在任何百分号后面,该占位符就不会返回值,解析后被丢弃)