C语言程序设计入门_第1页
C语言程序设计入门_第2页
C语言程序设计入门_第3页
C语言程序设计入门_第4页
C语言程序设计入门_第5页
已阅读5页,还剩69页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言简介诞生1972年BELL实验室 DennisRitche为描述UNIX操作系统设计重要特征高级语言的全部功能和汇编语言的部分功能标准版本ANSI标准C语言1989年美国国家标准化协会公布的美国标准也是国际标准化组织(ISO)公布的世界标准开发环境和专用版本TURBOC VISUALC/C++GC/GCC FORTEC/C++主要特点优点语言简洁、程序设计自由度大、可读性好运算丰富、数据结构使用灵活可直接描述硬件操作、可移植性好程序库支持十分丰富-->P455标准函数缺点语义不严格、维护难度大编译提供的错误信息少、对程序员要求高2.1简单的C语言程序任务:打印输出文本“WelcometoC”#include<stdio.h>main(){ printf(“WelcometoC\n”);}主函数(程序入口)标准函数(用于输出)提供函数名说明字符串常数WelcomtoCC语言程序的基本形式main(){<语句序列

>函数体}main()主函数程序入口;

C程序由语句组成,语句用分号“;”结尾;printf()标准函数,存于函数库,用于输出。若干名字说明若干语句数据结构

x,y,temp赋初值

x=5,y=3第二个简单的C语言程序任务:交换两个变量的值开始tempx结束xyytemp输出x,y#include<stdio.h>/*交换两个整型变量的值*/main(){ intx=5,y=3,temp; temp=x; x=y;y=temp; printf(“\nx=%d,y=%d\n”,x,y);}说明变量x,y,temp是整数类型交换x和y的值第二个简单的C语言程序程序书写知识基本词汇(单词)名字(标识符),如:main,printf常量,如:23、2.3、“Welcome”分隔符,如:#、(、)、<、>严格的语法格式单词排列规则如:主函数的程序结构main(){

若干名字说明 若干语句

printf(…);}另一个简单的C语言程序任务:求从键盘输入的两个整数的和分析:输入两个整数x,ysum=x+y输出sum流程图sum=x+y输入两个整数x,y输出sum另一个简单的C语言程序任务:求两个整数的和#include<stdio.h>main(){ intx,y,sum; printf(“请输入两个整数:”); scanf(“%d%d”,&x,&y); sum=x+y; printf(“和等于%d\n”,sum);}说明变量x,y,sum是整数类型标准函数(输入用)计算和赋值请输入两个整数:2398和等于121程序结构头文件导入 #include引入标准库的函数说明(在文件stdio.h中)什么是函数表示一个执行过程(若干个语句);用名字标识。

标准函数:编译系统事先准备好的函数什么是语句表示一个执行步骤;通常以引号结尾。什么是名字说明说明程序中使用的标识符包括:代表函数的函数名、代表数据对象的变量名标识符使用原则标识符(名字)的组成首字符为字母或_,其余字符为数字字符或字母或_标识符区分大小写使用原则:先说明、后引用适用于所有变量名、函数名变量说明(数据对象说明)说明变量的数据类型格式: 类型变量名;例如: intx; x是整型变量

charc,h; c和h是字符型变量

为提高可读性,用标识符命令最好“见名知义”,而且规范大小写的使用方式。include<stdio.h>将文件stdio.h

插入stdio.h

中有函数printf

和scanf

的说明数据结构

n,sum,a,b,cC语言程序4任务:输入一个三位数,计算每位数字之和。开始an/100结束bn/10-a*10cn%10输入一个三位数n输出每位数之和【程序4】#include<stdio.h>main(){intn,a,b,c,sum;printf("Inputn:");scanf("%d",&n);a=n/100;b=n/10-a*10;c=n%10;sum=a+b+c;printf("n=%d,sum=%d\n",n,sum);}Inputn:678

6=67-608n=678,sum=21

程序中的运算算术运算加减乘除 x+yx-yx*yx/y求余数 x%y

(x,y必须为整数)以算术运算表达式的形式出现除法时,x,y都为整数,其结果为整数。赋值运算sum=x+y驱除变量x和y的值,完成加法后;将结果存放到变量sum(改变了其内容)等号=代表赋值,而不是相等。输入和输出的实现scanf(“%d%d”,&x,&y)%d 指示整数的输入输出(转换说明符)输入2个整数依次转换到变量x和y中用户在键盘输入回车(Enter)时开始读入printf(“和等于%d\n”,x)输出指定的符号串,用变量x的值替换%d,\n是转义字符,代表“回车符”(换行符)scanf和printf

