程序
C语言程序设计经典100例(全)
103f程序1】【题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++) /*以下为三重循环*/for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}==============================================================【程序2】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}==============================================================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
C程序上机步骤
C程序上机步骤1 运行一个C语言程序的一般过程Turbo C是一个集源程序编辑、编译、连接、运行与调试于一体,用菜单驱动的集成软件环境。
运行一个C语言程序的一般过程:(1)启动TC,进入TC集成环境。
(2)输入与编辑源程序。
编辑后文件的扩展名为:.c。
(3)对源程序进行编译。
如果编译成功,则可进行下一步操作;否则,返回(2)修改源程序,再重新编译,直至编译成功。
编译成功后文件的扩展名为:.obj 。
(4)与库函数进行连接。
如果连接成功,则可进行下一步操作;否则,根据系统的错误提示,进行相应修改,再重新连接,直至连接成功。
连接成功后的可执行文件的扩展名为:.exe 。
(5)运行可执行的目标程序。
通过观察程序运行结果,验证程序的正确性。
如果出现逻辑错误,则必须返回(2)修改源程序,再重新编译、连接和运行,直至程序正确。
2 TC的启动、退出与命令菜单(1)启动Turbo C:t c ←┘启动Turbo C后,其主菜单条横向排列在屏幕顶端,并被激活,其中File主项成为当前项。
主菜单的下面,是Edit(编辑)窗口和Message(消息)窗口。
两个窗口中,顶端横线为双线显示的,表示该窗口是活动窗口。
进入Turbo C 2.0集成开发环境中后, 屏幕上显示:其中顶上一行为Turbo C 2.0 主菜单, 中间窗口为编辑区, 接下来是信息窗口, 最底下一行为参考行。
这四个窗口构成了Turbo C 2.0的主屏幕, 以后的编程、编译、调试以及运行都将在这个主屏幕中进行。
主菜单在Turbo C 2.0主屏幕顶上一行, 显示下列内容:File Edit Run Compile Project Options Debug Break/watch除Edit外, 其它各项均有子菜单, 只要用Alt加上某项中第一个字母, 就可进入该项的子菜单中。
编辑窗口的顶端为状态行,其中:.Line 1 Col 1:显示光标所在的行号和列号,即光标位置。
程序的三大结构(顺序结构、选择结构、循环结构)
程序的三⼤结构(顺序结构、选择结构、循环结构)⼀、顺序结构、选择结构、循环结构⼆、顺序结构程序按照从上到下的顺序执⾏。
三、选择结构程序按照某个条件执⾏(出⼝只有⼀个)1. if条件语句执⾏逻辑:对条件进⾏判断,如果条件返回值为true 则执⾏。
if(){ }else{} (1)单分⽀ if(饿了){ 睡觉 }(2)双分⽀ if(条件){ code; }else{ code2; } (3)多分⽀ if(条件1){ code1; }else if(条件2){ code2; }else{ code3; } (4)a.判断⼀个整数,属于哪个范围:⼤于0,⼩于0,等于0; var num = 10; if(num > 0){ code1; }else if(num < 0){ code2; }else{ code3; } b.判断⼀个整数是奇数还是偶数,并输出判断结果 var num = 111; if( num % 2 == 0 ){ code1; }else if(num % 2 != 0){ code2; } c.开发⼀款软件,根据公式(⾝⾼-108)*2=体重,可以有10⽄左右的浮动。
来观察测试者体重是否合适 var height = 200; var weight = 200; var item = ( height - 108 ) * 2; if( weight <= item + 10 && weight >= item - 10 ){ console.log("标准"); }else{ console.log("不标准"); }2.switch分⽀ 对某个固定值的判断 (1)语法: switch() { case value: 执⾏的语句; } (2)case穿透。
如果每⼀个case语句执⾏完毕之后,没有遇到 break , 让程序继续往下执⾏。
(完整版)C++必背18个经典程序
c语言入门经典必背18个程序1 、 /*输出 9*9 口诀。
共 9 行 9 列, i 控制行, j 控制列。
*/#include "stdio。
h"main(){int i,j,result;for (i=1;i<10;i++){ for(j=1;j〈10;j++){result=i*j;printf("%d*%d=%—3d",i,j,result);/*—3d 表示左对齐,占 3 位*/}printf("\n”);/* 每一行后换行 */}}2 、 /* 古典问题:有一对兔子,从出生后第3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?兔子的规律为数列 1,1,2,3,5,8,13,21.。
..*/main(){long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++){ printf(”%12ld %12ld”,f1,f2);if(i%2==0) printf("\n”);/* 控制输出,每行四个*/f1=f1+f2; /* 前两个月加起来赋值给第三个月*/f2=f1+f2; /*前两个月加起来赋值给第三个月 */}}3 、 /*判断 101-200 之间有多少个素数,并输出所有素数及素数的个数。
程序分析:判断素数的方法:用一个数分别去除 2 到 sqrt( 这个数 ) ,如果能被整除,则表明此数不是素数,反之是素数。
*/#include "math.h”main(){int m,i,k,h=0,leap=1;printf("\n");for(m=101;m<=200;m++){ k=sqrt(m+1);for(i=2;i〈=k;i++)if(m%i==0){leap=0;break;}if(leap) /* 内循环结束后, leap 依然为 1 ,则 m 是素数 */{printf("%-4d",m);h++;if(h%10==0)printf(”\n");}leap=1;}printf("\nThe total is %d”,h);}4 、 /*一个数如果恰好等于它的因子之和,这个数就称为“完数” .例如 6=1 + 2 + 3. 编程找出 1000 以内的所有完数。
程序名词解释
程序名词解释程序是指一系列按照特定顺序执行的计算机指令的集合。
简单来说,程序就是告诉计算机需要执行哪些操作以达到特定的目标。
程序由程序代码组成,可以使用不同的编程语言来编写。
编程语言是一种人和计算机都能理解的语言,它用于编写程序代码,包括算法、逻辑和计算步骤。
程序执行的过程一般分为以下几个步骤:首先,将程序代码编译或解释成计算机能够理解的机器代码;然后,计算机按照指令的顺序执行这些机器代码,逐步运算并修改数据;最后,计算机输出最终的结果或者更新相关资源。
程序可以用于各种用途,如计算、数据处理、图形处理、网络通信、媒体播放等。
程序可以很简单,只包含几行代码,也可以非常复杂,拥有上百万行代码。
程序还可以分为系统程序和应用程序。
系统程序是用于管理计算机硬件和软件资源的程序,如操作系统和驱动程序等。
应用程序是用户根据自己的需求编写的程序,如文字处理程序、电子表格程序、游戏程序等。
程序还可以按照运行方式来划分,可以分为批处理程序和交互式程序。
批处理程序是无需用户干预,自动按照预定的顺序执行的程序。
交互式程序是需要用户输入指令和数据,计算机根据用户的输入进行相应的操作和响应。
程序还可以分为单线程程序和多线程程序。
单线程程序是指只能按照顺序执行指令的程序,一次只能执行一个任务。
多线程程序是指程序可以同时执行多个任务,每个任务都是一个独立的线程,可以并行执行。
程序的设计和编写遵循一定的开发流程和规范。
一般来说,程序的设计包括需求分析、算法设计和系统设计等阶段。
然后,根据设计的结果编写程序代码。
在编写代码的过程中,需要考虑代码的可读性、可维护性和性能等方面的要求。
编写完成后,需要进行代码测试和调试,以确保程序能够正常运行并达到预期的效果。
总之,程序是一系列指令的集合,用于告诉计算机如何进行处理和计算。
程序的编写需要使用编程语言,遵循一定的开发流程和规范。
通过程序的执行,计算机可以完成各种任务和操作。
C语言程序设计经典100例(全)
103f程序1】【题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++) /*以下为三重循环*/for(j=1;j<5;j++)for (k=1;k<5;k++){if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}==============================================================【程序2】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;if(i<=100000)bonus=i*0.1;else if(i<=200000)bonus=bonus1+(i-100000)*0.075;else if(i<=400000)bonus=bonus2+(i-200000)*0.05;else if(i<=600000)bonus=bonus4+(i-400000)*0.03;else if(i<=1000000)bonus=bonus6+(i-600000)*0.015;elsebonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}==============================================================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
SRIM程序介绍
SRIM程序介绍SRIM 程序介绍SRIM 是⼀组程序,计算制⽌和各种离⼦进⼊问题。
⽅法:采⽤全量⼦⼒学治疗离⼦原⼦碰撞。
(SRIM 总是referes 的运动原⼦的“离⼦”,和所有⽬标原⼦作为“原⼦”)SRIM 包括两个主要项⽬,和⼀些特殊⽤途的程序。
SR (表制⽌和范围离⼦在简单的⽬标)。
快速创建表停车和各种离⼦的问题在很宽的频带离⼦能量。
TRIM (运输的离⼦的物质)是蒙特卡罗计算如下离⼦纳⼊⽬标,使详细的计算的能源转移到每⼀个⽬标原⼦碰撞。
(多层次的复杂⽬标)蒙特卡罗模拟⽅法(M-C ⽅法) 通过计算机模拟跟踪⼀⼤批⼊射粒⼦的运动。
粒⼦的位置、能量损失以及次级粒⼦的各种参数都在整个跟踪过程中存储下来, 最后得到各种所需物理量的期望值和相应的统计误差。
在M-C ⽅法计算过程中采⽤连续慢化假设,即⼊射离⼦与材料靶原⼦核的碰撞采⽤两体碰撞描述, 这⼀部分主要导致⼊射离⼦运动轨迹的曲折, 能量损失来⾃于弹性能量损失部分, ⽽在两次两体碰撞之间认为⼊射离⼦与材料中的电⼦作⽤连续均匀地损失能量, 当⼊射为重离⼦时可认为在这期间⼊射离⼦作直线运动, 能量损失来⾃于⾮弹性能量损失部分。
两次两体碰撞之间的距离以及碰撞后的参数通过随机抽样得到。
TRIM (运输的离⼦的物质)是蒙特卡洛蒙特卡罗微调是⾮常灵活:它将处理离⼦能量从10 EV ⾄2 GEV ,靶材最多⾼达8层,由12个不同的元素组成。
它将计算出三维分布的离⼦和所有相关离⼦的能量损失的动⼒学现象的:⽬标损伤,溅射,电离,⽣产声⼦。
所有⽬标原⼦级联的⽬标是在遵循的细节。
这个程序是更准确地计算离⼦幅度超过运输计划中使⽤简项⽬以⽣产各种表格上⾯所述。
Stopping power:⼊射粒⼦在单位路程上损失的能量(-dE/dx).射程:⼊射粒⼦从进⼊靶起到停⽌点所通过的总的路程,称为射程. Projected Range 预测范围以Rp 表⽰射程在⼊射⽅向投影的长度,称作投影射程.t R 是粒⼦在靶物质中所⾛过的路程,p R 是与⼊射⽅向平⾏的射程, p R 是与⼊射⽅向垂直的射程,p R 与⼊射表⾯垂直的射程。
C++经典程序100例
}
==============================================================
【程序2】
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高
于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提
bonus6=bonus4+200000*0.3;
bonus10=bonus6+400000*0.15;
if(i<=100000)
bonus=i*0.1;
else if(i<=200000)
bonus=bonus1+(i-100000)*0.075;
else if(i<=400000)
2.程序源代码:
main()
{
long int i;
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf("%ld",&i);
bonus1=100000*0.1;bonus2=bonus1+100000*0.75;
bonus4=bonus2+200000*0.5;
【程序3】
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后
的结果满足如下条件,即是结果。请看具体分析:
2.程序源代码:
#include "math.h"
什么是指令?什么是程序?简述程序在计算机中的执行过程
什么是指令?什么是程序?简述程序在计算机中的执行过 程
问题. 什么是指令?什么是程序?简述程序在计算机中的执行过程。 解答:指令:人为输入计算机,由计算机识别并执行一步步操作的命令的形式称为指令。 程序:一系列指令的有序集合称为程序。 程序在计算机中是按序执行的,CPU通过程序计数器PC控制程序的执行顺序,一般情况下程序是按序执行的,当执行转移、 调用、返回等指令时,程序转移到相应的目的地址处执行。CPU根据程序计数器PC中的地址将欲执行指令的指令码从存储器 中取出,存放在IR中,ID对IR中的指令码进行译码,定时控制逻辑在OSC配合下对ID译码后的信号进行分时,产生执行本条 指令所需的全
货物出口海运操作流程
货物出口海运操作流程1.海运出口运输工作,在以CIF或CFR条件成交,由卖方安排运输时,其工作程序如下:(1)审核信用证中的装运条款:为使出运工作顺利进行,在收到信用证后,必须审核证中有关的装运条款,如装运期,结汇期,装运港,目的港,是 否能转运或分批装运以及是 否指定船公司,船名,船籍与船级等,有的来证要求提供各种证明,如航线证明书,船籍证等,对这些条款与规定,咱应根据咱国政策,国际惯例,要求是 否合理与或是 否能办到等来考虑接受或提出修改要求。
(2)备货报验:就是 根据出口成交合同及信用证中有关货物的品种,规格,数量,包装等的规定,按时,按质,按量地准备好应交的出口货物,并做好申请报验与领证工作。
冷藏货要做好降温工作,以保证装船时符合规定温度要求。
在咱国,凡列入商检机构规定的“种类表”中的商品以及根据信用证,贸易合同规定由商检机构出具证书的商品,均需在出口报关前,填写“出口检验申请书”申请商检。
有的出口商品需鉴定重量,有的需进行动植物检疫或卫生,安全检验的,都要事先办妥,取得合格的检验证书。
做好出运前的准备工作,货证都已齐全,即可办理托运工作。
(3)托运订舱:编制出口托运单,即可向货运代理办理委托订舱手续。
货运代理根据货主的具体要求按航线分类整理后,及时向船公司或其代理订舱。
货主也可直接向船公司或其代理订舱。
当船公司或其代理签出装货单,定舱工作即告完成,就意味着托运人与承运人之间的运输合同已经缔结。
(4)保险:货物订妥舱位后,属卖方保险的,即可办理货物运输险的投保手续。
保险金额通常是 以发票的CIF价加成投保(加成数根据买卖双方约定,如未约定,则—般加10%投保)。
(5)货物集中港区:当船舶到港装货计划确定后,按照港区进货通知并在规定的期限内,由托运人办妥集运手续,将出口货物及时运至港区集中,等待装船,做到批次清,件数清,标志清。
要注意特别注意与港区,船公司以及有关的运输公司或铁路等单位保持密切联系,按时完成进货,防止工作脱节而影响装船进度。
程序的结构
立,若成立则再一次执行“语句组”。如此循环。
条件的表达
1、关系表达式 “关系表达式”就是用关系运算符连接起来的式子。 关系表达式的值只有两个:或者是真(True,即条件成立), 或者为假(False,即条件不成立)。
程序的结构
1、顺序结构 2、分支结构 3、循环结构
顺序结构
程序按照从上到下,从左到右的顺序执行。
分支结构
有一个条件判断语句,程序运行到条件判断 语句时,计算机会判断“条件”是否成立。 如果条件成立就执行“语句组1”(不执行 语句组2),如果条件不成立就执行“语句 组2”(不执行语句组1)。
循环结构
在VB中,通常用逻辑运算符将多个关系表达式组合起来, 用以表示较复杂的条件。
逻辑运算符
逻辑运算符及含义
逻辑运算符
含义
Байду номын сангаас
举例
运算结果
Or
或
a or b
只要条件a或者条件b成立,条件就成立。
And
与
a and b
条件a和条件b都成立,条件才成立。
Not 是 取 反 的 意 思 , 即 如 果 条 件 a成 立 ,
关系运算符
关系运算符
含义
=
等于
<
小于
>
大于
<=
小于或等于
>=
大于或等于
<>
不等于
举例 "abc"="ab"
程序设计的主要过程
程序设计的主要过程程序设计就像是盖房子,是一个充满创意又需要严谨规划的过程。
程序设计的开始,就像在脑海里勾勒房子的蓝图。
你得有个想法,这个想法可不是随随便便冒出来的。
就好比你想要一个温馨的家,那这个家得有几间房,每个房间用来做什么,都得心里有数。
在程序设计里,这就是确定需求。
你得清楚这个程序是用来干嘛的,是给人算账的小工具,还是让人玩得开心的小游戏?这可不能含糊。
要是没弄清楚需求就动手,那就像没计划好就盖房子,最后盖出来的可能不是自己想要的,那可就麻烦大了。
有了想法之后,就开始设计框架。
这就好比给房子打地基和搭框架。
地基得稳,框架得结实。
在程序里,这个框架就是程序的结构。
你要想好各个模块怎么组合,数据怎么流动。
比如说做一个电商平台的程序,用户模块、商品模块、订单模块之间怎么联系,就像房子里客厅、卧室、厨房的布局一样重要。
要是模块之间乱得像一团麻,那程序运行起来就像摇摇欲坠的破房子,随时可能出问题。
这时候啊,你得对整个程序的运行流程有个清晰的把握,就像建筑工人知道每一块砖该放在哪里一样。
接下来就是编写代码啦,这就像用一块块砖头盖房子。
每一行代码都像是一块砖,要仔细地码放。
代码得简洁明了,就像砖头得质量好、形状规则。
要是代码写得乱七八糟,就像用歪歪扭扭的砖头盖房子,不仅难看,还容易塌。
而且啊,写代码的时候要遵循一定的规则,就像盖房子要符合建筑规范一样。
你可不能乱写一气,想怎么来就怎么来。
比如说在编程里变量的命名要有意义,不能随便取个名字让人摸不着头脑。
这就像你给家里的房间取名,总不能乱取吧,不然自己都会迷糊。
在编写代码的过程中,测试就像给房子做检查。
你得看看有没有漏洞,有没有不稳定的地方。
这就像检查房子的墙壁有没有裂缝,屋顶会不会漏水一样重要。
在程序里,可能会有一些隐藏的错误,就像房子里有些小毛病不容易被发现。
你得用各种测试方法,就像用不同的工具检查房子一样。
比如说单元测试,就像检查每个房间单独的情况,集成测试就像检查各个房间连接起来之后整体的情况。
程序设计语言分为三大类
程序设计语言分为三大类程序设计语言是计算机科学领域中的重要组成部分,它们用于编写和组织计算机程序。
根据语言的不同特点和用途,程序设计语言可以分为三大类:低级语言、高级语言和自然语言。
一、低级语言低级语言是与计算机硬件直接交互的语言,通常被称为机器语言或汇编语言。
机器语言是由二进制代码组成的,它直接与计算机的指令集相对应。
而汇编语言则是一种将机器语言指令翻译成容易理解的文本形式的语言。
由于低级语言与硬件直接交互,因此它们的执行速度非常快,但编写和调试低级语言程序相对复杂,需要对计算机硬件有深入的了解。
二、高级语言高级语言是相对于低级语言而言的,它更加抽象和易于理解。
高级语言使用更接近自然语言的语法和结构,使得程序员可以更方便地表达算法和逻辑。
高级语言可以通过编译器或解释器将源代码翻译成机器语言或字节码,从而被计算机执行。
常见的高级语言包括C、Java、Python等。
高级语言的优势在于提高了开发效率,代码可读性强,同时也提供了更强大的功能和抽象能力。
三、自然语言自然语言是人类日常交流和思维的语言,如中文、英文等。
尽管自然语言不是为计算机编程而设计的,但在某些情况下,人们可以使用自然语言来编写或描述计算机程序。
自然语言编程的目标是使非专业人士能够通过自然语言与计算机进行交互。
虽然自然语言在表达复杂的逻辑和算法时存在一定的局限性,但它具有易于理解和使用的优点,可以降低编程门槛,使更多的人参与到程序设计领域中来。
结论程序设计语言分为低级语言、高级语言和自然语言三大类。
低级语言与硬件直接交互,执行速度快但编写复杂;高级语言更抽象和易于理解,提供了更高的开发效率和代码可读性;自然语言虽然在表达逻辑和算法时存在局限性,但却具有易于理解和使用的优点。
在实际编程中,我们可以根据需求和目标选择适合的程序设计语言,以满足不同场景下的需求。
程序设计基本概念
程序设计基本概念程序设计啊,就像是盖房子。
你看,咱们要盖房子得有个规划吧,程序设计也一样,得先有个思路。
这思路就好比房子的设计图,没这图,建筑工人不知道咋动工,程序员没有思路也不知道代码该咋写。
咱就说盖个简单的小房子,你得想这房子是干啥用的,住人啊,还是放东西?这就和程序设计里确定程序的功能差不多。
要是做个计算器程序,那功能就是计算呗,简单又直接。
就像小房子功能就是住人,那就得有卧室,有客厅这些基本的空间一样。
在程序设计里有变量这个概念。
这变量啊,就像是房子里的各种容器。
比如说,你有个盒子,今天你往里面放苹果,明天可能就放香蕉了。
变量也这样,它可以存这个数,等会儿又能存另外一个数。
你要是做个程序统计一天的温度变化,这个温度就是个变量,不同时间它的值就不一样,就像盒子里的东西换来换去。
函数就更有意思了。
函数像是房子里的小机器,每个小机器都有它特定的功能。
比如说有个榨汁机,你把水果放进去,它就给你出果汁。
函数呢,你给它一些数据,它就按照设定好的规则给你返回个结果。
就像做一个计算两个数之和的函数,你把两个数给到这个函数,它就把和给你算出来。
这就像你把水果放进榨汁机,它就吐出果汁一样自然。
程序里还有循环结构。
这循环就像你每天都要做的一些重复性的事情。
比如说你每天早上都要刷牙洗脸,这就是个循环。
在程序里,如果要计算1到100的和,你不能一个一个去加,那多麻烦啊。
这时候就用循环,让计算机按照一定的规则不断地重复做加法这个操作,就像你每天都机械性地做刷牙洗脸这个动作一样,按照顺序一步一步来。
再说说条件判断。
这就好比你出门前看看天气决定穿啥衣服。
如果是大晴天,你可能就穿短袖;要是下雨天,那就得拿伞穿雨衣。
在程序里也是这样,根据不同的条件,程序做出不同的反应。
比如做一个登录程序,要是输入的用户名和密码正确,那就让用户登录进去,要是不对,就提示错误。
这和看天气穿衣服是一个道理啊,不同的情况有不同的应对方式。
那程序设计里的对象呢?对象就像是一个完整的小世界。
运行C语言程序的步骤
运行C语言程序的步骤:1.编辑(把程序代码输入,交给计算机)。
2.编译(成目标程序文件.obj)。
编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。
编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;语义检查和中间代码生成;代码优化;目标代码生成。
主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。
3.链接(成可执行程序文件.exe)。
链接是将编译产生的.obj文件和系统库连接装配成一个可以执行的程序。
由于在实际操作中可以直接点击Build从源程序产生可执行程序,可能有人就会置疑:为何要将源程序翻译成可执行文件的过程分为编译和链接两个独立的步骤,不是多此一举吗?之所以这样做,主要是因为:在一个较大的复杂项目中,有很多人共同完成一个项目(每个人可能承担其中一部分模块),其中有的模块可能是用汇编语言写的,有的模块可能是用VC写的,有的模块可能是用VB写的,有的模块可能是购买(不是源程序模块而是目标代码)或已有的标准库模块,因此,各类源程序都需要先各自编译成目标程序文件(2进行机器指令代码),再通过链接程序将这些目标程序文件连接装配成可执行文件。
4.运行(可执行程序文件)。
上述四个步骤中,其中第一步的编辑工作是最繁杂而又必须细致地由人工在计算机上来完成,其余几个步骤则相对简单,基本上由计算机来自动完成。
附:在TC中菜单命令与快捷键:1.主菜单的项目和功能表项目功能2.常用编辑命令⑴光标移动←光标左移一格↑光标上移一行Home 光标移至行头Pgup 光标移至上页⑵插入、删除Insert 打开/关闭插入功能Ctrl+Y 删除一行⑶块命令:Ctrl+KB 标记块头Ctrl+KK 标记块尾Ctrl+KC 复制块Ctrl+KY 删除块⑷其他Ctrl+QF 查找Ctrl+QA 查找并替换Ctrl+U 撤消正在进行的操作3.快速参考行F1——Help 打开帮助窗口F5——Zoom 扩大编辑窗口到整个屏幕 F6——Switch 切换活动窗口F7——Trace 单步执行,遇到函数,跟踪进入函数内部F8——Step 单步执行,遇到函数,直接完成函数调用F9——Make 编译连接程序,生成可执行文件F10——Menu 回到主菜。
程序公开公式
程序公开公式哎呀,说起“程序公开公式”,这可不是个简单的事儿。
先给您讲讲我遇到过的一件事儿吧。
有一次,学校组织了一个编程比赛,要求同学们设计一个简单的程序来解决数学问题。
其中有个小组,他们设计的程序看起来很厉害,但是在解释怎么得出结果的时候,却含含糊糊,让人摸不着头脑。
这就像一个黑盒子,你只知道输入进去,能得到一个结果,但是中间到底发生了什么,完全不清楚。
程序公开公式,简单来说,就是把程序运行的步骤和规则明明白白地展示出来,就像我们做数学题,要把解题步骤一步一步写清楚一样。
比如说,我们常见的计算器程序。
当我们输入一个数字,然后按下某个运算符号,再输入另一个数字,最后按下等于号得出结果。
这个过程看似简单,但背后其实有一套复杂的程序在运行。
程序公开公式就是要把这些复杂的计算过程和规则,用大家能理解的方式呈现出来。
想象一下,如果我们在网上购物,网站背后的价格计算程序不公开,那我们怎么知道自己是不是被多收了钱呢?又或者,我们使用导航软件,如果不知道它规划路线的程序公式,万一给我们指了一条绕远的路,那不是很耽误事儿嘛。
在学校的编程课上,老师也特别强调程序公开公式的重要性。
就拿做一个小游戏来说,如果程序不公开,同学们怎么能知道得分的规则是怎么定的,怎么能玩得尽兴呢?程序公开公式,还能帮助开发者之间相互学习和交流。
大家可以看看别人的程序是怎么设计的,有哪些好的地方可以借鉴,哪些不足可以避免。
这就像是打开了一扇窗户,让大家的思路更加开阔。
再比如,现在很多手机应用,有些做得好,有些却让人用得很不爽。
如果这些应用的程序都能公开公式,那开发者就能更好地改进,用户也能更清楚地知道自己的隐私和数据是怎么被处理的。
总之,程序公开公式对于保障公平、促进交流和提高质量都有着重要的意义。
就像我们在生活中,希望一切都能清清楚楚、明明白白,程序也是一样,公开了公式,才能让大家用得放心,用得明白。
回想当初那个编程比赛小组,如果他们能把程序公开公式做得好,肯定能在比赛中取得更好的成绩,也能让大家从他们的设计中学到更多的东西。
(完整版)C语言必背18个经典程序
C语言必背18个经典程序1、/*输出9*9口诀。
共9行9列,i控制行,j控制列。
*/#include "stdio.h"main(){int i,j,result;for (i=1;i<10;i++){ for(j=1;j<10;j++){result=i*j;printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/}printf("\n");/*每一行后换行*/}}2、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?兔子的规律为数列1,1,2,3,5,8,13,21....*/main(){long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++){ printf("%12ld %12ld",f1,f2);if(i%2==0) printf("\n");/*控制输出,每行四个*/f1=f1+f2; /*前两个月加起来赋值给第三个月*/f2=f1+f2; /*前两个月加起来赋值给第三个月*/}}3、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
*/#include "math.h"main(){int m,i,k,h=0,leap=1;printf("\n");for(m=101;m<=200;m++){ k=sqrt(m+1);for(i=2;i<=k;i++)if(m%i==0){leap=0;break;}if(leap) /*内循环结束后,leap依然为1,则m是素数*/{printf("%-4d",m);h++;if(h%10==0)printf("\n");}leap=1;}printf("\nThe total is %d",h);}4、/*一个数如果恰好等于它的因子之和,这个数就称为“完数”。
管理咨询的基本流程有哪些
管理咨询的基本流程有哪些 管理咨询是有基本程序的,所以很多的⼈都会想知道管理咨询的具体步骤。
下⾯为您精⼼推荐了管理咨询的基本流程,希望对您有所帮助。
管理咨询的基本流程 (⼀)业务洽谈阶段 业务洽谈阶段是从客户有咨询需求开始,经过咨询机构和客户的相互了解、洽谈,直⾄签订管理咨询服务合同为⽌的全过程。
此阶段包括以下内容: 1.获取咨询需求信息; 2.与客户初步洽谈; 3.进⾏预备调查; 4.撰写项⽬建议书; 5.展⽰咨询机构实⼒; 6.进⾏商务洽谈; 7.管理咨询服务合同的确认与签订。
(⼆)诊断阶段 诊断阶段是从依据咨询服务合同着⼿准备咨询开始,经过调研分析明确客户存在的问题和产⽣问题的原因、理清改善建议的⽅向和重点、编写诊断报告书,直⾄向客户汇报交流使诊断报告得到认可为⽌的全过程。
此阶段包括如下内容: 1.进驻客户单位前的准备; 2.召开项⽬启动会; 3.开展调研分析; 4.提出解决问题的思路和框架; 5.撰写诊断报告; 6,汇报和提交诊断报告。
(三)改善⽅案设计阶段 改善⽅案设计阶段是将诊断报告中解决问题的思路和框架,经过详细设计使之成为可操作的、得到客户相关⽅⾯认可的解决⽅案⽂件的全过程。
此阶段包括如下内容: 1.改善⽅案的形成; 2.改善⽅案的研讨和修订; 3.改善⽅案的汇报与提交。
(四)实施指导与项⽬总结阶段 实施指导与项⽬总结阶段是指改善⽅案被客户认可后,咨询机构在⼀定时间段内指导、协助客户实施⽅案并最终结束咨询项⽬的过程。
此阶段包括如下内容: 1,帮助客户制定实施计划; 2.对客户进⾏相关培训; 3.对实施中的重点部分进⾏辅导; 4.解决实施中出现的问题,并对⽅案进⾏修改与完善; 5.对实施效果进⾏评估; 6.进⾏正式的项⽬总结。
管理咨询的程序 接洽咨询阶段 客户来源⼤致分为慕名⽽来、第三⽅介绍、咨询组织⾃荐三种。
咨询组织应派出具有丰富知识和经验的⾼级咨询顾问或主要负责⼈与客户负责⼈接洽,了解客户的要求和意图,权衡受理能⼒,判断受理条件。
语言处理程序
语⾔处理程序在软考的复习过程中,⼀直认为语⾔处理程序⾮常抽象,在做题的时候也是错⾮常多(尽管这部分题不多哈)。
在进京赶考之前总结⼀下⾃⼰薄弱的地⽅。
语⾔处理程序就是能够将⾼级语⾔或汇编语⾔编写的程序翻译成某种机器语⾔程序,使程序能够在计算机上执⾏。
也就是处理⼀些本不能够直接执⾏在计算机上的语⾔的⼀些程序,⽽这些语⾔就叫做源程序,经过语⾔处理程序处理成计算机可直接执⾏的程序。
假设感到⾮常抽象的话请看下图:源程序主要就是汇编语⾔或⾼级语⾔编写的。
语⾔处理程序主要分为汇编程序、编译程序和解释程序三种。
分别说明下⾯三种语⾔处理程序的原理:1、汇编语⾔汇编语⾔是为特定的计算机或计算机系统设计的⾯向机器的符号化的程序设计语⾔。
⽤汇编语⾔编写的程序称为汇编语⾔程序。
汇编程序的project是将汇编语⾔所编写的源程序翻译成机器指令程序。
2、编译程序和解释程序编译程序的解释程序的⼯作原理基本同样。
仅仅是在执⾏⽤户程序时有所差别。
它们都是对某种⾼级语⾔编写的源程序进⾏翻译。
详细例如以下:详细编译程序的⼯作原理:详细解释程序的⼯作原理:中间代码的级别不同⼀时候也会有影响。
级别越⾼就会越接近于机器语⾔。
⼆者差别:解释程序不产⽣源程序的⽬标程序。
⾼级语⾔编译与解释⽅式的⽐較:(1)效率:编译⽐解释⽅式可能取得更⾼的效率。
由于源程序仅仅须要被编译程序翻译⼀次,就能够多次执⾏。
尽管编译程序除了对源程序进⾏语法和语义分析外。
还要⽣成源程序的⽬标代码并进⾏优化。
(2)灵活性。
解释⽅式⽐编译⽅式更灵活。
因为解释程序须要重复检查源程序。
(3)可移植性。
解释器⼀般也是⽤某种程序设计语⾔编写的,因此仅仅要对解释器进⾏⼜⼀次编译,就能够使解释器执⾏在不同的环境中。
程序设计基础听课笔记
9. 文件与输入输出
文件打开、读取、写入、关闭
FileInputStream fis = new FileInputStream("file.txt");
从文件中读取数据并输出到控制台
XXXX年XX月XX日
10. 异常处理
异常、try-catch语句、finally语句
计算数组元素的和
XXXX年XX月XX日
7. 面向对象编程基础
类、对象、封装、继承、多态
class Dog { ... } Dog myDog = new Dog();
创建一个Dog对象并调用其方法
XXXX年XX月XX日
8. 字符串处理
字符串声明、拼接、比较、遍历
String str = "Hello"; str += " World";
try { ... } catch (Exception e) { ... } finally { ... }
处理可能出现的异常
程序设计基础听课笔记
日期
主题/章节
关键概念/术语
重要公式/代码
示例/案例
疑问/待解决
XXXX年XX月XX日
1. 程序设计入门
程序、算法、编程语言
第一个Hello World程序
输出"Hello, World!"
XXXX年XX月XX日
2. 变量与数据类型
变量、数据类型、常量
int a = 5; float b = 3.14;
计算两个数的和
XXXX年XX月XX日
3. 运算符与表达式
算术运算符、比较运算符、逻辑运算符
a + b > 10 ? "Yes" : "No";
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
音乐的录入与播放一、音乐的录入:这种工作方式,可以比作一个简单的mp3,将乐曲写在可以重复写入的存储器中,播放时,读出来再播放。
这样,只要换一个存有新的音乐的存储器,或者从外部将新的乐曲写入到存储器中,就可以播放新的乐曲,而单片机的程序并没有改变。
――――――――――――――――――――――――――――#define uchar unsigned char //定义一下方便使用#define uint unsigned int#define ulong unsigned long#include <reg52.h> //包括一个52标准内核的头文件//本课试验写入一个字节到24c02中char code dx516[3] _at_ 0x003b;//这是为了仿真设置的#define WriteDeviceAddress 0xa0 //定义器件在IIC总线中的地址#define ReadDviceAddress 0xa1sbit SCL=P2^7;sbit SDA=P2^6;sbit P10=P1^0;//定时函数void DelayMs(uint number){uchar temp;for(;number!=0;number--){for(temp=112;temp!=0;temp--) ;}}//开始总线void Start(){SDA=1;SCL=1;SDA=0;SCL=0;}//结束总线void Stop(){SCL=0;SDA=0;SCL=1;SDA=1;}//测试ACKbit TestAck(){bit ErrorBit;SDA=1;SCL=1;ErrorBit=SDA;SCL=0;return(ErrorBit);}//写入8个bit到24c02Write8Bit(uchar input){uchar temp;for(temp=8;temp!=0;temp--){SDA=(bit)(input&0x80);SCL=1;SCL=0;input=input<<1;}}//写入一个字节到24c02中void Write24c02(uchar ch,uchar address) {Start();Write8Bit(WriteDeviceAddress); TestAck();Write8Bit(address);TestAck();Write8Bit(ch);TestAck();Stop();DelayMs(10);}//老鼠爱大米uchar code dami[]={"321-|3.2_1-|3231|3_6.5-|3_5_665|65-3_2_|122_3_2|12--|"};//本课试验写老鼠爱大米的乐谱到24c02中void main(void) // 主程序{uchar i;for(i=0;dami[i]!=0;i++){Write24c02(dami[i],i);// 逐个写入到24c02的中}Write24c02(0x00,i); //写入最后一个0P10=0; //指示运行完毕while(1); //程序挂起}――――――――――――――――――――――――通过一个for循环,我们就把乐谱全部写入到了24c02中。
看到for循环的条件是dami[i]!=0,这是因为字符串的最后一个字符是0,可以作为结束的判断,这个方法在前面的音乐播放等例子中已经见到。
编译,运行,看到P10的LED亮了,乐谱已经写入。
二、读出音乐来并播放音乐我们要从上面程序写入的一个乐谱,并播放出来。
这是模拟mp3的工作方式。
获取外部的存储器的音乐数据并播放,而这个音乐数据是任意的,只要符合播放规则就可以。
请打开工程:可以看到,在左边的列表中,有3个文件,我们称为3个功能模块,main.c,24c02.c,music.c。
我们把对应功能的函数放入其中,这样可以使整个程序工程简洁易懂,维护方便。
那么,我们怎么使各个模块联合工作呢?答案是,如果在当前模块要调用其他模块里的函数或者变量,在这个模块的前面声明一下就可以了。
如在main.c模块的前面,就有:extern uchar Read24c02(uchar address); //声明外部的读24c02函数extern void play(uchar *songdata); //声明外部的音乐播放函数这样,在main.c中就可以直接调用这两个函数了。
如果调用了其他函数中声明的公共变量,也可以这样声明一下就可以了。
在编译的时候,keilC51会将每个模块分别编译,再一起连接,整个过程不用操心。
把里面的error和warning仔细解决掉就可以了。
本程序已经编译好了,可以直接使用。
下面分别列出每个模块:main.c―――――――――――――――――――――――#define uchar unsigned char //定义一下方便使用#define uint unsigned int#define ulong unsigned long#include <reg52.h> //包括一个52标准内核的头文件extern uchar Read24c02(uchar address); //声明外部的读24c02函数extern void play(uchar *songdata); //声明外部的音乐播放函数char code dx516[3] _at_ 0x003b;//这是为了仿真设置的sbit P10=P1^0;sbit K1= P3^2;sbit K2= P3^5;sbit K3= P2^4;sbit K4= P2^5;//从24c02中读出音乐来并播放音乐void main(void) // 主程序{uchar i;uchar xdata yinyue[256]; //设立一个缓冲区TMOD = 0x01; //使用定时器0的16位工作模式TR0 = 0;ET0 = 1; //定时器0中断EA = 1; //打开总中断for(i=0;yinyue[i]!=0;i++) //读出音乐来放到缓冲中{yinyue[i]=Read24c02(i);}yinyue[i]=0;while(1){play(yinyue); //播放音乐}} ――――――――――――――――――――――――――24c02.c ―――――――――――――――――――――――#define uchar unsigned char //定义一下方便使用#define uint unsigned int#define ulong unsigned long#include <reg52.h> //包括一个52标准内核的头文件#define WriteDeviceAddress 0xa0 //定义器件在IIC总线中的地址#define ReadDviceAddress 0xa1sbit SCL=P2^7;sbit SDA=P2^6;sbit P10=P1^0;/*//定时函数void DelayMs(unsigned int number){unsigned char temp;for(;number!=0;number--){for(temp=112;temp!=0;temp--) ;}}*///开始总线void Start(){SDA=1;SCL=1;SDA=0;SCL=0;}//结束总线void Stop(){SCL=0;SDA=0;SCL=1;SDA=1;}//发ACK0void NoAck(){SDA=1;SCL=1;SCL=0;}//测试ACKbit TestAck(){bit ErrorBit;SDA=1;SCL=1;ErrorBit=SDA;SCL=0;return(ErrorBit);}//写入8个bit到24c02 Write8Bit(unsigned char input) {unsigned char temp;for(temp=8;temp!=0;temp--) {SDA=(bit)(input&0x80); SCL=1;SCL=0;input=input<<1;}}/*//写入一个字节到24c02中void Write24c02(uchar ch,uchar address) {Start();Write8Bit(WriteDeviceAddress); TestAck();Write8Bit(address);TestAck();Write8Bit(ch);TestAck();Stop();DelayMs(10);}*///从24c02中读出8个bituchar Read8Bit(){unsigned char temp,rbyte=0;for(temp=8;temp!=0;temp--){SCL=1;rbyte=rbyte<<1;rbyte=rbyte|((unsigned char)(SDA)); SCL=0;}return(rbyte);}//从24c02中读出1个字节uchar Read24c02(uchar address){uchar ch;Start();Write8Bit(WriteDeviceAddress); TestAck();Write8Bit(address);TestAck();Start();Write8Bit(ReadDviceAddress);TestAck();ch=Read8Bit();NoAck();Stop();return(ch);} ――――――――――――――――――――――――――music.c――――――――――――――――――#define uchar unsigned char //定义一下方便使用#define uint unsigned int#define ulong unsigned long#include <reg52.h> //包括一个52标准内核的头文件sbit BEEP=P1^7; //喇叭输出脚sbit K1= P3^2;sbit K2= P3^5;sbit K3= P2^4;sbit K4= P2^5;uchar th0_f; //在中断中装载的T0的值高8位uchar tl0_f; //在中断中装载的T0的值低8位//T0的值,及输出频率对照表uchar code freq[36*2]={0xA9,0xEF,//00220HZ ,1 //00x93,0xF0,//00233HZ ,1#0x73,0xF1,//00247HZ ,20x49,0xF2,//00262HZ ,2#0x07,0xF3,//00277HZ ,30xC8,0xF3,//00294HZ ,40x73,0xF4,//00311HZ ,4#0x1E,0xF5,//00330HZ ,50xB6,0xF5,//00349HZ ,5#0x4C,0xF6,//00370HZ ,60xD7,0xF6,//00392HZ ,6#0x5A,0xF7,//00415HZ ,70xD8,0xF7,//00440HZ 1 //120x4D,0xF8,//00466HZ 1# //130xBD,0xF8,//00494HZ 2 //140x24,0xF9,//00523HZ 2# //150x87,0xF9,//00554HZ 3 //16 0xE4,0xF9,//00587HZ 4 //17 0x3D,0xFA,//00622HZ 4# //18 0x90,0xFA,//00659HZ 5 //19 0xDE,0xFA,//00698HZ 5# //20 0x29,0xFB,//00740HZ 6 //21 0x6F,0xFB,//00784HZ 6# //22 0xB1,0xFB,//00831HZ 7 //23 0xEF,0xFB,//00880HZ `10x2A,0xFC,//00932HZ `1#0x62,0xFC,//00988HZ `20x95,0xFC,//01046HZ `2#0xC7,0xFC,//01109HZ `30xF6,0xFC,//01175HZ `40x22,0xFD,//01244HZ `4#0x4B,0xFD,//01318HZ `50x73,0xFD,//01397HZ `5#0x98,0xFD,//01480HZ `60xBB,0xFD,//01568HZ `6#0xDC,0xFD,//01661HZ `7//35};//定时中断0,用于产生唱歌频率timer0() interrupt 1{TL0=tl0_f;TH0=th0_f; //调入预定时值BEEP=~BEEP; //取反音乐输出IO}//******************************//音乐符号串解释函数//入口:要解释的音乐符号串,输出的音调串,输出的时长串changedata(uchar *song,uchar *diao,uchar *jie){uchar i,i1,j;char gaodi; //高低+/-12音阶uchar banyin;//有没有半个升音阶uchar yinchang;//音长uchar code jie7[8]={0,12,14,16,17,19,21,23}; //C调的7个值*diao=*song;for(i=0,i1=0;;){gaodi=0; //高低=0banyin=0;//半音=0yinchang=4;//音长1拍if((*(song+i)=='|') || (*(song+i)==' ')) i++; //拍子间隔和一个空格过滤switch(*(song+i)){case ',': gaodi=-12;i++;//低音break;case '`': gaodi=12;i++; //高音break;}if(*(song+i)==0) //遇到0结束{*(diao+i1)=0; //加入结束标志0*(jie+i1)=0;return;}j=*(song+i)-0x30; i++; //取出基准音j=jie7[j]+gaodi; //加上高低音yinc: switch(*(song+i)){case '#': //有半音j加一个音阶i++;j++;goto yinc;case '-': //有一个音节加长yinchang+=4;i++;goto yinc;case '_': //有一个音节缩短yinchang/=2;i++;goto yinc;case '.': //有一个加半拍yinchang=yinchang+yinchang/2;i++;goto yinc;}*(diao+i1)=j; //记录音符*(jie+i1)=yinchang; //记录音长i1++;}}//****************************************** //奏乐函数//入口:要演奏的音乐符号串void play(uchar *songdata){uchar i,c,j=0;uint n;uchar xdata diaodata[112]; //音调缓冲uchar xdata jiedata[112]; //音长缓冲changedata(songdata,diaodata,jiedata); //解释音乐符号串TR0=1;for(i=0;diaodata[i]!=0;i++) //逐个符号演奏{tl0_f=freq[diaodata[i]*2]; //取出对应的定时值送给T0 th0_f=freq[diaodata[i]*2+1];for(c=0;c<jiedata[i];c++) //按照音长延时{for(n=0;n<32000;n++);if((!K1)||(!K2)||(!K3)||(!K4))//发现按键,立即退出播放{TR0=0;return;}}TR0=0;for(n=0;n<500;n++); //音符间延时TR0=1;}TR0=0;}―――――――――――――――――――――请打开工程,好好体验一下分模块的好处,并仔细查看一下各个函数模块,试着编译一次。