




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章 C语言概念及编程环境1、C语言:是人们在计算机上,为完成某项工作而运用的一个程序设计工具。2、程 序:是人们为完成某项工作,用计算机语言编排的一系列过程与步骤。1、1 一个C语言程序(1) 在e盘上建一个文件夹名为:cpp(2) 双击Visual C+系统FileNewFileC+source File右边File处写你要建的文件名:时间换算在其下面的Location即路径名处写:e:cpp(事先建好的文件夹) ok,如图1.1所示,在出现的界面(文档窗口)上你可敲入C程序,敲入的C程序如下:先有一个程序设计的直接感性认识:例1、1 在终端上输入秒数,程序将这些秒数化成小时、分钟、秒#include /系统提供的文件包,含预处理命令。系统所有的输入/输出函数都组织在stdio.h中int main() /主函数 int sec, min, hrs; /定义整型变量,秒,分钟,小时 printf(nEnter a number of seconds:); / 输出字符串Enter a number of seconds: scanf(%d,&sec); /输入秒数,放到变量sec中 min=sec/60; /秒化成分钟,送到变量min中 sec=sec%60; /求余秒,秒数求余除后,余下的秒数送到sec中 hrs=min/60; /分钟化成小时 min=min%60; /求余下的分钟数printf(The converted time is :n); /打印字符串The converted time is :(转换成的时间是:)printf(%d hours(小时) %d minutes(分钟) %d seconds(秒)n,hrs,min,sec); /打印小时分钟秒 return 0; 图1.1 建立C语言程序对话框敲入程序之后,单击BuildBuild是是!(编译运行),便出现图1.2的结果。 图1.2 程序运行结果运行结果:屏幕上输入 5000秒,机器用你编写的如上程序,换算成1小时23分20秒。说 明:1、main()是程序中的主函数。2、int是整型,其后面的sec , min , hrs分别被定义成整型变量。3、printf(nEnter a number of seconds:);是打印语句,在屏幕上打印出Enter a number of seconds: 字样,n是回车(并换到下一行)。4、scanf(%d,&sec);是输入语句,%d说明从屏幕上输入的是十进制整型数据,&sec表示输入的数据放在sec变量中。5、min=sec/60;是将输入的秒数被60除,变成分钟后送到变量min中。6、sec=sec%60;是将输入的秒数求余除,余下的秒数送到sec中,%是一个针对整数的运算,代表求余。7、hrs=min/60;表示分钟被60除,变成小时后送到变量hrs中。8、min=min%60;表示分钟被60求余除,余下的分钟送到min。9、printf(%d hours(小时) %d minutes(分钟) %d seconds(秒)n,hrs,min,sec);是在屏幕上打印出换算完的小时、分钟、秒。%d hours(小时)对应hrs,%d minutes(分钟)对应min。%d seconds(秒)对应sec。n(回车)表示打印完后,打印头放在下一行上。10、return 0;返回语句,一般函数结束后都要返回调用本函数的下一条语句。这里main()是主函数,用的是return 0。1、2 C语言程序设计语法1、C语言中的主要“单词”(1)标识符 C语言的标识符由字母、数字和下划线组成,其中第一个字符必须是字母或下划线。例如,_name,sec是2个合法的标识,而left&right,3has就是2个非法的标识符。还有在C语言中,标识符中的英文字母大小写形式是有区别的,例如,sun和Sun是不同的标识符。(2)保留字 保留字(又称关键字)是C语言规定的、赋予特定含义和有专门用途的标识符,它们主要与数据类型和语句有关。如int(整数类型)、float(实数类型)、char(字符类型)、typedef(自定义类型),以及与语句相关的if(如果语句)、else(否则语句)、while(循环语句)、for(循环语句)、break(跳出循环语句)等。(3)用户自定义标识符 用户自定义标识符包括程序中定义的变量名、数据类型名、函数名和符号常量名。一般来说,为了便于程序阅读,经常取有意义的英文单词作为用户自定义标识符,如前面程序中的sec、min、hrs等。(4)常量 常量是有数据类型的,例如,整型常量132,实型常量15.36,字符型常量 a ,字符串常量 “ hello world ” 等。(5)运算符 运算符表示对各种数据类型数据对象的运算。如:+(加)、(减)、*(乘)、/(除)、%(求余)、(大于)、=(大于等于)、(小于)、b)? a:b;它是说:如果(ab)条件为真,则条件表达式取值a,否则取值b。(6)分隔符 如:、和 #等都是分隔符2、C语言的主要语法单位(1)表达式运算符与运算对象(可以是常量、函数、变量等)有意义的组合,就形成了表达式,如2+3*4和i+2j等。表达式中可以包含多种数据类型的运算符,运算符有优先级。例如,表达式i+2j中,先计算i+2,再做关系比较运算“ ”,+比bb)分支语句 不大于 分支语句实现分支控制过程,根据不同的条件 x = b x = a执行不同的语句(或语句模块)。具体有2种形式,即双路分支的if else语句和多路分支的switch语句 。 输出大的数: x 例如下列if-else语句求变量a和b的较大值,并把 图1.3 例1.2流程图它赋给x。这个if-else语句首先判别if后面的表达式(ab),如果条件成立,执行x=a;否则执行x=b;if(ab) x=a;else x=b;例1、2 在终端上输入2个整数,程序判别这2个数谁大,然后将大的数输出,流程如图1.3所示,用if语句。#include int main() int a,b,x;scanf(%d, %d,&a,&b);/ 如下2条语句,可用1条语句x=(ab)? a:b;来代替if(ab) x = a;else x = b;printf(大的数是 %dn,x);return 0;其中:if(ab) x=a; else x=b; 这2条语句是求a和b的值谁大,并把大的值赋给x。首先判别 if后面的(ab),如果条件成立,就执行”x=a;”,否则执行”x=b;”。最后把大的一个数打印出来。如果将这2条语句注释掉,改成一条语句 x=(ab)? a:b;实现效果是一样的。c)循环语句C语言实现循环控制的过程具体有3种形式,即while语句、for语句、do while语句。例1、3 用while循环语句求1到100的和,并把结果存在变量sum中,最后再输出。#include int main() int sum=0, i=1; /初始化sum和i while(i=100) /循环体开始 通过循环把1、2、3100分别加到sum中 sum = sum + i; i = i + 1; /循环体到此结束 定义2个整型变量,并赋 printf(%dn,sum); 初值sum=0,i=1其中i = 100是循环执行的条件,只要这个 不小于等于条件被满足,一对大括号 中的循环体就会一直 while(i=100)反复执行。应该注意到,由于循环体每循环一次,i被加1( i = i + 1),所以,当循环到一定的时候, 小于等于i 的值就会超过100,即循环条件i =100不再 sum = sum + i ;满足了,循环就结束了。流程如图1.4所示 i = i + 1 ;d) 复合语句(Compound statement) 用一对大括号 将若干个语句顺序组合在一起就 形成了一个复合语句。例如,上面的while语句中的 输出1到100 的累加和 sum = sum + i ; i = i + 1 ; 图1.4 例1.3流程图(4)函数定义与调用 函数是完成特定任务的独立模块,是C语言唯一的一种子程序形式。函数的目的通常是接受0个或多个数据(称为函数的参数),并返回0个或1个结果(称为函数的返回值)。函数的使用主要涉及函数的定义与调用。函数定义的主要内容是通过编写一系列语句来规定所完成的功能。完整的函数定义涉及函数头和函数体。其中,函数头包括函数的返回值类型、函数名、参数类型;而函数体是一个程序模块,规定了函数所具有的功能。函数调用则通过传递函数的参数并执行函数定义所规定的程序过程,以实现相应功能。我们来看一下书第一章第2页,求阶乘问题是怎样用函数完成的。#include int main(void) int n,m; / 定义求阶乘的变量和它的阶乘结果变量 int factorial(int n); / 定义求阶乘的函数 scanf(%d,&n); / 输入一个数,来求它的阶乘 m=factorial(n); / factorial(n)函数去求阶乘 printf(%dn,m); / 打印求出的结成结果 / printf(%dn, factorial(int n); / 这样直接就能打印出阶乘结果,代替前两步。 return 0; / 主函数返回结束int factorial(int n) int i,fact=1; for(i=1;i=n;i+) fact=fact*i; return fact;例1、4 用函数max()判别2个数谁大。#include int main() int a,b,c; / 定义a,b放这两个数,c放其中大的那个数 int max(int,int); /声明返回整型数据并带有2个整型参数的函数 max(int,int) scanf(%d,%d,&a,&b); /输入2个数 c = max(a,b); /调用max(int,int)函数,这里将整型变量a,b的数值做为实参带给函数max printf(大的数是:%dn,c); / 打印出在子函数中求得的较大的数 return 0; 定义3个整型变量a,b,cint max(int x,int y) /主函数参数a,b的值传来给对应的x,y 声明返回整型的函数max(a,b) int d; d =( xy) ? x : y; / 判别x,y谁大,谁打谁送d 输入2个整型数放入a,b return (d); / / 将求得较大的数d的值,返回给主函数中的c c=max(a,b)(5)输入与输出C语言没有输入/输出语句,它通过调用系统库函 执行max(a,b)数中的有关函数(如printf和scanf函数)实现数据的 输出大的数 返回值赋给c输入输出。这种处理方式为C语言在不同硬件平台上 图1.5 例1.4流程图的可移植性提供了良好的基础。例如前面例题中的 scanf()和printf()函数的输入输出。 3、运行与调试(查错) 定义整型变量i,sum=0; 程序通过编辑(编写程序)语法检查,编译 i100(生成二进制代码,一般二进制文件后缀为.obj), for(i=1;i=100;i+连接生成执行文件(后缀为.exe)后,就可以在 i=100编程环境或操作系统环境中运行(Run)该程序。 i %2不等于0 例1、5 编写一个求1-100之间所有偶数之和的 如果i%2等于0C程序,并进行调试(查错)。 i%2等于0#include sum=sum+iint main() int i, sum=0; 输出能被2整除的数的sum for( i = 1;i = 100; i+ )/对于重复执行的问题,用for循环语句 if( i%2 = 0) sum = sum + i ; return 0; 程序结束/printf(i=%dn, i);/此条语句无关,只是看一下到这的i值 图1.6 例1.5流程图printf(%dn,sum); return 0; 程序设计流程图,见图1.6所示。 说 明:1、for(i=1;i=100;i+)是一个循环,它表示从i等于1的时候开始循环,每循环一次i加上1(i + +),只要i的值小于等于100,这个循环就一直进行(也就是说i等于101时就退出循环了),每次循环执行的内容就是它后面的if语句。对于重复执行的问题,用for语句就能轻而易举的解决。2、if( i%2= =0 ) sum = sum+i; 表示,如果i是偶数,就将i累加到sum中。i%2= =0是如果i被2除后余数为0,则说明它是一个偶数。在C语言中,相等的判断用两个等号(= =)来表示,不相等的判断用 != 来表示。下面我们假设程序里的某个地方写错了:1、将for(i=1;i=100;i+)语句里的“ ; ”写成了“ , ”,则屏幕最下面的输出栏显示出如下信息:e:vcpp偶数之和.cpp(39) : error C2143: syntax error : missing ; before )e:vcpp偶数之和.cpp(39) : error C2143: syntax error : missing ; before )Error executing cl.exe.偶数之和.exe - 2 error(s), 0 warning(s)说是有2个错误。你双击第一条信息:e:vcpp偶数之和.cpp(39) : error C2143: syntax error : missing ; before )发现一个小箭头指向for(i=1,iCustomize-(在弹出菜单上)点Toolbars-在左下的项目Toolbars里选中Debug(便在工具栏处出现调试栏,见图)-Close 你点击 程序还能一步一步执行,更便与调试。作 业:1、对C语言来说,下列标识符中哪些是合法的,哪些是不合法的? Total,_debug,Large&Tall,Counterl,begin_,2n2、改写例1.3程序,求1到200的累加和。3、求1100中能被6整除的所有整数的和,并在编程环境中验证改程序的运行结果。#include main() int i=0,m=1,sum=0; while(m=100) if(m%6=0) printf(m=%dt,m); sum=sum+m; i+; m+; printf(n); printf(1-100能被6整除的数是如上:%d个,它们的和是:%dn,i,sum); return 0;4、改写例1.5程序,求1到100中所有奇数的和。如果不用if语句,该怎样写程序? 去掉 if 语句,用 for(i=1;i=100;i=i+2) 这条语句就行了。5、个位数是1,且能被3整除的3位数有多少?#include main() int i=0,m=101; while(m=991) if(m%3=0) printf(m=%dt,m); i+; m+=10; / 可以写成:m = m + 10; printf(个位上的数是1,且能被3整除的三位数共有如上:%d个n,i); return 0;6、改写例1.2程序,从终端上输入3个数,判断哪个数最大并将其打印出来。#include “stdio.h”main() int a,b,c,max; printf(“请输入三个数:n”); scanf(“%d,%d,%d”,&a,&b,&c);max=a;if(maxb)max=b;if(maxc)max=c;printf(“最大数为:%dn”,max);7、从终端上输入半径r 的值,求圆周长:L= 2 * pi * r,圆面积:S = pi * r * r 。#include float main() float r,L,S;pi=3.1415926; /此行有错 S;应是,号 printf(请输入圆的半径 r n); scanf(%f,&r); L = 2 * pi * r; /周长 此行有错 r;是;应在英文环境下敲; S = pi * r * r ; /面积printf( 圆的半径为:%6.2,圆的周长为:L = %6.2fn,r,L); /此行有错前个应 %6.2f printf( 圆的半径为:%6.2f,圆的面积为:S = %6.2fn,r,S);程序中有几处语法错误,将其敲入机器后,编译运行,按机器指出的错误,逐个排除后,得出准确结果。若敲入的r的值是1.5,则其周长是:L= 9.42 ,面积是:S= 7.07。注 意:%6.2f是一共输出6位数,小数点前3位,小数点后2位,小数点1位。若敲入的半径较大,如r值是888.5,输出的周长就是2480074.50,说明是按实际数输出。不受一共6位的限制。8、改写书1.4节中的流程图1.2求1100中能被6整除的所有整数的和。(见3题)#include int main()int sum=0,i;for(i=1;i1),请设计一个流程图判别n是否为一个素数(只能被1和自己整除的整数,1不是素数,2是素数),并分析该流程图中哪些是顺序结构、分支结构与循环结构。(见本教案第4章 例4.5 第4章第5页)分析此题: 判断一个数m是否为素数,需要检查该数是否只能被1和自身整除,而不能被
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广西来宾市忻城县政府投资审计中心招聘见习生2人模拟试卷及完整答案详解1套
- 2025湖南岳阳市平江县事业单位第一批公开选调工作人员考前自测高频考点模拟试题及一套答案详解
- 2025年上半年四川绵阳市游仙区考核招聘教师31人考前自测高频考点模拟试题及1套参考答案详解
- 2025河南商丘市民权县消防救援大队招聘政府专职消防员32人模拟试卷及参考答案详解1套
- 2025海南白沙黎族自治县机关事务服务中心招聘公益性岗位人员2人考前自测高频考点模拟试题附答案详解
- 2025年阜阳颍上县人民医院引进博士研究生2人考前自测高频考点模拟试题附答案详解(完整版)
- 2025年轧钢导卫装置项目合作计划书
- 2025广东中共中山市委政法委员会所属事业单位招聘事业单位人员4人模拟试卷及完整答案详解一套
- 2025内蒙古鄂尔多斯生态环境职业学院人才引进38人考前自测高频考点模拟试题带答案详解
- 2025年福建省龙岩市武平县乡村人才振兴招聘10人模拟试卷及参考答案详解
- 高中化学-金属钠的性质及应用教学设计学情分析教材分析课后反思
- 工程量清单及招标控制价编制方案
- 04S519小型排水构筑物(含隔油池)图集
- 工程施工人员安全教育培训【共55张课件】
- 双碱法脱硫操作专项规程
- 人教版七年级上学期英语第一次月考试卷(含答案解析)
- 仿生机器鱼行业规模分析
- 胸闷病人的护理查房
- β内酰胺类抗菌药物皮肤试验指导原则(2021版)
- 北京猿人头盖骨失踪之谜
- 华中科技大学教学课件-工程传热学1王晓墨
评论
0/150
提交评论