来自C语言的标准函数库是预先准备好的程序模块,供直接使用程序开发环境—TurboC标题栏主菜单窗口控制按钮信息窗口功能键提示符2.2TURBOC的使用方法综合开发环境文件名:TC.EXE 在D:/TC目录下提供编辑(Edit)、编译(Compile)、运行(Run)、调试(Debug)功能上机过程打开计算机、启动TC.EXE编辑源程序文本编译运行(预处理、编译、连接、装入、执行)输入数据、查看结果如果有错误、重复以上过程;不断总结提高常用命令程序文本编辑命令进入编辑:Alt+E装入存在的文件:F3、输入文件名(***.C)保存编辑结果:F2、输入文件名(***.C)编译运行命令生成可执行文件(Make):F9编译后立即执行:Ctrl+F9系统将指示程序错误(在Message窗)或者:报告成功显示输出结果命令Alt+F5C语言程序的编制和调试过程编辑程序文本保存程序文本编译连接运行装入程序文本新建程序修改存在的程序编译报错结果有错结束其他常用命令无奈的选择Esc或连续按F6(窗口切换)菜单选择Alt+首字符跟踪命令(Trace): F7(单步跟踪)设置监视点(Watch): Ctrl+F7输入变量名:message窗将显示变量值退出TURBOCAlt+X环境配置OptionDirectory设置include和lib文件目录TurboC演示编辑编译运行跟踪2.3内存的概念与赋值的概念程序中的变量:代表内存单元;变量说明语句为变量分配内存单元intx,y;各种类型需要的内存空间大小不同,表示范围和精度不同变量的值相应的内存单元中的数据值,参与计算赋值(用等号=表示)的意义将数据保存到变量对应的内存空间,如:sum=x+y变量的不同意义变量被赋值时(等号左侧):代表内存单元变量的其他使用:代表内存单元中的数据值程序只能访问分配给自己的内存单元程序例执行过程intx,y,sum;printf(“请输入两个整数:”);scanf(“%d%d”,&x,&y);sum=x+y;printf(“和等于%d\n”,sum);…………内存空间xysum9823121请输入两个整数:2398和等于121程序与数学计算的区别程序变量的特征是存储单元,可以保存计算的结果赋值将改变其内容(=表示赋值)过程性语句的顺序执行计算结果(变量内容)和语句执行顺序有关保存数据的必要性常用算术运算符+(加)-(减)*(乘)/(除)%(求余)【例】将代数式改写成C语言算术表达式。3.14159*(r*r)/(a+b)

无乘方运算符不能用不能丢不能丢可省略可省略赋值运算应注意:赋值运算符的两边数据类型不一致时:例如,inta;a=(int)4.5;4赋给a例如,inta;a=4.5;系统可自动转换:可人为地转换:自动转换成44赋给a表达式的值为4强制类型转换键盘输入时应注意:1)输入的整数或实数之间要用空格、制表符(Tab)或回车符隔开。2)输入时直到输入项都得到数据为止。若输入数据有错,将结束等待,继续执行后面的语句。注意:出错时通常不给出出错信息,而是使得余下的相应变量得不到正确的输入数据。例:scanf(”%d%d%f”,&a,&b,&f);232535.5<CR>或23<CR>25<CR>35.5<CR>输入、输出的格式描述必须注意:

1)格式串中的格式转换描述和它所对应的参数类型必须按从左到右的顺序一一对应匹配。

2)格式串里格式转换描述个数和其他参数个数应相同。

如果写错,引起的后果是无法预料的。2.4选择结构的实现应用问题根据不同条件,完成不同的计算处理语言支持条件判断的支持关系运算选择结构应用例要求:输入两个实数,进行比较;输出比较结果(“等于”,“大于”或“小于”)流程输入两个实数x,y输出“相等”输出“大于”输出“”小于x=y?x>y?TFTF应用例的实现#include<stdio.h>main(){

float x,y;printf(“请输入两个实数:”);scanf(“%f%f”,&x,&y);if(x==y) printf(“X等于Y\n”);else{ if(x>y) printf(“X大于Y\n”); else printf(“X小于Y\n”);}}说明x和y是浮点数条件表达式条件分支(真、假)条件语句格式:if(条件表达式)

语句 /*真分支*/else

语句 /*假分支*/或者if(

条件表达式)

语句 /*真分支*/关键字(保留字)系统已经使用的标识符,如:

ifelseintfloat…常用关系运算符等于==(双等号)不等!=

大于>

小于<

大于等于>=

