




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 哈尔滨工业大学威海C Programming Language C 语言程序设计 C语言的祖师爷Dennis M. Ritchie/Ritchie漫画像C is quirky, flawed, and an enormous success.C诡异离奇、缺陷重重,却获得巨大成功Who am i?姓名:徐永东联系方式: :Email: 推荐使用Email方式交流答疑课件/徐永东 用户名:test (pub),密码:123456提交作业和实验报告Hu r u?用过计算机吗?用来干什么?学过编程吗?哪些语言?课程特点紧密围绕在以C语言为核心的课中央周围,进行计算机科学的启蒙教育,重点在于程序设计乐
2、趣与能力重于知识,考试是?,成绩是!自学、自主、自信、自乐人人做“稀饭课程说明课程性质:必修课学时安排:42 30考核方式:笔试 70%实验 20%+平时10%平时要求:出勤 作业课程网站:见介绍课堂帮规不碍他人,为所欲为可随时进入,不可任意外出可大声喧哗,不可窃窃私语可伏案小睡,不可鼾声大作可眉来眼去,不可动手动脚喧哗有奖,自由万岁藐视教师,鄙视书本课外帮规人手一书,不要重样禁止提问,大方讨论说出你对问题的看法思想共享,程序保密藐视教师,鄙视书本必备知识中文阅读,英文查字典www浏览,下载,搜索收发emailWindows根本操作文件管理忠告不要溺爱本课,而冷落其它!程序演示welcome.
3、c程序演示welcome.c程序演示pro1.c程序演示pro1.c程序演示music1.c程序演示music1.c程序演示music.c程序演示music.c程序演示fk.c程序演示fk.c程序演示连连看C语言的四种常用编程环境DOS状态下:Turbo C 2.0, Turbo C&C+ 3.0Windows状态下:WIN-TC, Visual C+ 6.0, Visual C+.NetTurbo C 2.0Turbo C & C+ 3.0WIN-TCVisual C+ 6.0 (可视化的)编程语言的开展史人与计算机的对话两个说不同母语的人的对话方式:一方学另一方的语言双方都学习一种第三方语
4、言人与计算机的对话方式:计算机学习人的语言自然语言理解人学习计算机的语言学习第三方语言机器语言计算1+1101110000000000100000000000001010000000100000000汇编语言MOV AX, 1101110000000000100000000ADD AX, 1000001010000000100000000BASIC语言PRINT 1+1C语言#include main()printf(%dn, 1+1);C语言的创世纪一切从一个叫“Space Travel的电子游戏开始为了让他的游戏能在PDP-7上运行,Ken Thompson用汇编语言给PDP-7写了一个操
5、作系统UNIX汇编太不好用了,Thompson需要高级语言试验了一些高级语言,包括Fortran,都不理想他在BCPL根底上,自己设计了一个B语言UNIX开始开展,B也不够用了Dennis Ritchie参加,把B改造成C开始用C重写UNIX流行语言排行榜 C语言与程序设计是计算机专业和非计算机专业的一门技术根底选修课程,大学一年级或大二年级开设。 通过本课程的学习使学生更好地了解和应用计算机,培养学生应用计算机独立解决问题的能力,让学生真正掌握一门使用计算机的语言工具,为学生今后无论是从事计算机或非计算机工作都奠定了良好的、扎实的计算机语言根底。你应该知道 本课程的性质、目的与任务 我们将遵
6、照国家教委考试中心制定的 “二级C语言考试大纲 来进行教学,所以在内容上紧扣大纲考试要求,在语言上力求通俗易懂、循序渐进。 你应该知道你应该知道自主学习重视上机实践上机要求禁做与课程学习无关的事情看懂编译信息,逐步学会各种调试方法算法及程序代码在上机前搞定 本课程学习方法讲课顺序请翻开课本。第一章 简单C语言设计简单的C程序实例 /* 一个简单的C程序实例 */*purpose: I have a dreamauthor : Zhang Weigangcreated: 2021/06/30 21:18:08*/#include #include void main(void)int nNumb
7、er1;nNumber1 = 1;printf(“Hello C language!n);printf(“I have a dream that one day I will be skillful in C programming!n);printf(“I have a dream that one day I will be a famous computer scientist!n);printf(“I have a dream that one day I will solve the Goldbachs conjecture problem and “prove that %d +
8、%d = %d by using C!n, nNumber1, nNumber1, 2);printf(“I hava a dream today!n);Hello C language!I have a dream that one day I will be skillful in C programming!I have a dream that one day I will be a famous computer scientist!I have a dream that one day I will solve the Goldbachs conjecture problem an
9、d prove that 1 + 1 = 2 by using C!I hava a dream today!X1 起止端点 输入/输出 一般处理 预定义处理 条件判断 连接点 流程线 注释框用程序流程图来描述程序End程序流程图描述刚刚的程序Begin变量声明变量初始化输出 字符串1输出 字符串2输出 字符串3输出 字符串4与变量输出 字符串5简单的C程序实例 /* 一个简单的C程序实例 */*purpose: I have a dreamauthor : Zhang Weigangcreated: 2021/06/30 21:18:08*/#include #include void ma
10、in(void)int nNumber1;nNumber1 = 1;printf(“Hello C language!n);printf(“I have a dream that one day I will be skillful in C programming!n);printf(“I have a dream that one day I will be a famous computer scientist!n);printf(“I have a dream that one day I will solve the Goldbachs conjecture problem and
11、“prove that %d + %d = %d by using C!n, nNumber1, nNumber1, 2);printf(“I hava a dream today!n);注释翻开另一个文件主函数名 变量声明语句 赋值语句 函数调用语句 C程序结构 Hello C language!I have a dream that one day I will be skillful in C programming!I have a dream that one day I will be a famous computer scientist!I have a dream that
12、one day I will solve the Goldbachs conjecture problem and prove that 1 + 1 = 2 by using C!I hava a dream today!C程序结构 简单程序扩展 计算器解决方案 (1) 变量声明:声明的变量用于存放数据;(2) 变量初始化:通过变量赋值或通过键盘输入给出; (3) 输出结果:将结果输出到屏幕或窗口;(4) 在对变量初始化时,要保证作除法运算有意义,即保证除数不为零;(5) 取余运算仅对于整数有意义。计算过程实现及分析 #include #include void main(void)int l
13、Operator,rOperator;/* 定义两个整型变量,用于存放左右操作数 */int nResult1,nResult2,nResult3,nResult4,nResult5;/* 定义五个整型变量,用于存放结果 */lOperator = 4;rOperator = 5;nResult1= lOperator+rOperator;/* 计算lOperator与rOperator相加并将和存入nResult1中 */nResult2= lOperator-rOperator;/* 计算lOperator与rOperator相减并将差存入nResult2中 */nResult3= lOp
14、erator*rOperator;/* 计算lOperator与rOperator相乘并将积存入nResult3中 */nResult4= lOperator/rOperator;/* 计算lOperator与rOperator相除并将商存入nResult4中 */nResult5= lOperator%rOperator;/* 算lOperator与rOperator的模并将余数存入nResult5中 */printf(“ %d “, nResult1); /* 将和显示在屏幕上 */printf(“ %d “, nResult2);/* 将差显示在屏幕上 */printf(“ %d “,
15、nResult3);/* 将积显示在屏幕上 */printf(“ %d “, nResult4);/* 将商显示在屏幕上 */printf(“ %d “, nResult5);/* 将余数显示在屏幕上*/关于根本整型 int long int unsigned int float double char常用的数据类型与存储方式 数组 文件 结构体 共用体void基本类型构造类型指针类型空类型数据类型Data Type数据类型基本类型构造类型指针类型空类型整型实型(浮点型)字符型枚举类型数组类型结构体类型共用体类型单精度实型双精度实型基本整型长整型短整型无符号整型数据类型多型遍地走,安知我多大?
16、数据为什么要区分类型?不同类型的数据代表不同的数据表示形式合法的取值范围占用内存空间大小可参与的运算种类 根本数据类型int整数,在目前绝大多数机器上占4个字节。TC2中是2个字节float单精度浮点数,一般是4个字节长double双精度浮点数,一般是8个字节长char字符,一般是1个字节长用来表示256个ASCII字符,或者0255的整数数据类型修饰符shortshort int,短整数,一般2个字节长。通常简写为shortlonglong int,长整数,一般是4个字节长。通常简写为longlong double,长双精度高精度浮点数,一般是10个字节长。signed用来修饰char、in
17、t、short和long,说明他们是有符号的整数正整数、0和负整数。一般缺省都是有符号的,所以这个修饰符通常省略unsigned用来修饰char、int、short和long,说明他们是无符号的整数正整数和0 1 byte 在16位环境中(DOS),占用 2 个字节的空间 1 byte int -3276832767 在32位环境中(Windows等),占用 4 个字节的空间 1 byte int a; a=9; 1 byte Do you know -9 ? 00001001 00 0000 0 000001001 a92000变量名地址编号2001 原码: 用二进制的最高位表示数符 用 0
18、,表示正数 用 1,表示负数 数值局部那么为 真值的绝对值常用的 有三种表示方法 原码机器数反码补码 补码: 那么先将其表示成原码,然后除符号外,再逐位取反 即0变1,1变0最后再加上1。 例如: 求 2 的补码即-2在内存中的储存方式 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0原码负数以补码形式存储反码补码 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 x-y=x+(-y) 补码: 神奇地化减法为加法。 例如: 求 7-6 = 7+-6 0 0 0 0 0 0 0 0 0 0 0 0 0 1
19、 1 17-6补码结果=1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1超出取值范围会怎样?TC2中int的范围是-215215-1如果我们给它一个小于-215或者大于215-1的数会如何呢?小蛇能吞下大象吗?溢出Overflow造成的危害一台安装了Windows 95/98的机器,如果连续运行49.7天没有重新启动,可能死机 原因:Windows自启动时刻起,有一个计数器,记录系统已经运行了多少毫秒。这个计数器是个unsigned long 类型的变量unsigned long的最大值是:4294967295一
20、天有 24*60*60*1000 = 86400000毫秒4294967295 / 86400000 = 49.71026961805当49.7天的时候,此计数器会溢出,引起死机使用变量要注意不要对变量所占的字节数想当然用sizeof获得变量或者数据类型的长度sizeof(int);2_Sizeof 1 byte 在计算机中占用 4 个字节的空间 1 byte 1 byte 1 byte float 此空间只能用于存放 实型数据 即32位二进制数 小数局部包括符号3个字节 指数局部包括指数的符号1字节 以指数形式存储例如: float x; +.314159261 指数形式:0.3141592
21、6E1 1 byte 3 byte 小数局部 指数数符x=3.1415926; x 0.31415926E1 1 byte char 用于表示字符型数据 在计算机中占用 1 个字节的空间 例如:char ch; ch=a; 单引号 双引号 a “studentAmerican Standard Code for Information Interchange ASCII 码 a - 97 (ASCII) 例如: 27=128 0-9, A-Z, a-z 及各种运算符号、标点和控制符号 01100001变量与常量常量常数不动如山是一种在程序中保持固定类型和固定值的数据。变量我的地盘我做主是在程序
22、执行过程中可以改变、赋值的量。是由编程人员自己定义的。变量的的命名规那么 lOperator,rOperator,nResult为变量标识符,变量的名字遵循标识符的命名规那么:(1) 由英文字母、数字和下划线组成,其必须以英文字母或下划线开头;(2) 不允许使用关键字作为标识符的名字;(3) 标识符命名应做到“见名知意;(4) 标识符区分大小写。变量声明的一般形式类型说明符 变量名标识符1,变量名标识符2,.;int lOperator,rOperator;技巧:在使用变量时,必须遵循先定义、后使用的原那么。 关键字 关键字Keyword又称保存字,它们是C语言中预先规定的具有固定含义的一些单
23、词,例如:int, return等。C语言提供的关键字总共有32个,详见附录C。C程序常见符号分类 关键字Keyword 又称为保存字,C语言中预先规定的具有固定含义的一些单词 标识符Identifier系统预定义标识符用户自定义标识符函数名、变量名 运算符Operator: 详见P17 分隔符Separator 空格、回车/换行、逗号等 其它符号 大花括号“和“通常用于标识函数体或者一个语句块 “/*和“*/是程序注释所需的定界符 数据Data变量Variable常量Constant 计算过程实现及分析 #include #include void main(void)int lOperat
24、or,rOperator;/* 定义两个整型变量,用于存放左右操作数 */int nResult1,nResult2,nResult3,nResult4,nResult5;/* 定义五个整型变量,用于存放结果 */lOperator = 4;rOperator = 5;nResult1= lOperator+rOperator;/* 计算lOperator与rOperator相加并将和存入nResult1中 */nResult2= lOperator-rOperator;/* 计算lOperator与rOperator相减并将差存入nResult2中 */nResult3= lOperator
25、*rOperator;/* 计算lOperator与rOperator相乘并将积存入nResult3中 */nResult4= lOperator/rOperator;/* 计算lOperator与rOperator相除并将商存入nResult4中 */nResult5= lOperator%rOperator;/* 算lOperator与rOperator的模并将余数存入nResult5中 */printf(“ %d “, nResult1); /* 将和显示在屏幕上 */printf(“ %d “, nResult2);/* 将差显示在屏幕上 */printf(“ %d “, nResul
26、t3);/* 将积显示在屏幕上 */printf(“ %d “, nResult4);/* 将商显示在屏幕上 */printf(“ %d “, nResult5);/* 将余数显示在屏幕上*/有关表达式与表达式语句 表达式由函数、变量、运算符、常量等组成,每个表达式都有具体的数值。表达式+分号构成了表达式语句。(1) 简单赋值运算符记为“=,它的作用是将一个表达式的值赋给一个变量。由“=连接的式子称为赋值表达式。其一般形式为:变量=表达式(2) 赋值运算符是右结合性运算符。如x=y=z,由于“=的右结合性,应先执行y=z,再执行x=(y=z)运算。 有关表达式与表达式语句(3) 如果赋值运算符
27、两边的数据类型不相同,系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。(4) 在程序中常常需要对变量赋初值,以便使用变量。在定义时赋以初值的方法,称为初始化。为了方便,在变量说明中赋初值的一般形式为:类型说明符 变量1 = 值1,变量2 = 值2,;有关算术运算符 (1) 描述数据运算的特殊符号称为运算符。 (2) 算术运算符的优先级:当不同优先级的运算符进行混合运算时,按照由高到低运算符的优先级进行计算。(3) 算术运算符的结合性:同一优先级的算术运算符进行混合运算时,结合性是按自左至右,即先左后右。 技巧:在数值运算时,一般先考虑运算符的优先级,再考虑结合性。 计算过程实现及分
28、析 #include #include void main(void)int lOperator,rOperator;/* 定义两个整型变量,用于存放左右操作数 */int nResult1,nResult2,nResult3,nResult4,nResult5;/* 定义五个整型变量,用于存放结果 */lOperator = 4;rOperator = 5;nResult1= lOperator+rOperator;/* 计算lOperator与rOperator相加并将和存入nResult1中 */nResult2= lOperator-rOperator;/* 计算lOperator与r
29、Operator相减并将差存入nResult2中 */nResult3= lOperator*rOperator;/* 计算lOperator与rOperator相乘并将积存入nResult3中 */nResult4= lOperator/rOperator;/* 计算lOperator与rOperator相除并将商存入nResult4中 */nResult5= lOperator%rOperator;/* 算lOperator与rOperator的模并将余数存入nResult5中 */printf(“ %d “, nResult1); /* 将和显示在屏幕上 */printf(“ %d “,
30、 nResult2);/* 将差显示在屏幕上 */printf(“ %d “, nResult3);/* 将积显示在屏幕上 */printf(“ %d “, nResult4);/* 将商显示在屏幕上 */printf(“ %d “, nResult5);/* 将余数显示在屏幕上*/有关函数printf()printf 函数调用的一般形式为: printf(“格式控制字符串,输出表列);结果分析 编译运行程序compute.c,显示程序运行结果,如图1-12所示。图1-12 compute.c程序运行结果格式输出函数格式输出函数printf(格式控制字符串, 输出参数表);输出假设干个任意指定
31、类型的数据例子:printf(“Hello, World!n);printf(“%d,%dn,a,b);printf(“sum=%dn,sum);格式输出函数printf(a=%d b=%f, a, b); 函数名输出表列普通字符格式说明格式控制格式说明:%普通字符原样输出x = 34; y = 3.14;Printf(“x =%d,y=%fn, x, y);输出:x = 34,y = 3.14%d 以带符号十进制整数输出%o 以八进制无符号整数输出无前导0%x 以十六进制无符号整数输出无前导0 x%u 以十进制无符号整数输出%c 以字符形式输出单个字符%s 输出一个字符串%f 以小数形式输出
32、浮点数6位小数%e 以标准指数形式输出6位小数%g 选用%f,%e中输出宽度较小的一种格式printf格式字符P315l 长整型整数,加在d、o、x、u前L long double型数,加在f、e、g前m 表示数据占用的最小宽度例如:%3d 数据宽度大于m,按实际宽度输出 数据宽度小于m时,补空格n 对实数表示输出n位小数例如:%5.3d 对字符串表示最多输出的字符个数- 改变输出内容的对齐方式 缺省为右对齐printf附加格式说明符整型数据的输出printf(格式控制,输出参数表;格式控制说明- %.%d: 以十进制形式输入、输出整数%o: 以八进制形式输入、输出整数%x: 以十六进制形式输
33、入、输出整数#include void main() printf(“%d, %o, %xn, 10, 10, 10); printf(“%d, %d, %dn, 10, 010, 0 x10); printf(“%d, %xn,012, 012);001010运行结果:10, 12, a10, 8, 1610, a#include void main() int a, b; scanf (“%o %d, &a, &b); printf (“%d, %5dn, a, b); printf (“%x, %dn, a, b);输入17 17运行结果17f 17:b的ASCII码98#include
34、 main() printf(“%c,%dn,b, b); printf(“%c,%dn,98, 98); printf(“%c,%dn,97, b-1);运行结果b 98b 98a 97关于实型 实型家族包括: 单精度型(float)和双精度型(double)。实型的取值范围与值的精度与机器有关,一般float占4字节(32位),提供7位有效数字;double占8字节,提供15-16位有效数字。 程序清单1-3 division.c/* 一个关于除法运算符的程序实例 */*purpose: 验证/运算符的操作数都为整数或有个为实数的结果是不同的author : Wangweicreated:
35、 2021/07/10 15:19:20*/#include #include void main(void)printf(“ %d,%dn “, 20/7, -20/7);printf(“ %f,%fn “, 20.0/7, -20.0/7);注意:求余运算符(%)要求参与运算的量均为整型,运算的结果等于两数相除后的余数。两整数相除结果仍为整数,小数局部全部舍去,并非四舍五入。实型数据的输出float和double使用相同的格式控制说明%f 以小数形式输出浮点数,保存6位小数%e 以指数形式输出 1位整数.5位小数e 3位指数#include Void main() float f = 12
36、3.45; double d = 3.1415926; printf(“%f, %en, f, f); printf(“%f, %en, d, d); printf(“%5.3f, %5.2f, %.2fn, d, d, d);一共5位,小数3位,小数点一位运行结果为:123.450000, 1.23450e+023.141593, 3.14159e+003.142, 3.14, 3.14#include main()float f1 = 100.15799, f2 = 12.55, f3 = 1.7;int n1 = 123, n2 = 45, n3 = 6; printf(printf W
37、ITHOUT width or precision specifications:n);printf(%fn%fn%fn, f1, f2, f3);printf(%dn%dn%dn, n1, n2, n3);printf(printf WITH width and precision specifications:n);printf(%5.2fn%6.1fn%3.0fn, f1, f2, f3);printf(%5dn%6dn%3dnn, n1, n2, n3);再看一个例子深入解读1. 细节的解读数据是程序处理的对象,数据可以依其本身的特点进行分类。 在程序中,我们使用变量这个抽象实体来存储
38、计算机中的数据,变量的使用要遵从先声明后使用的规那么。当为不同的变量赋值的时候,就必须使用赋值运算符。 程序清单overflow.c 程序1-4/* 一个关于整数溢出的程序实例 */*purpose: 数据超过表示范围就会溢出author : Yan Jianencreated: 2021/07/10 15:58:22*/#include #include void main(void) short int iNum;iNum=32767;iNum=i_num+1;printf(“ num=%dn “, iNum); 查看一下结果是什么,思考一下为什么会出现这种情况呢? 2. 如何解决一个问题
39、第一步,分析问题。 第二步,给出解决问题的方法和步骤。 第三步,代码编写。 第四步,正确性验证。 3. 编程风格的问题程序清单1-5style.c /* 一个代码风格混乱的程序实例 */*purpose: 代码混乱的弊端author : Yan Jianencreated: 2021/07/10 16:21:23 */#include #include long b, c=2800, d, e, f2801, g;void main(void)for(; b-c; ) fb+ = 10000/5;for(; d=0, g=c*2; c-=14, printf(“%.4d,e+d/10000), e=d%10000) for(b=c;d+=fb*10000,fb=d%-g,d/=g-,-b;d*=b);getch();能读懂吗?#include /* 对 fahr = 0, 20, ., 300 打印华氏温度与摄氏温度对照表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 抖音平台团购活动资源整合与推广代运营服务合同
- 企业员工招聘与选拔流程优化合同
- 绿色建筑节能改造示范项目合同
- 房产增值收益调整与分配变更租赁管理服务合同
- 机床维修保养与智能化升级服务合同
- 影视作品音乐版权授权与版权保护及合作开发及收益分成及广告合作及维权合同
- 国际投行驻华分析师岗位聘用合同
- 人力资源信息系统建设与维护咨询合同
- 纺织供销合作协议合同
- 美容院合伙协议书合同
- 药事管理与法规智慧树知到答案2024年石河子卫生学校
- 人工智能训练师理论知识考核要素细目表五级
- 2024年贵州省中考理科综合试卷(含答案)
- 110kV变电站专项电气试验及调试方案
- DL-T901-2017火力发电厂烟囱(烟道)防腐蚀材料
- 篮球智慧树知到期末考试答案章节答案2024年浙江大学
- GB/T 3428-2024架空导线用镀锌钢线
- ISO 15609-1 金属材料焊接工艺规程及评定-焊接工艺规范中文版
- MOOC 英语语法与写作-暨南大学 中国大学慕课答案
- 2024年山东省济南市历下区中考二模地理试题
- 电子书 -《商业的底层逻辑》
评论
0/150
提交评论