《c语言 教程 总结.docx》由会员分享,可在线阅读,更多相关《c语言 教程 总结.docx(18页珍藏版)》请在三一办公上搜索。
1、我们所用的c语言的编译环境是Dev-cpp.,程序要先编译,后运行。一、c语言的程序结构。例1:在屏幕上输出”hello,world”#include#include int main。( printf(hello,worldn);/*以上是输出hello,world语句*/ system(pause”);return 0;程序解释:(1)#include#include (这是c程序要包含的 库),两行是预编译处理命令,因为程序体用到了 c编译系统提供的 printf函数和system函数,这两个函数分别包含在stdio.h和stdlib.h 中,所以在程序开始,我们要将这这两个头文件(.h
2、)包含进来。Stdio是standard input&output (标准输入输出)的简写。如果要用c+的cin和cout,需要包含的库是#includeusing namespace std;(2)int main()一个C源程序必须包含一个并且只能包含一个main(主)函数,程序的 执行以开始,以开始。(3)printf(hello,worldn);输出函数printf,n是换行(4)/*以上是输出hello,world语句*/,/*。*/ c语言中的注释,提高程序的可读性。(5)system(pause”);暂停输出屏幕,看清屏幕上的输出。(6)return 0;返回整型的数0;二、常量
3、与变量1. 常量:在程序运行过程中,其值不能被改变的量称为常量。2:变量:在程序运行过程中,其值可以改变的量。(1)数据类型不同数据类型的变量能表示的范围不同。整型:int (表示整数)浮点型:float (表示实数)double (表示实数),但是比float可以表示的范围更大。(2)变量命名规则变量名定义规则:变量名只能由字母、数字和下划 线三种字符组成,且第一个字符必须为字母或下划线。大小写敏感。变量名通常用小写。变量名不能与“关键词”同名.(3) 变量定义格式格式:数据类型名称变量名例如定义一个名称为a的整型变量写法为:int a;定义多个同类型变量,可以将其写为int a,b,c;也
4、可以分开定义:int a; int b; int c;(4) 为变量赋初值1. 定义时赋初值int a,b,c=3;2. 先定义后赋值float a,b,c;a=1 ; b=2; c=3;三、赋值语句=赋值符号:计算右边的结果,将其赋给左边的变量.求执行完下面的语句后,变量a与变量b值为多少?a=5; a=a+3; b=a+6;执行完后 a=8,b=14+加法运算符如3+5减法运算符或负值运算符如 5-2,-3*乘法运算符如3*5/除法运算符如5/3, 5.0/3模运算符或求余运算符%要求两侧均为整型数据。如7%4的值为3注意:除号/两侧若都为整型,贝相当于整除。例1:输入圆的半径,求出该圆的
5、周长和面积并输出。#includeusing namespace std;int main()float area,circle,r;coutr;area=3.14*r*r;circle=2*3.14*r;coutendlarea=areaendl;coutcircle=circleendl;system(pause);return 0;例2:有三个小朋友甲乙丙。甲有50粒糖果,乙有43粒糖果,丙有13粒糖果。现在他们做一个游戏。从甲开始,将自己的糖分三份,自己留一份,其余两份分别给乙与丙,多余的糖果自己吃掉,然后 乙与丙也依次这样做。问最后甲、乙、丙三人各有多少粒糖果?#include us
6、ing namespace std;int main()int a=50,b=43,c=13;a=a/3; b=b+a;c=c+a;b=b/3; a=a+b;c=c+b;c=c/3; a=a+c;b=b+c;coutaendl;coutbendl;coutcendl;system(PAUSE);return 0;练习:输入一个三位数,求出它的逆序数并输出。#includeusing namespace std;int main()int a,ge,shi,bai,b; cina;ge=a%10;shi=(a%100)/10;bai=a/100;b=ge*100+shi*10+bai;coute
7、ndlb; system(pause); return 0;是指解决一个具体问题的意义明确的步骤的集合。四.算法:对于同一个问题可以有不同的解题方法和步骤,也就是有不同 的算法。算法有优劣,一般而言,应当选择简单的、运算步骤少的, 既运算快、内存开销小的算法(算法的时空效率)。例如分糖果代码:(1)一种算法可以是:a=a/3; b=b+a;c=c+a;b=b/3; a=a+b;c=c+b;c=c/3; a=a+c;b=b+c;(2)一种算法可以是:a甲,b乙,cWd=a/3+(b+a/3)/3+(c+a/3+(b+a/3)/3)/3;e=(a/3+b)/3+(c+a/3+(b+a/3)/3)/
8、3;f=(c+a/3+(b+a/3)/3)/3;显然第一种算法在清晰程度和可扩展程度上优于第二种算法。例1:今有物不知其数,三三数之余二,五五数之余三,七七数之余二, 问物几何?计算一下该物最少有多少个?然后求出1到1000符合条 件的所有数?#include using namespace std;int main() int n;for(n=1;n1000;n=n+1)if(n%3=2&n%5=3&n%7=2)coutnendl;system(PAUSE);return 0;练习一:水仙花”数问题:水仙花数是指一个三位数,它的各位数的立方和等于该数本身。如:153=1八3+5入3+3入3,
9、请设计算法求出所有的水仙花数。#include using namespace std;int main。int n,ge,shi,bai;for(n=100;n1000;n+)ge=n%10; /个位shi=(n/10)%10;/十位bai=n/100;/百 位if(n=ge*ge*ge+shi*shi*shi+bai*bai*bai) coutnabc;if(a=b)max=a;if(b=a)max=b;以上为取a,b中较大的值存入max变量if(cmax)max=c;coutmax=小于小于等于=等于=不等于!=注意:在C语言中,“等于”关系运算符是双等号“=”,而不是单等号“=”(赋值
10、运算符)。结论:对于条件表达式,如果表达式成立,则值为1。如果表达式不成立, 则值为0。说明:C语言中没有连写的不等式abc应该写成:ab&bc逻辑运算符:并且&连接的两个表达式都成立时,结果才为1,否则都为0或者|连接的表达式只要有一个成立,结果就为1非!! 1为0! 0为12。选择语句写法单分支语句if(条件)语句A双分支语句if(条件)语句Aelse语句B多分支语句if(条件1)语句1;else if(条件 2)语句2;else if(条件 3)语句3;else语句n;多分支语句的流程图:注意:(1) if(条件)后没有分号,满足条件要做的语句有分号if(xy) x=x+1y=y+i练习
11、1:输入考试成绩score,根据成绩,输出成绩等级。90100优秀 8090良好7080中等6070及格60以下不及格int score;cinscore;if(score=90)cout优秀=80&score90)cout 良好”=70&score80)cout 中等=60&score70)cout ”及格”endl;elsecout不及格endl;Switch开关语句switch(score/10)case 10:case 9:cout优秀”endl; break;case 8:cout良好endl; break;case 7:cout中等endl; break;default:cout“
12、不及格”endl; break;六、循环结构1. fo语句for 表达式1表达式2表达式3)(循环体语句;表达式一:为循环变量赋初值表达式二:循环条件表达式三:循环变量增值。若每次增加1,可以写为i+,也可以写成i=i+1程序的执行过程:(1)先求解表达式1(2)求解表达式2,若其值为真,则执行循环体,若为假转到(5)。(3) 求解表达式3 (即循环变量增加相应的增量值)(4) 转回第(2)步继续执行。(5) 循环结束,执行for语句下面的一个语句。例题:利用for循环计算:1+2+3+ 100=?用sum表示和,初始值为0。第1 次:sum+1 sum第2次:sum+2 sum 第100次:
13、sum+100 sum总结规律:i从1到100,每次递增1sum=sum+i程序:#include using namespace std; int main。 int sum, i;sum=0;for(i=1;i=100;i+) sum=sum+i;coutsum;练习:求Fibonacci数列:1, 1, 2, 3, 5, 8,前40个数并输出int i,f1,f2,f3;f1=1;f2=1;coutf1f2endl;for(i=3;i=40;i+)( f3=f1+f2;f1=f2;f2=f3;coutf3endl;2、while循环语句(当型循环结构)while (表达式)语句;执行过程
14、:当条件为真时反复执行A; 一旦条件为假,跳出循环,执行循环后的语句。例题:利用while循环计算:1+2+3+ 100=?int i, sum=0;i=l;while (i=100)sum=sum+i;i+;coutsumendl;3、嵌套循环例1输出图形:*士 士 士 士 士*问题分析:假设有i行j歹U,对于每一行来说,都需要连续画j个*,用一重循环已经无法 满足题目要求,需要在循环里面再嵌套一层循环,即嵌套循环。重复i遍做以下的事情重复j遍做以下的事情打印一个*号换到下一行;int ij;for (i=1;i=4;i+)夕卜循环,打印4行for (j=1j=2*i-1j+) 内循环,打印
15、 2i-1 个* cout*;coutendl;例2输出图形:*士 士 士 士 士*第1行:3个空格,1个*号第2行:2个空格,3个*号第4行:0个空格,7个*号规律:第i行,4-i个空格,2*i-1个*号;i从1到4int ij,k;for (i=1;i=4;i+)夕卜循环,打印4行for (j=1j=4-ij+)cout ” ;输出4-i个空格for (k=1;k=2*i-1;k+)cout *” ;/输出 2i-1 个*cout=1;i-) 夕卜循环,打印4行for (j=1;j=4-i;j+)cout ” ;/输出4-i个空格for (k=1;k=2*i-1;k+)cout *” ;/
16、输出 2i-1 个*coutendl;练习2:百钱百鸡问题:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡, 问翁母雏各几何?设鸡翁、鸡母、鸡雏的个数分别为x,y,z,共100钱要买百鸡,若全买公鸡最多买20只,显然x的值在020之间;同理,y的取值范围在033之间,可得到下面的不定方程:5x+3y+z/3=100x+y+z=100int x,y,z;for(x = 0; x= 20; x+)for(y= 0;y = 33; y+)z= 100-x-y;if(z%3=0&5*x+3*y+z/3=100)coutx只,y只,z 只,endl;上机练习题:(1)一个月有多少天?(要求输入月份,程序能够输出该月相应的天数)说明:只考虑平年。(2)求具有abcd=(ab+cd)A2性质的四位数。(循环结构)(例如:2025=(20+25)A2)其中八2表示平方。(3)输入一个自然数,求这个自然数的所有约数之和。如20的约数为:1,20,2,10,4,5,则和为 42。(4)求输入的一个整数的各位数字之和。 提示:一个数除以10的余数得到个位数字,然后用整除的方法缩小10倍赋给它自己,继续 求出它的个位数字,当它变为0的时候就求出了它的各位数字。