小于等于<=其他语言现象else子句和最近的if语句匹配浮点数变量变量说明 floatx; 转换说明符 %f分程序结构(复合语句)用{和}包装的一组语句常用于条件分支的描述程序书写格式(强烈推荐)每个语句占一行采用缩进格式描述条件分支和复合语句用制表符(TAB)进行缩进2.5循环处理的实现考虑计算任务从键盘读入5个整数,输出它们的和;设计思路设置一个整型变量,保存整数的和设置另一个变量,保存刚读入的整数每读入一个整数,将它累加到整数和实现需求为5个整数的处理提供循环控制程序例为实现循环,设置变量i,保存循环次数(计数器)。while语句检查条件i<5控制循环终止循环条件不成立时执行后面的语句#include<stdio.h>main(){intsum,x;inti; /*循环变量*/sum=0;i=0;while(i<5){ scanf(“%d”,&x); sum=sum+x; i=i+1;

}printf(“sum=%d\n”,sum);}循环语句格式while(条件表达式)

语句 /*循环体*/控制逻辑表示为流程图注释表示/*注释*/条件表达式循环体成立不成立上例的另一种实现方法(实现2)讨论内存空间的使用实现1:3个整型变量实现2:5个整型变量算法实现1:存储概念实现2:数学概念程序运行和数学计算区别:存储器和赋值的概念提倡用实现1方法#include<stdio.h>main(){intx1,x2,x3,x4,x5;scanf(“%d%d%d%d%d”, &x1,&x2,&x3,&x4,&5);printf(“sum=%d\n”, x1+x2+x3+x4+x5);}语言小结(一)变量说明int float char控制语句if语句 while语句赋值语句变量=表达式算术运算(左结合)+-*/% 加减乘除求余数据类型的约束:结果取精度高的类型强制类型转换:(类型名)表达式关系运算

==!=><>=<=等于不等大于小于大于等于小于等于语言小结(二)

控制语句

if语句 while语句输入输出

scanf函数 printf函数格式转换符

%d%f%c整数浮点数字符包含命令(预处理)

#include<stdio.h>标准输入输出2.6读解程序#include<stdio.h>#include<math.h>main(){ inta,b,c; floatt1,t2; scanf(“%d%d%d”,&a,&b,&c); t1=b*b–4*a*c; if(t1==0) printf(“x=%f\n”,-(float)b/2a); elseif(t1>0){ t2=sqrt(t1); printf(“x1=%f,x2=%f\n”,(-b+t2)/(2*a),(-b-t2)/(2*a)); }else printf(“无解\n”);}强制类型转换数学函数说明求平方根流程剖析一元二次方程aX2+bX+c求解过程变量保存数学计算中的中间结果输入a,b,cb2-4act1t1=0YNt1>0输出-b/2a输出(-b+t2)/2a(-b-t2)/2a输出“无解”YN

t1t2Y格式化输入输出函数小结输入scanf(格式说明,变量地址,变量地址…);按照指定格式从标准输入文件(键盘)读数据,写入指定的变量常用&来获得变量地址(内存单元地址)输出printf(格式说明,表达式,表达式…);按照指定格式将各个表达式的值写入标准输出文件(显示器)常用格式转换符%d整数 %c字符 %f浮点数 %s字符串程序测试

测试设计考虑数据的各种取值,准备测试用例检查每个程序分支

b2-4ac等于0,大于0,小于0

测试用例

121b2-4ac=0

263b2-4ac=12

433b2-4ac=-39第二章作业

阅读教科书第二章自我测试2.3,2.4,2.5,2.6

程序设计练习(练习本)

2.192.232.293.133.17

上机作业实验2.1实验2.2第三章算法初步算法解题过程的精确描述可完全精确执行、有确定结果的有穷指令序列算法的控制结构选择结构(如:C语言的if语句)循环结构(如:C语言的while语句)顺序结构(语句组)3种结构可以满足各种算法的所有控制要求算法描述的必要性程序设计过程:算法设计+程序实现算法描述:描述解题逻辑,验证正确性独立于程序设计语言程序实现:利用程序设计语言的功能,实现算法熟悉语言的语法、语义、支撑环境算法描述方法流程图伪码伪码描述例:求5个整数之和数据对象考虑sum保存已经输入的整数之和算法描述:赋值0sum重复执行5次2.1

读入一个整数2.2

累加到sum输出整数和

sum仅考虑主要数据对象和控制结构程序实现阶段考虑数据对象和控制结构的具体实现3.1实例1:考试成绩统计任务:输入某班级人数和某课程的考试成绩(100分制),输出及格率(>60)和不及格率。基本方法逐个输入成绩,判断及格否,统计及格人数和不及格人数数据对象考虑班级人数 num及格人数 pass不及格人数 fail输入成绩 score过程描述(流程图)初值设置0pass0fail读入成绩

score读入学生人数

