C语言程序设计快速入门(共11页).doc

上传人:飞****2 文档编号:13556575 上传时间:2022-04-30 格式:DOC 页数:11 大小:53KB
返回 下载 相关 举报
C语言程序设计快速入门(共11页).doc_第1页
第1页 / 共11页
C语言程序设计快速入门(共11页).doc_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《C语言程序设计快速入门(共11页).doc》由会员分享,可在线阅读,更多相关《C语言程序设计快速入门(共11页).doc(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上第1部分 语 言 篇第1章 程序设计入门阅读资料摘录自网络以及专业书籍Main函数相关:每个 C+ 程序都包含一个或多个函数,而且必须有一个命名为 main。函数由执行函数功能的语句序列组成。操作系统通过调用 main 函数来执行程序,main 函数则执行组成自己的语句并返回一个值给操作系统。 下面是一个简单的 main 函数,它不执行任何功能,只是返回一个值: int main() return 0; 操作系统通过 main 函数返回的值来确定程序是否成功执行完毕。返回 0 值表明程序程序成功执行完毕。 main 函数在很多方面都比较特别,其中最重要的是每个 C+

2、程序必须含有 main 函数,且 main 函数是(唯一)被操作系统显式调用的函数。 定义 main 函数和定义其他函数一样。定义函数必须指定 4 个元素:返回类型、函数名、圆括号内的形参表(可能为空)和函数体。main 函数的形参个数是有限的。 本例中定义的 main 函数形参表为空。 第 7.2.6 节将介绍 main 函数中可以定义的其他形参。 main 函数的返回值必须是 int 型, 该类型表示整数。 int 类型是内置类型,即该类型是由 C+ 语言定义的。 函数体函数定义的最后部分,是以花括号开始并以花括号结束的语句块: return 0; 例中唯一的语句就是 return,该语句

3、终止函数。 注意 return 语句后面的分号。 在 C+ 中多数语句以分号作为结束标记。分号很容被忽略,而漏写分号将会导致莫名其妙的编译错误信息。 当 return 带上一个值(如 0)时,这个值就是函数的返回值。返回值类型必须和函数的返回类型相同, 或者可以转换成函数的返回类型。 对于 main 函数,返回类型必须是 int 型,0 是 int 型的。 在大多数系统中,main 函数的返回值是一个状态指示器。返回值 0 往往表示 main 函数成功执行完毕。任何其他非零的返回值都有操作系统定义的含义。通常非零返回值表明有错误出现。每一种操作系统都有自己的方式告诉用户 main 函数返回什么

4、内容。 已初始化变量和未初始化变量 在 C+ 中,初始化是一个非常重要的概念。 已初始化变量是指变量在定义时就给定一个值。 未初始化变量则未给定初始值: int val1 = 0; / initialized int val2; / uninitialized 给变量一个初始值几乎总是正确的,但不要求必须这样做。当我们确定变量在第一次使用时会赋一个新值,那就不需要创建初始值。 定义变量时,应该给变量赋初始值,除非确定将变量用于其他意图之前会覆盖这个初值。如果不能保证读取变量之前重置变量,就应该初始化变量。 EOF 文件终止符竞赛中常采用 while(scanf( . ) != EOF) . 来

5、实现多组读入。这是因为竞赛经常采用重定向的方式,把输入数据文件输入到程序中。而EOF表示文件结束。(End Of File)从键盘输入文件结束符 操作系统使用不同的值作为文件结束符。Windows 系统下我们通过键入controlz同时键入“ctrl”键和“z”键,来输入文件结束符。nix 系统中,包括 Mac OSX 机器,通常用 controld。 C/C+编码规范一个好的程序,不仅要算法正确,效率高,而且还应该可读性好。所谓程序的可读性,就是程序是否能让人容易读懂。在开发实践中,许多情况下可读性与代码效率同等重要。软件开发是团队工作,接手别人编码的程序并在此基础上进行改进是必不可少的,因

6、此可读性在工程实践中非常重要。即使是自己编写的程序,如果可读性不好,过一段时间需要改进时自己再看,也常会看不懂。如何提高程序的可读性呢?在标识符、书写格式、注释三个方面加以培养,再养成一些好的习惯,就能够有效增强程序的可读性。1.5.1 标识符命名注意事项应该对变量、常量以及函数等标识进行适当的命名。好的命名方法使标识符易于记忆且使程序可读性大大提高。对标识符命名的基本要求是,看到标识符就能想起或猜出它是做什么用的。如果名字能体现变量的类型或作用域等性质,当然更好。标识符命名应注意以下几点:(1)标识符号应能提供足够信息以说明其用途。 一定不要怕麻烦而懒得起足够长的变量名,少按几个键省下的时间

7、,和日后自己读程序或别人读你的程序揣摩该变量的作用所花的时间相比,实在微不足道。在没有国标合作的项目中编写程序,如果英语实在不好,可以使用拼音,但不要使用拼音缩写。(2)为全局变理取长的、描述信息多的名字,为局部变量限稍短的名字。(3)名字太长时可以适当采用单词的缩写。但要注意缩写方式一致,要缩写就全部缩写。比如单词Number,如果在某个变量里缩写成了:int nDoorNum;那么最好包含Number单词的变量都缩写成Num。(4)注意使用单词的复数形式。如int nTotalStudents,nStudents;nStudents容易让人理解成代表学生数目,而nStudent含义就不十分

8、明显。(5)对于返回值为真或假的函数,加“IS”前缀如:int IsCanceled();int isalpha(); /C语言标准库函数BOOL IsButtonPushed();1.5.2 程序的书写格式书写格式好的程序,看起来才有好心情,谁也不愿意看下面这样的程序:void main()int t, x, y;cint;while (t0)min=60000;cinNxymax; plat0.x1=x;plat0.x2=x; plat0.h=y;for (int i=1;iplati.x1plati.x2plati.h;plati.t1=-1;plati.t2=-1;if (plati.

9、hy) i-; N-; plat0.t1=0;plat0.t2=0;qsort(void*)(&plat1), N, sizeof(plat0), compare);tryway(0);t-;coutmin= 4)printf(“%d”, nAge);for(i = 0; i 100; i+);1.5.4 一些好的编程习惯(1)尽量不要用立即数,而用#define 或 const 定义成常量,以便以后修改。例如:#define MAX_STUDENTS 20struct SStudent aStudents MAX_STUDENTS;比struct SStudent aStudents 20;

