C语言学习笔记(自用)1.2章
第一章 程序设计和C语言
main————主函数
int—————整型
return 0;——main函数执行结束前将整数0作为函数值,返回到调用函数处
\n—————换行符
.h—————头文件
//————— 注释(单行注释)
/…/———— 注释(多行注释)
C语言程序的结构
1.预处理指令:如#include<stdio.h>
2.全局声明:int a,b,sum;放在main外称为全局声明,a,b,sum称为全局变量;放在main内称为局部声明,a,b,sum称为局部变量。
3.函数定义:如max函数
4.程序总是从main函数开始执行的
5.程序中要求计算机完成的操作是由函数中的C语句完成的:如赋值,输入输出数据的操作
6.在每个数据声明和语句的最后都必须有一个分号
7.C语言本身不提供输入输出语句:输入输出由scanf和printf等函数完成的
8.程序应包含注释
第二章 算法——程序的灵魂
算法的特性
1.有穷性:一个算法应包含有限的操作步骤,而不是无限的。
2.确定性:每一个步骤都应当是确定的,而不是含糊的。
3.有零个或多个输入
4.有一个或多个输出
5.有效性
三种基本结构
1.顺序结构
2.选择结构
3.循环结构:while型循环结构 until型循环结构
第三章 最简单的C语言程序设计
1.常量和变量
变量必须先定义后使用
常变量:C99允许使用常变量,前面加一个关键字const
转义字符 | 字符值 | 输出结果 |
---|---|---|
\ \backslash \’ | 一个单撇号(’) | 输出单撇号字符’ |
\ \backslash \" | 一个双撇号(") | 输出双撇号字符 |
\ \backslash \? | 一个问号(?) | 输出问号字符? |
\ \backslash \ \ \backslash \ | 一个反斜线( \ \backslash \) | 输出反斜线字符 \ \backslash \ |
\ \backslash \a | 警告(alert) | 产生声音或视觉信号 |
\ \backslash \b | 退格(backspace) | 将光标当前位置后退一个字符 |
\ \backslash \f | 换页(form feed) | 将光标当前位置移到下一页的开头 |
\ \backslash \n | 换行 | 将光标当前位置移到下一行的开头 |
\ \backslash \r | 回车(carriage return) | 将光标当前位置移到本行的开头 |
\ \backslash \t | 水平制表符(tab) | 将光标当前位置移到下一个tab位置 |
\ \backslash \v | 垂直制表符 | 将光标当前位置移到下一个垂直制表对齐点 |
\ \backslash \o、 \ \backslash \oo或 \ \backslash \ooo其中o代表一个八进制数字 | 与该八进制码对应的ASCII字符 | 与该八进制码对应的字符 |
\ \backslash \xh[h…]其中h代表一个十六进制数字 | 与该十六进制码对应的ASCII字符 | 与该十六进制码对应的字符 |
2.数据类型
3.整型数据 字符型数据 浮点型数据
类型 | 字节数 | 取值范围 |
---|---|---|
int(基本整型) | 4 | -2 147 483 648(-2^31)~2 147 483 647(2^31-1) |
unsigned int(无符号基本整型) | 4 | 0~4 294 967 295(2^32-1) |
short(短整型) | 2 | -32 768(-2^15)~32 767(2^15-1) |
unsigned short(无符号短整型) | 2 | 0~65 535(2^16-1) |
long(长整型) | 4 | -2 147 483 648(-2^31)~2 147 483 647(2^31-1) |
unsigned long(无符号长整型) | 4 | 0~4 294 967 295(2^32-1) |
long long(双长型) | 8 | -9 223 372 036 854 775 808(-2^63)~9 223 372 036 854 775 807(2^63-1) |
unsigned long long(无符号双长整型) | 8 | 0~18 446 744 073 709 551 615(2^64-1) |
signed char(有符号字符型) | 1 | -128(-2^7)~1 27(2^7-1) |
unsigned char(无符号字符型) | 1 | 0~255(2^8-1) |
类型 | 字节数 | 有效数字 | 数值范围 |
---|---|---|---|
float | 4 | 6 | 0以及1.2×10^(-38)~3 .4×10^(38) |
double | 8 | 15 | 0以及2.3×10^(-308)~1 .7×10^(308) |
long double | 8 | 15 | 0以及2.3×10^(-308)~1 .7×10^(308) |
long double | 16 | 19 | 0以及3.4×10^(-4932)~1 .1×10^(4932) |
4.C运算符
1.算术运算符(+,-,*,/,%,++ ,–)
2.关系运算符(>,<,==,>=,<=,!=)
3.逻辑运算符(!,&&,||)
4.位运算符(<<,>>,~,|,&)
5.赋值运算符(=及其扩展赋值运算符)
6.条件运算符(?,:)
7.逗号运算符(,)
8.指针运算符(*和&)
9.求字节数运算符(sizeof)
10.强制类型转换运算符((类型))
11.成员运算符(,->)
12.下标运算符([])
13.其他(如函数调用运算符())
5.C语句的作用和分类
1控制语句
1.if()…else…(条件语句)
2.for()… (循环语句)
3.while()… (循环语句)
4.do…while() (循环语句)
5.continue (结束本次循环语句)
6.break (终止执行switch或循环语句)
7.switch (多分支选择语句)
8.return (从函数返回语句)
9.goto (转向语句,在结构化程序中基本不用goto语句)
上面九种语句表示形式中的()表示括号中是一个“判别条件”,“…”表示内嵌的语句
2函数调用语句
如printf(“this is a C statement.”)
3表达式语句
如:
a=3;
4空语句
;
5.复合语句
可以用{}把一些语句和声明括起来成为复合语句,例如:
{
float pi=3.14159,r=2.5,area; \\定义变量
area=pi*r*r;
printf("area=%f",area);
}
ps:复合语句中最后一个语句末尾的分号不能忽略不写。
6.数据的输入输出
用scanf函数输入数据,用printf输出数据
用printf函数输出数据
格式:printf(格式控制,输出表列)
格式字符
1.d格式符,用来输出一个有符号的十进制整数。
printf("%5d\n%5d\n",12,-345)\\%5d是指定的域宽,指定数据站5列
输出结果为12(12前面有3个空格)
-345(-345前面有1个空格)
2.c格式符,用来输出一个字符
char ch='a';
printf("%5c",ch);
运行时输出 a(a前面有四个空格)
一个整数,如果范围在0~127范围中,也可以用%c使之按字符形式输出,在输出前,系统会将该整数作为ASCII码转换成相应的字符,如:
short a=121;
printf("%c",a);
输出字符y
如果整数比较大,则把他的最后一个字节的信息以字符形式输出,如:
int a=377;
printf("%c",a)
输出字符y
用%c格式输出时,只考虑一个字节01111001即十进制的121,是’y’的ASCII编码。
0 0 0 0 0 0 0 1| 0 1 1 1 1 0 0 1
3.s格式符,用来输出一个字符串。如:
printf("%s","CHINA")
输出CHINA
4.f格式符,用来输出实数(包括单精度、双精度、长双精度),以小数形式输出,有几种用法:
①基本型,用%f。
不指定输出数据的长度,由系统根据数据的实际情况决定数据所占的列数。系统处理的方法一般是:实数中的整数部分全部输出,小数部分输出6位。如:
#include<stdio.h>
int main()
{
double a=1.0;
printf("%f\n",a/3);
return 0;
}
运行结果:0.333333
虽然a是双精度型,a/3也是双精度型,但用%f格式声明只能输出6位小数
②指定数据宽度和小数位数
printf("%20.15f\n",a/3);
输出结果:0.333333333333333(0前有3个空格)(20位数字,17位有效数字)
③输出的数据向左对齐,用%-m.nf
在m,n的前面加一个负号,其作用与%m.nf形式作用基本相同,但当数据长度不超过m时,数据向左靠,右端补空格。如:
printf("%-25.215f,%25.15f\n",a,a);
运行结果:3333.333333333333500
3333.333333333333500
5.e格式符,以指数形式输出实数
printf("%e",123.456);
输出如下:1.234560e+002
6.其他格式符
①i格式符。作用与d格式符相同,按十进制整型数据的实际长度输出
②o格式符。以八进制整数形式输出。
③x格式符。以十六进制数形式输出整数
④u格式符。用来输出无符号型数据,以十进制整数形式输出。
⑤g格式符。用来输出浮点数
scanf中的格式字符与其相同
字符输入输出函数
1.putchar
putchar(c)
#include<stdio.h>
int main()
{
char a='B',b='O',c='Y';//定义三个字符变量并初始化
putchar(a); //向显示器输入字符B
putchar(b); //向显示器输入字符O
putchar(c); //向显示器输入字符Y
putchar('\n'); //向显示器输出一个换行符
return 0;
}
运行结果:BOY
也可以输入其ASCII编码
#include<stdio.h>
int main()
{
int a=66,b=79,c=89;
putchar(a);
putchar(b);
putchar(c);
putchar('\n');
return 0;
}
输出结果:BOY
2.getchar
getchar()
#include<stdio.h>
int main()
{
char a,b,c;//定义字符变量a,b,c
a=getchar();//从键盘输入一个字符,送给字符变量a
b=getchar();//从键盘输入一个字符,送给字符变量b
c=getchar();//从键盘输入一个字符,送给字符变量c
putchar(a);//将变量a的值输出
putchar(b);//将变量b的值输出
putchar(c);//将变量c的值输出
putchar('\n');//换行
return 0;
}
运行结果:BOY
BOY
也可以
#include<stdio.h>
int main()
{
putchar(getchar());//将接收到的字符输出
putchar(getchar());//将接收到的字符输出
putchar(getchar());//将接收到的字符输出
putchar('\n');//换行
return 0;
}