numnum=0score<60fail加一num减一pass加一num减一计算及格率pass/(pass+fail)和不及格率fail/(pass+fail)并输出YNYN算法的验证模拟算法的计算过程,跟踪数据的变化动作numpassfailscore初值设置00输入人数3输入分数2169输入分数1157输入分数0282输出程序结构设计流程图的结构从外层到内层顺序

循环

选择程序结构复合语句while语句if语句while条件:num==0if条件:score<60细节问题输出格式:65.5%涉及浮点数的处理程序实现#include<stdio.h>main(){intnum,pass,fail,score;

while(0!=num){

}}printf(“输入分数:”);scanf(“%d”,&score);if(score<60){ fail+=1; num-=1;}else{ pass+=1; num-=1;}num=pass+fail;printf(“passed%f\%\n”,(float)pass/num*100);printf(“failed%f\%\n”,(float)fail/num*100);pass=fail=0;printf(“请输入学生人数:”,&num);初值设置和输入学生人数输出及格率和不及格率输入分数统计及格人数和不及格人数语言现象赋值表达式pass=(fail=0) 赋值运算符= 右结合简化赋值(自反运算)pass+=1等价于pass+=1printf(“passed%d\%\n”,100*(float)pass/num);强制类型变换(类型名)表达式 改变其数据类型转义字符\%用于输出%设计方法分析Programs=Algorithms+DataStrcture

程序=算法+数据结构程序设计过程问题定义:输入输出要求(数据与格式)数据结构:分析需要保存的信息,组织数据结构算法设计:编制解题步骤程序编码:选用程序设计语言,实现解题步骤程序测试:排错和测试学习方法算法的学习(长期任务)利用变量就是存储器的概念,考虑解题过程中必须保存的数据利用3种控制结构(顺序、选择、循环),考虑数据变化过程,设计处理过程应能够熟练地设计数据组织和简单的算法程序设计语言的学习阅读程序实例,理解新的语言现象程序设计实践,上机排错调试对主要语言功能和上机编程操作应该达到十分熟练3.2实例2统计数字字符的出现次数任务统计一行输入字符中每个数字字符的出现次数数据对象考虑应保存10个整数;设置数组digits[10]每个元素存一个数字的出现次数数字字符a保存在digits[a]中输入字符ch算法的描述(伪码)设digits数组元素为0读入一个字符

ch如果ch不是换行符,则3.1

如果ch是数字字符,则3.1.1digits[ch]加一3.2

读入一个字符

ch3.3

重复处理3输出digits数组算法细化设digits数组元素为0设循环变量i为0当i小于10时2.1

设0

digits[i]2.2i加一2.3

重复2输出digits数组设循环变量i为0当i小于10时2.1

输出digits[i]2.2i加一2.3

重复2程序结构设计算法过程分析3个循环:主算法、2个细化算法程序结构采用while语句循环控制:换行符检查、数组下标数据结构一维整数数组下标问题:数字字符

整数(利用ASCII值)#include<stdio.h>main(){ intdigits[10],i=0; charch; while(i<10) digits[i++]=0; scanf(“%c”,&ch); while(ch!=‘\n’){ digits[ch–‘0’] +=1; scanf(“%c”,&ch); } i=0; while(i<10){ printf(“%d:%d”,i,digits[i]); i++;} }利用字符的ASCII值程序实现自增运算赋值后加1整数数组程序说明数组声明类型数组名[数组大小N];数组引用数组名[表达式]下标范围0到N-1自增和自减运算(++,--)前置: ++i等效于i=i+1后置: i++计算在得到i的值之后,将i加一字符的运算以其ASCII值参加整数运算C语言支持不同类型的混合运算数据类型和运算数据类型的作用说明内存空间的需求说明可参加的运算(不同类型数据的机器指令不同)C语言的基本数据类型和转换说明符类型内存空间类型内存空间int整型机器字长%dchar字符型1个字节%cshort短整型2个字节%dfloat浮点数4个字节%flong长整型4个字节%lddouble双精度数8个字节%lfunsigned无符号整数机器字长%u结构化程序方法自顶向下首先描述外层核心算法与主要数据对象突出解题逻辑,忽略细节控制结构不超过两层循环限制了算法的难度逐步求精在确立了外部算法的基础上逐步描述各个细节算法及其相关数据对象(如:上例中的digits初始化和输出)复杂情况下,细节算法仍应进一步逐步求精数据对象与变量数据对象的设置分析算法中,需要保存的数据有明确的意义,不多不少,避免重复变量的设置为数据对象的保存提供存储空间提供数据结构(如:数组等)避免同一变量在不同时刻代表不同的数据对象影响程序可读性的关键因素之一3.3实例3计算最大公约数任务给定两个正整数,计算最大公约数算法(欧几里德算法)

n 如果m整除ngcd(m,n)=gcd(n,mod(m,n))否则条件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论