10、好。再例如:#define TOTAL_ELEMENTS 100for(i = 0; i TOTAL_ELEMENTS; i+) (3)稍复杂的表达式中要积极使用括号,以免优先级理解上的混乱以及二义性。n = k+ + j; /不好n = (k+) + j; /好一点(4)不很容易理解的表达式应分几行写:n = (k+) + j;应该写成:n = k + j;k+;(5)嵌套的if else 语句要多使用 if(Condition1()if(condition2()DoSomething();elseNoCondition2();不够好,应该:if(Condition1() if(condit

11、ion2()DoSomething();elseNoCondition2();(6)单个函数的程序行数最好不要超过100 行(两个屏幕高)。(7)尽量使用标准库函数。(8)不要随意定义全局变量,尽量使用局部变量。(9)保持注释与代码完全一致,改了代码别忘改注释。(10)循环、分支层次最好不要超过5层。(11)注释可以与语句在同一行,也可以在上行。(12)一目了然的语句不加注释。1.6 小结与习题通过前几个小节的学习,对顺序结构程序设计和分支程序设计的核心概念和方法,然而对这些进行知识进行总结,并且完成适当的练习是很有必要的。1.6.1 数据类型实验实验A1:表达式11111*11111的值是多

12、少?把5个1改为6个1呢?9个1呢?解答:(1)计算表达式11111*11111的值#include int main()printf(11111*11111=%ld,11111*11111);return 0;程序的运行结果为11111*11111=。(2)计算表达式*的值只须将(1)中的printf语句改为printf(*=%ld,*);,程序的运行结果为*=-。正确的结果应为,由于这个数比较大,所以产生了溢出。(3)计算表达式*的值只须将(1)中的printf改为printf(*=%ld ,*11);,程序的运行结果为*=。正确的结果应为,由于这个数比较大,所以产生了溢出。实验A2:把实

13、验A1中的所有数换成浮点数,结果如何?解答:(1)计算表达式11111.0*11111.0的值#include int main()printf(11111.0*11111.0=%lf,11111.0*11111.0);return 0;程序的运行结果为11111*11111=.。(2)计算表达式.0*.0的值只须将(1)中的printf语句改为printf(11111*11111=%lf,11111*11111);,程序的运行结果为.0*.0=.。(3)计算表达式.0*.0的值只须将(1)中的printf改为printf(.0*.0=%lf ,.0*.0);,程序的运行结果为.0*.0=.0

14、00000。实验A3:表达式sqrt(-10)的值是多少?尝试用种方法输出。在计算过程中系统会报错吗?解答:#include #include int main()printf(sqrt(-10)=%lf,sqrt(-10);return 0;程序的运行结果为sqrt(-10)=-1.#IND,没有报错,但结果异常。实验A4:表达式1.0/0.0、0.0/0.0的值是多少?尝试用种方法输出。在计算过程中系统会报错吗?解答:#include int main()printf(1.0/0.0=%lf 0.0/0.0=%lf,1.0/0.0,0.0/0.0);return 0;输出结果为1.0/0.

