C语言笔记

目录

main函数

printf函数

占位符

限定

宽度

小数位数

数据类型

变量 

创建

初始化

常量

字面常量

const修饰的常变量(定义常量)

#define预处理器(定义常量)

字符常量

枚举(enum)

枚举变量

scanf函数

基本用法

占位符

赋值忽略符


main函数

main函数是程序的⼊⼝,也被叫做:主函数。main 前⾯的 int 表⽰ main 函数执⾏结束的时候返回⼀个整型类型的值。所以在main 函数的最后写 return 0; 正好前后呼应。
  1. main函数是程序的⼊⼝
  2. main函数有且仅有⼀个
  3. ​​​​​即使⼀个⼯程中有多个.c⽂件,但是只能有⼀个main函数(因为程序的⼊⼝只能有⼀个)
多种main函数写法
//常见
int main()
{

    return 0;
}


//表示main函数不接受任何参数
int main(void)
{

    return 0;
}

printf函数

f代表format(格式化),表⽰可以定制输出⽂本的格式。

默认情况下,打印正数不显示+号,只对负数显示-号。若想正数也输出+号,可以在%后面加一个+号

printf是一个库函数,库函数的使⽤,需要包含对应的头⽂件,⽐如printf函数的使⽤,需要包含#include 是预处理指令,<> 中是头⽂件的名字。注意:库函数的使⽤⼀定要包含对应的头⽂件,否则可能出现错误。

#include 
printf就是⼀个C语⾔编译器提供的⼀个打印信息的函数,我们可以使⽤函数打印我们各种类型的
数据(例:printf("%d\n",a))  【\n为换行符】

占位符

 “占位符”的位置可以⽤其他值代⼊。
占位符的第⼀个字符⼀律为%,第⼆个字符表⽰占位符的类型
#include 
int main()
{
    printf("There are %d apples\n", 3);
    return 0;
}

结果-----> There are 3 apples
  1. %d、%hd、%ld        以十进制、有符号的形式输出int、short、long类型的整数
  2. %u、%hu、%lu        以十进制、无符号的形式输出int、short、long类型的整数
  3. %c       输出字符
  4. %s       输出字符串
  5. %f、%Lf       以十进制的形式输出float和double、long double类型的小数
  6. %a       ⼗六进制浮点数,字⺟输出为⼩写
  7. %A       ⼗六进制浮点数,字⺟输出为⼤写
  8. %e       使⽤科学计数法的浮点数,指数部分的为⼩写
  9. %E       使⽤科学计数法的浮点数,指数部分的E为大写
  10. %%      输出一个%

限定

宽度

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"



小数位数
输出⼩数时,只保留小数点俩位,可以写成%.2f
#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;
}

数据类型

因为数据是有正、负之分的,unsigned表⽰⽆符号的,signed表⽰有符号的。
signed修饰的变量中可以表⽰正数,也可以表⽰负数。
unsigned修饰的变量中只能表⽰正数。
字符 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

变量 

创建

命名规则

  1. 只能由字⺟(包括⼤写和⼩写)、数字和下划线(`_`)组成
  2. 不能以数字开头
  3. ⻓度不能超过63个字符
  4. 变量名中区分⼤⼩写的
  5. 变量名不能使⽤关键字

创建基础语法

类型 变量名;--------->   int a; 

初始化

创建变量的同时赋予一个值,这叫变量的初始化。例:int a = 20;

常量

常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量

字面常量

包含整数常量浮点常量(例如:1000、3.14)

const修饰的常变量(定义常量)

用const修饰变量并赋值,使其变量拥有常量的特性,但本质上是变量

const修饰时要在一个语句完成

//使用形式
const 数据类型 变量名 = 常量值;


int main()
{
    const int a = 100;
    a = 200;
    
    printf("%d",a)
    return 0;
}


erro:运行错误的原因是变量a被const修饰被赋予了常量的特性不可被修改

#define预处理器(定义常量)

#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)

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函数

变量输入值可以使用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()的占位符基本一致

  1. %[] :在方括号中指定一组匹配的字符(比如%[0-9]),遇到不在集合之中的字符,匹配将会停⽌
  2. %f、%lf、%Lf        输出float、double、long double类型浮点数

除了%c以外,其他占位符都会自动忽略起首的空白字符。%c不忽略,总是返回第一个字符无论该字符是否为空白。如果要强制跳过字符前的空白字符,可以写成scanf(" %c",%a),即在%前加个空格,表示跳过零个或多个空白字符

%s从当前第一个非空白字符开始读起,直到遇到空白字符(即空格、\n、制表符等)为止。【scanf()和printf()遇到%s占位符,会在字符串变量末尾存储一个空字符\0】

赋值忽略符

为了避免某些情况下scanf()解析数据失败,所提供的一个赋值忽略符*(只要把*加在任何百分号后面,该占位符就不会返回值,解析后被丢弃)

    你可能感兴趣的:(c语言,笔记,算法)