1、C+入门C/C+语言入门黄锡波 整理黄锡波寄语:C/C+永远都是老大的,开发底层的东西,嵌入式的东西都需要掌握C/C+最古老最顽强的语言,有些同学想做开发,但不想做网站Android之类的,可以努力一下C/C+,懂这个,基本就业能通行无阻哦。大家想学这个,就算是毕业后也可找我,我在1992年在银行就开始做这个了,到2002年全世界才突然转向Java的(开发安全网站)。第一课导入一、 什么是C/C+语言:C+语言是一种高级程序设计语言。C+语言是20世纪80年代初期由贝尔实验室设计的一种在C语言基础上增加了对面向对象程序设计支持的语言,它是目前应用最为广泛的编程语言。程序体验:#include
2、using namespace std;int main()printf(“hello!”);system(pause);return 0;例一:已知长方形的长、宽,求长方形的周长、面积#include using namespace std;int main() int a,b,L,S; scanf(%d%d,&a,&b); L=2*(a+b); S=a*b; printf(L=%d,S=%d,L,S); scanf(n); return 0; 二、 程序设计的要素:1、 分析题目中的已知和求解的信息,以变量的形式定义下来。(例题中已知长和宽,求周长和面积。a,b,l,s分别为长、宽、周长、
3、面积)2、 如何求解算法。三、 一个程序:头文件Int main() 变量说明部分; 执行部分;scanf(“n”); return 0;执行部分主要分为:输入、处理、输出C+程序的组成#include /标准输入输出库文件using namespace std; /使用std命名空间int main() int a,b,L,S; /定义变量 scanf(%d%d,&a,&b); /输入处理 L=2*(a+b); S=a*b; printf(L=%d,S=%d,L,S); /输出 scanf(n);/查看结果 return 0; 四、 C+程序设计的界面及主要命令五、 环境1、菜单激活菜单命令
4、F102、编辑区-书写程序的地方,写完后按Ctrl+S保存文件六、 常用操作书写程序时注意:、保持缩进、 要成对出现、除了头文件,int main() 外每句程序后面都要加;1、新建源代码。2、编译并运行 F9 3、编译Ctrl +F9 4、运行-Ctrl+ F10练习1、启动Dev C+。2、输入以上例的程序3、文件保存,编译,运行,看结果第二课简单程序的书写一、分析例题.1例二:已知正方形的边长,求正方形的周长、面积#include /标准输入输出库文件using namespace std; /使用std命名空间int main() int a,L,S; scanf(%d,&a); L=
5、4*a; S=a*a; printf(L=%d,S=%d,L,S); scanf(n); return 0; Int数据类型中的整数类型。scanf 输入语句 =赋值语句 printf 输出语句二、变量声明部分格式:类型名 变量名1,变量名2,变量名n;例如:int a; (单个变量说明) float L,S;(多个相同变量同时定义,变量名之间用逗号隔开)变量名:由字母、数字、下划线组成的。以字符或者下划线开头。区分大小写。不能与保留字同名。常见的保留字:int, float,char,string, bool,unsigned,if ,else , do ,while, char, brea
6、k (c语言中保留字、标准库函数名都只用小写字母表示)三、基本数据类型:类型说明字节取值范围signed char 字符型1-128127unsigned char 无符号字符型10255signed short短整型2-3276832767unsigned short无符号短整型2065536signed int整型4-2147483648-2147483647unsigned int无符号整型404294967295signed long长整型4-2147483648-2147483647unsigned long无符号长整型404294967295signedlong long超长整型8
7、-263263-1Float单精度浮点型4-3.410383.41038 (约6个有效数字)double 双精度浮点型8-1.7103081.710308 (约12个有效数字)表中的表示其中的内容可以省略。如signed char, 简略为char就可以。注意:不同的数据类型,存储空间大小和能合适的运算不同1、整型适用的运算操作加减乘除余数+-*/% 运算优先级:(* 等于 / 等于 % ) ( + 等于 -)体验:运算符号与数据类型 #include /标准输入输出库文件using namespace std; /使用std命名空间int main() Int a,b; a= 5/2;b=5
8、%2; printf(“%d %d”,a,b)scanf(n); return 0; 例题:已知a,b两个整数,求这两个数的和、差、乘积、商、余数分析:已知a,b, 求:S1(和) ,S2(差),S3(乘积),S4(商), y(余数)方法: s1=a+b;s2=a-b;s3=a*b;s4=a/b;s5=a%b; #include using namespace std;int main() int a,b,s1,s2,s3,s4,y; scanf(%d%d,&a,&b); s1=a+b; s2=a-b; s3=a*b; s4=a/b; y=a%b; printf(%d+%d=%dn,a,b,s
9、1); printf(%d-%d=%dn,a,b,s2); printf(%d*%d=%dn,a,b,s3); printf(%d/%d=%d.%dn,a,b,s4,y); system(pause); return 0; 说明:书写程序时,不一定要严格一行一个语句,可以一行多个语句。变量名的命名与实际存储内容相关联。便于自己编程中不会混淆变量。例题:2、整型变量常用的函数函数名功能函数的定义举例Abs求绝对值abs(任意的数值类型)abs(-2) 结果为2,abs(2)结果为2Sqrt求平方根sqrt(任意的数值类型)sqrt(4),结果为2;sqrt(1.5) 结果为1.224745Int
10、强制类型转换整型 (int) 变量名或者表达式 一般用来把实数转换为整数(Int) 2.5; 结果为2 3、实型合适的运算符号与函数加减乘除+-*/Int a=5/2; /结果为a=2Char ch=101; /int a=ch/3; 结果为a=33;float a=5/2; /结果为a=2.000; 精度丢失在计算5/2时发生了。除数与被除数至少需要一个为实型,除运算才能实数除。float a=5.0/2; float a=5/2.0; / 结果为a=2.5float a=5.0/2.0; 试一试强制类型转换(float) 变量 ,(int)变量#include using namespac
11、e std;int main() int a,b; float c; a =(int)7.6; b=5; c = a/b; printf(%0.2f,c); /结果为c=1.00 c =(float)a/b; printf(%0.2f,c); /结果为c=1.40 c =(float)(a/b);printf(%0.2f,c); /结果为 c=1.00 system(pause); return 0; 实数的常用函数 #include 函数名功能实例ceil向上舍入 double ceil(double x)Ceil(5.4) 结果为 5floor向下舍入 double floor(doubl
12、e x)Floor(5.6) 结果为6Fabs求浮点数的绝对值 double fabs(double x)Fabs(-5.4) 结果为5.4Fmod求x/y的余数Double fmod(double x,double y)Fmod(2,5.0)结果为2注意不可以为fmod(2,5)pow指定数的指定次幂double pow(double x,double y)Pow(5,3.0) 结果为125练习:已知圆的半径,求圆的面积和周长常量:定义:在程序执行过程中始终保持不变的数据量。#define PI 3.1415926 (注意c+语言中区分大小写) /实数常量#define N 100 /整数常
13、量#define Name “hello” /字符串常量#define ch A /字符常量数据存储:已知半径r,数据类型实型,求周长l,面积s。算法:l=2*PI*r s=PI*r*r;#include #define PI 3.1415926using namespace std;int main() float r,l,s; r=5; l=2*PI*r; s=PI*r*r; printf(l=%0.2f,s=%0.2f,l,s); system(pause); return 0; 4、字符类型,实际存储的是0.255的整数定义:char ch1,ch2,ch3;赋值: ch1=97; 相
14、当于ch1=a;ch2=A; 相当于ch2=65; ch3=0; 相当于ch3=48;输入:scanf(%c%c,&ch1,&ch2);输入ab scanf(%c %c,&ch1,&ch2);输入a b输出:printf(“%c,%c,%c”,ch1,ch2,ch3); 输出a,A,0 Printf(“%5c”,ch1); 定义场宽为5。练习:1、输入字母序号,输出相应的大小写字母。输入1 ,输出A,a 输入26,输出 Z,z2、输入一个小写字母,将其转换为大写字母 3、输入字母,输出其在字母表中的序号。三、输出语句:printf函数语句格式: printf(“格式控制字符串”,地址列表)格式
15、控制字符串:用于指定输出格式,由格式字符串和非格式字符串构成。格式字符串:以%开头,后面有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。非格式字符串:原样输出。地址列表:各个输出项。要求格式字符串和各输出项在数量和类型上应该是一一对应的。/不同的类型控制:#include using namespace std;int main() int a=65,b=97; printf(*n); /原样输出,后换行 printf(%d %dn,a,b); / 65 97 %d-十进制 printf(%d,%dn,a,b); / 65,97 printf(%o,%on,a,b); / %o-
16、八进制 printf(%x,%xn,a,b); / %x-十六进制 printf(%c,%cn,a,b); / A,a %c-字符格式 system(pause); return 0; 类型格式符号意 义d十进制带符号整数(整数不输出符号)O以八进制带符号整数(不输出前缀O)X以十六进制带符号整数(不输出前缀Ox)u以十进制无符号整数f以小数形式输出单、双精度实数e以指数形式输出单、双精度实数c输出单个字符s输出字符串“格式控制字符串” : % 输出宽度.精度 d/体验宽度和精度的控制#include using namespace std;int main() int a=123; floa
17、t b=123.456; printf(-分割线-n); /原样输出,后换行 printf(a=%d,%5dn,a,a); printf(b=%f,%10.5f,%0.1fn,b,b,b); system(pause); return 0; 三、输入语句:scanf函数(格式输入函数)语句格式: scanf(“格式控制字符串”,地址列表)#include using namespace std;int main() int a1,b1,a2,b2; scanf(%d%d,&a1,&b1); printf(a1=%d,b1=%dn,a1,b1); scanf(%d,%d,&a2,&b2);pri
18、ntf(a2=%d,b2=%dn,a2,b2); system(pause);注意:整数与实数一般用空格或回车来区分不同变量的数据。如何输入格式中有,输入数据一定要有,否则数据出错。 return 0; 从键盘上输入:1 2 从键盘上读入:1 3,4 2 3,输出:a1=1,b1=2 4 a2=3,b2=4 输出:a1=1,b1=2 a2=3,b2=4scanf中常见的错误:错误正确scanf(“%d”,a);scanf(“%d”,&a);没有&scanf(“%5.2f”,b);scanf(“%f”,&b);不能有精度控制/体验输入不同类型的数据 #include using namespac
19、e std;int main() int a,b; float c,d; char ch1,ch2; scanf(%d%d,&a,&b); scanf(%f%f,&c,&d); scanf(n%c%c,&ch1,&ch2); printf(a=%d,b=%dn,a,b); printf(c=%0.2f,d=%0.2fn,c,d); printf(ch1=%c,ch2=%cn,ch1,ch2); system(pause); return 0; 输入数据:1 2 输出: a=1,b=2 3.4 5.6 c=3.40,d=5.60 ab ch1=a,ch2=b四、赋值语句 语句格式:变量=表达式1
20、、 相同类型的赋值Int a,b,c;a=1; b=2; c=3 ; a=b+c; 可以写成 a=(b=2)+(c=3); a=1;b=1; c=1; 可以写成 a=b=c=1; float x,y;x=1.1; y=x; 2、 不同类型的赋值右边的表达式的值赋值给左边的变量时,如果两边的类型不一致时,自动进行类型转换,将右边的类型转换成左边的类型。实型赋值给整型,舍去小数部分。整数赋值给实型,数值不变。字符型赋值给整型,其Asc码的值放入整型的低八位,高八位赋值为0.整型赋值给字符型,只把低八位赋值给字符型。3、复合赋值表达式双目运算符的使用+= , -=,*=,/=,%=,=, &=, =
21、, |=复合赋值表达式:变量+双目运算符+表达式 等价于 变量=变量+运算符+表达式a+=5 等价于 a=a+5x*=y+7 等价于 x=x*(y+7)r%=p 等价于 r=r%p复合赋值表达式能提高编译的效率并产生质量较高的目标代码。例:输入a,b的值,将其值交换后,输出int main() int a,b,t; scanf(%d%d,&a,&b); t=a;a=b;b=t; printf(a=%d,b=%dn,a,b); system(pause); return 0; 说明:程序中,temp为中间暂存变量;理解程序为什么可以实现,值的交换?int main() int a,b; scan
22、f(%d%d,&a,&b); a=a+b;b=a-b;a=a-b; printf(a=%d,b=%dn,a,b); system(pause); return 0; 练习:1、输入整数X,求x的前一个整数、后一个整数;求x的绝对值 , 求x的平方。2、输入两个整数a,b;将数据交换后,输出交换数据后的a,b3、整数拆分:已知一个百位整数,编程求各个数位上的数字之和。4、已知梯形的上底、下底、高,求梯形的面积5、输入一个实数,求平方根,平方,绝对值。第三课 选择结构语句(if、switch)一、布尔类型定义:bool f1,f2;赋值:f1=true; 等价于 f1=1;f2=false;等价于
23、 f2=0;输出:printf(“%d,%d”,f1,f2); 输出为 1,0二、关系运算符作用操作符大于小于=小于等于 关系运算符 逻辑运算符常用的表达式意义10 1!=0 1=01+25结果为true或者1结果为true或者1结果为false或者0结果为false或者0a0a=0a!=0a=ba!=b变量a是否大于0变量a是否等于0变量a是否不等于0变量a 与b是否相等变量a 与b是否不相等a=0 & ac & b+ca & a+cb等价于(a+bc) & (b+ca) & (a+cb)三角形的任意两边之和大于第三边五、IF语句【作用】:根据条件来选择执行的语句。【格式】:形式1:if (
24、条件) 语句;形式2:if (条件) 语句1;else 语句2;【注意】1、 条件,是一个表达式,()不能省略。 2、注意加;的位置3、书写if语句的关键在于给出条件表达式,主要使用关系表达式或者逻辑表达式来表示某一条件。【例题】例3.1:输入不相等的两个整数a,b,输出较大的数。 分析:根据判断两个数的大小关系,给出条件表达式ab,条件成立输出a,条件不成立,输出b;程序二中引进一个新的变量max来存储最大值。#include using namespace std;int main() int a,b; cinab;if (ab) coutmax=aendl;else coutbendl;
25、 system(pause); return 0;#include using namespace std;int main() int a,b,max; cinab; if (ab) max=a; else max=b; coutmax=maxendl; system(pause); return 0; 例3.2:输入一个整数a,判断是否在开区间(0,8)内,是,输出“Yes”,否则输出“No”.分析:a是否在开区间(0,8)内,也就是0a8;如果是闭区间0,8,那就是0=a=8。表达式书写:错误写法:0a0 & a8知识点:当判断由多个条件构成时,条件之间根据逻辑运算符!,&,| 来连接。
26、#include using namespace std;int main() int a; cina; if (a0 & a8) coutYesendl; else coutNoendl; system(pause); return 0;例3.3:输入年份,判断是否为闰年。闰年的规则:年份能够被4整除,但不能被100整除,或能被400整除。#include using namespace std;int main() int year; cinyear; if (year %4=0 & year%100!=0 | year % 400 =0) cout year是闰年endl; else cout year不是闰年endl; system(pause); return 0;例3.4:输入一个整数x,判断该数的奇偶性,如果是奇数,输出“奇数”,否则输出“偶数”#include using namespace std;int
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1