15、0=1.#INF 0.0/0.0=-1.#IND。在计算过程中系统会报错,提示信息为“divdide or mod by zero”。实验A5:表达式1/0的值是多少?在计算过程中系统会报错吗?解答:表达式1/0的值无结果。在计算过程中系统会报错,提示信息为“divdide or mod by zero”。1.6.2 scanf输入格式实验scanf(%d%d,&a,%b);语句用来输入两个数,可用Tab、空格、回车,作为分隔符。实验B1:在同一行中输入12和2,并以空格分隔,是否得到了预期的效果?解答:#include void main() int a,b;scanf(%d%d,&a,&b

16、);printf(%d, %dn,a,b);return;从键盘上输入:12 2,可以达到输入两个数给变量a和b的效果。实验B2:在不同的两行中输入12和2,是否得到了预期的效果?解答:从键盘上输入:122,也可以达到输入两个数给变量a和b的效果。实验B3:在实验B1和B2中,在12和2的前面和后面加入大量的空格或水平制表符(TAB),甚至插入一些空行。解答:从键盘上输入的12和2,也可以前面和后面加入大量的空格或水平制表符(TAB),甚至插入一些空行,达到输入两个数给变量a和b的效果。实验B4:把2换成字符s,重复实验B1B3。解答:从键盘上输入:12 2,而输出的结果为12 -。1.6.3

17、 printf语句输出实验在printf语句中的格式字符串,决定了数据的输入/输出格式。实验C1:仅用一条printf语句,打印1+2和3+4,用两个空行隔开。解答:#include void main() printf(%dnn%d,1+2,3+4);return;实验C2:试着把%d中的两个字符(百分号和小写字)输出到屏幕。解答:#include void main() printf(%dn);return;实验C3:试着把n中的两个字符(反斜线和小写字母n)输出到屏幕。解答:#include void main() printf(n);return;实验C4:像C2、C3那样也需要“特殊

18、方法”才能输出的东西还有哪些?哪些是printf函数引起的问题,哪些不是?解答:输出单引号和双引号需要用和。1.6.4 测试你的实践能力问题1:int型整数的最小值和最大值是多少?(需要精确度)。解答:(1)方法一#include #include int main() int a,b;a=-pow(2,31);b=pow(2,31)-1;printf(%d %dn,a,b);return 0;注意:在TC中int型整数(2字节)的最小值和最大值分别为-32768和32767;在VC6.0中int型整数(4字节)的最小值和最大值分别为-和,所以不同的编译系统为整型数据分配的字节数是不相同的。本

19、题程序是在VC6.0中调试的。(2)方法二#include #include int main() int a,b;a=INT_MAX;b=INT_MIN;printf(%d %dn,a,b);return 0;说明:头文件limits.h中定义了用于表示整数类型大小的常量(宏定义)。(1)如果在C:盘上有TC,就可以在“c:TC”用记事本打开头文件limits.h,可以找到“#define INT_MAX 0x7FFF”和“#define INT_MIN (int)0x8000)”。INT_MAX表示在TC中表示最大整数,0x7FFF就是32767;INT_MIN表示在TC中表示最小整数,(

20、int)0x8000就是-32768。(2)如果在C:盘装有VC6.0,就可以在“C:Program FilesMicrosoft Visual StudioVC98Include”用记事本打开头文件limits.h,可以找到“#define INT_MIN (-1) /* minimum (signed) int value */”和“#define INT_MAX /* maximum (signed) int value */”。INT_MAX表示在VC6.0中表示最大整数是;INT_MIN表示在TC中表示最小整数是-。问题2:double型浮点数能精确到多少位小数?或者,这个问本身值得

21、商榷?解答:#include int main() double a;a=123.0;printf(%lfn,a);return 0;double型浮点数隐含输出小数位数为6位,不过还可以通printf(%.20lfn,a);来重新设置,.20中的20也可以换成其它的数值。问题3:double型浮点数最大正数值和最小正数值分别是多少?解答:#include int main() int y = 1030; for (double x = 0.; y- ; x *= 2) cout x t; cout endl; y = 1030; for (x = 0.; y- ; x /= 2) cout

22、x t; cout endl; return 0;由程序可得,double型浮点数最大正数值和最小正数值分别是1.79769e+308、1.73832e-319。问题4:逻辑运算符号&、|和!(它表示逻辑非)的相对优先级是怎样的?也就是说,a&b|c应理解成(a&b)|c还是a&(b|c),或者随便怎么理解都可以?解答:逻辑运算符号&、|和!(它表示逻辑非)的相对优先级(由高到低)是! &|。a&b|c应理解为(a&b)|c。问题5:if(a) if(b) x+; else y+;的确切含义是什么?这个else应和哪个if配套?有没有办法明确表达出配套方法,以避免初学者之困惑?解答:if(a)

23、 if(b) x+; else y+; 可以换成以下的形式:if(a)if(b) x+;else y+;else与if的配对的原则是else一般与最近没有配对的if进行配对。实际上,如果else与第一个if进行配对,可以采取加的方式进行:if(a) if(b) x+;else y+;如果else与第二个if进行配对,可以采取加的方式进行:if(a)if(b) x+;else y+;以上这种加的方式,就不会引起歧义。1.6.5 小结(1)本章介绍了常见的各种数据类型,以及他们所能表达的范围;(2)本章介绍了scanf和printf语句的使用;(3)本章介绍了逻辑判断的使用,理解并描述复杂的逻辑判

24、断。(4)程序设计是一门实践性很强学科,所以在学习时,给出两点建议:重视实验、学会模仿。1.6.6 上机练习程序设计是一门实践性很强的学科,所以给出下面的练习。习题1-1 平均数(average)输入3个整数,输出它们的平均值,保留3位小数。解答:#include int main() int a,b,c;double d;scanf(%d%d%d,&a,&b,&c);d=(double)(a+b+c);printf(%.3lfn,d/3.0);return 0;习题1-2 温度(temperature)输入华式温度f,输出对应的摄氏温度c,保留3位小数。提示:c=5(f-32)/9。解答:#

25、include int main() int f;double c;scanf(%d,&f);c=5*(f-32)/9;printf(%.3lfn,c);return 0;习题1-3 连续和(sum)输入正整数n,输出1+2+n的值。提示:目标是解决问题,而不是练习编程。解答:#include int main() int n;scanf(%d,&n);printf(%dn,(1+n)*n/2);return 0;注意:本题利用了等差数列的公式,而不是像平常编程时,用循环来实现。习题1-4 余弦和正弦(sincos)输入正整数(n360),输出n度的正弦、余弦函数值。提示:使用数学函数。解答:

26、#include #include int main() const double pi = 3.;int n; /* n是角度 */scanf(%d,&n);printf(sin(n)=%lfn,sin(n/180.0)*pi);printf(cos(n)=%lfn,cos(n/180.0)*pi);return 0;习题1-5 距离(distance)输入4个浮点数x1,y1,x2,y2,输出平面坐标系中点(x1,y1)和点(x2,y2)的距离。解答:#include #include int main() double x1,x2,y1,y2;scanf(%lf%lf%lf%lf,&x1

27、,&y1,&x2,&y2);printf(%lfn,sqrt(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);return 0;习题1-6 偶数(odd)输入一个整数,判断它是否为偶数。如果是,则输出“yes”,否则输出“no”。提示:可以用多种方法判断。解答:#include int main()int n;scanf(%d,&n);if(n%2=0)printf(YESn);elseprintf(NOn);return 0;习题1-7 打折(discount)一件衣服95元,若消费满300元,可打八五折。输入购买衣服件数,输出需要支付的金额(单位:元),保留两位小数。解答:#

28、include int main() int n;double a;scanf(%d,&n);a=n*95.0;if(a300)printf(%.2lfn,a);elseprintf(%.2lfn,a*0.85);return 0;习题1-8 绝对值(abs)输入一个浮点数,输出它的绝对值,保留两位小数。解答:#include #include int main() double n;scanf(%lf,&n);printf(%.2lf,fabs(n);return 0;习题1-9 三角形(triangle)输入三角形三边长度值(均无正整数),判断它是否能为直角三角形的三个边长。如果可以,则输

29、出“yes”,如果不能,则输出“no”。如果根本无法构成三角形,则输出“not a triangle”。解答:#include int main() int a,b,c;scanf(%d%d%d,&a,&b,&c);if(a=b&b=c) printf(non);if(a*a+b*b=c*c)|(a*a+c*c=b*b)|(b*b+c*c=a*a) printf(yesn);else printf(non);return 0;习题1-10 年份(year)输入年份,判断是否为闰年。如果是,则输出“yes”,否则输出“no”。提示:简单地判断除以4的余数的是不够的。解答:#include int main() int n;scanf(%d,&n);if(n%4=0) if(n%100!=0) printf(non);else if(n%400=0) printf(yesn);elseprintf(non);else printf(non);return 0; 布 置 作 业上机练习 习题1-7、1-8、1-9、1-10专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