实验二选择结构程序
做改错题的一般思路:
首先修改程序中的语法错误:
(1)观察程序中有没有用到数学函数,如果用了,察看程序中是否包含了对应的头文件。
(2)观察程序中用到的输入输出函数与头文件是否对应。
(3)include命令行的格式是否正确:#开头,不能加分号
(4)函数名、函数类型、以及函数参数是否正确,函数首部不能加分号。
(5)程序中用到的变量是否都定义了,类型是否正确。
(6)输入、输出语句是否正确。
(7)大括号是否正确对应。
(8)其它语句的语法是否正确。
然后根据程序要实现的功能,修改逻辑错误:比如,对于求和算法,求和单元赋初值的位置是否正确等等。
同学们在做题的过程中要不断总结,积累宝贵经验。
读程序写运行结果:
首先分析程序的结构,然后再读,写结果时注意输出语句的格式。
P89 1.改错题
(1)正确程序为:
#include
void main()
{int a,b;
cin>>a>>b;
if(a==b)
{cout<<"a,b相等";cout< else if(a!=b) { cout<<"a,b不相等,较大的数为"; if(a>b)cout<<"a,值为:"< else cout<<"b,值为:"< } (2)正确程序为: #include #include void main() { float x,y; cin>>x; if(x<0)y=sin(x)+1; if(0<=x&&x<10) y=pow(x,2)+3/x; if(x>=10)y=sqrt(x+4); cout< } (3)正确程序为: #include void main() {float cj;char grade; printf("Please enter a score:"); scanf("%f",&cj); switch((int)cj/10) { case 10: case 9:grade='A';break; case 8:grade='B';break; case 7:grade='C';break; case 6:grade='D';break; default :grade='E';} printf("The grade of score is:%c.\n",grade); } (4)正确程序为: #include void main() {char ch; cin>>ch; if(ch>='a'&&ch<='z')ch=ch-32; else if(ch>='A'&&ch<='Z')ch=ch+32; else if(ch>='0'&&ch<='9')ch=ch-'0'; else ch=' '; cout< (5)正确程序如下: #include void main() {int day,month,year,leap=0,error=0; printf("Please input year-month-day:\n"); scanf("%d,%d,%d",&year,&month,&day); if(year%400||(year%4==0&&year%100!=0))leap=1; switch(month) {case 1:if(day>31)error=1;break; case 2:if(leap) {if(day>29)error=1;} else if(day>28)error=1; break; case 3:if(day>31)error=1;break; case 4:if(day>30)error=1;break; case 5:if(day>31)error=1;break; case 6:if(day>30)error=1;break; case 7:if(day>31)error=1;break; case 8:if(day>31)error=1;break; case 9:if(day>30)error=1;break; case 10:if(day>31)error=1;break; case 11:if(day>30)error=1;break; case 12:if(day>31)error=1;break; default:error=1;break; } if(error==0)printf("It is the correct date."); else printf("It is the wrong date.");} 2.读程序,写结果 (1)RUN? 2,1 (2)RUN? 6 (3)RUN? x=2 (4)RUN? 5 3.写程序 (4)程序如下: #include void main() {float x,y; scanf("%f",&x); if(x<1)y=x*x-1; else if(x<10) y=2*x-1; else y=3*x-11; printf("x,y=%f,%f",x,y);} 分段函数的程序有两种典型错误: 错误程序一: #include void main() {float x,y; cin>>x; if(x<1) y=x*x-1; if(x<10) y=2*x-1; else y=3*x-11; cout< } 错误原因:条件x<1引出的选择结构和条件x<10引出的选择结构是并列的关系, 即:执行完前一个选择结构后,再执行后一个选择结构。若x小于1,表达式x<1为真,执行语句y=x*x-1;计算出y的值。然后执行由条件x<10引出的选择结构,此时条件x<10也为真,因此,执行语句y=2*x-1; 导致程序出错。即:当x小于1时,计算出的y值不对,这种错误称为逻辑错误。 错误程序一: #include void main() {float x,y; cin>>x; if(x<1) y=x*x-1; if(1 y=2*x-1; else y=3*x-11; cout< } 错误原因:表达式1 1 改正:表达式1 实验三循环结构程序设计 二1.改错题 (1)正确程序如下: #include void main() {int i,n,flag=-1; float sum; sum=0; cin>>n; for(i=1;i<=n;i++) { flag=-flag; sum=sum+1.0/i*flag;} cout< (2)正确程序如下: #include "stdio.h" void main() {char c;int sum; sum=0; while((c=getchar())!='0') sum=sum+c; printf("%d",sum); } (3)正确程序如下: #include "iostream.h" void main() {int m,s,j; for(m=1;m<=1000;m++) { s=0; for(j=1;j if(m%j==0)s+=j; if(s==m)cout< } (4)正确程序如下: #include void main() {int n,max=0,t; scanf("%d",&n); do { t=n%10; if(max n/=10;} while(n); printf("max=%d",max);} (5)正确程序如下: #include void main() {int i,k,sum=0,m,n,t,gs=0; cin>>m>>n; if(m>n){t=m;m=n;n=t;} for(k=m;k<=n;k++) { for(i=2;i if(k%i==0)break; if(k==i) { sum=sum+k;gs++;} } cout<<"共有"< cout<<"平均值为:"< } 2.填空题 做填空题的一般思路:仔细读题,然后根据题意读程序,分析程序中每一部 分的功能以及各变量的作用。 (1)填空后的程序如下: #include "iostream.h" void main() {int n,i;float s; s=1; cin>>n; for(i=1;i<=n;i++) s*=i; cout< } (2)填空后的程序如下: #include "iostream.h" void main() {int n,i; double sum; sum=0; cin>>n; for(i=1;i<=n;i++) if(i%3==0||i%7==7) sum+=1.0/i; cout<<"sum="< } (3)填空后的程序如下: #include "iostream.h" void main() {int n,q; double s; n=2; cin>>q; s=2.0; while(s<=q) {s=s+(double)(n+1)/n; n++; } cout<<"s="< } (4)填空后的程序如下: #include "iostream.h" void main() {int x,i,j,sum=0; j=0; cin>>x; for(i=1;i<=x;i++) if(x%i==0) if(i%2!=0) {cout< j++; sum+=i;} cout< (5)填空后的程序如下: #include "iostream.h" void main() {int i,j,n,count=0; cin>>n; for(i=2;i<=n;i++) { for(j=2;j if(i%j==0) break; if(j>=i) { count++; cout< } } cout< } (6)填空后的程序如下: #include "iostream.h" void main() {int i,n,sum; sum=0; cin>>n; for(i=2;i<=n;i=i+2) { sum=sum+i; } cout< } (7)填空后的程序如下: #include "iostream.h" void main() {int n,g,b,s,count=0; for(n=100;n<1000;n++) { g=n%10; s=n/10%10; b=n/100; if(g+b==s) {count++; cout< if(count%5==0) cout< } } cout< } (8)填空后的程序如下: #include "iostream.h" #include "iomanip.h" void main() {int n,i,j; float a,s=0; cin>>n; for(i=1;i<=n;i++) {a=0; for(j=1;j<=i;j++) a+=j; s=s+1.0/a; } cout< } (9)填空后的程序如下: #include "iostream.h" void main() {int n,m; long sum; sum=0; cin>>n>>m; while(n<=m) {sum=sum+n; n++; } cout<<"sum="< (10)填空后的程序如下:#include "iostream.h" void main() {int n,i; long sum=0,t=1; cin>>n; for(i=1;i<=n;i++) { t=t*i; sum=sum+t;} cout<<"sum="< (11)填空后的程序如下:#include "iostream.h" void main() {int n,g; for(n=1;n<=1000;n++) { g=n%10; if(n==g*g*g) cout< } } (12)填空后的程序如下:#include "iostream.h" void main() {int num,k,leap,g; float sum,aver; g=0;sum=0.0; for(num=2;num<100;num++) { leap=1; for(k=2;k if(num%k==0) {leap=0; break;} if(leap) { sum=sum+num; g++;} } aver=sum*1.0/g; cout<<"sum="< cout<<"aver="< (一)SQL的定义功能 1.用SQL的定义命令创建一个职工表(zg.dbf),表结构如下所示。 字段名类型宽度小数点 职工号 C 4 姓名 C 8 性别 C 2 出生日期 d 工资 N 7 2 命令: create table zg(职工号 c(4),姓名 c(8),性别 c(2),出生日期 d,工资 n(7,2)) 2.修改上题创建的职工表。 (1)增加“职称”字段,类型为字符型,宽度为6。 alter table zg add 职称 c(6) (2)删除出生日期字段。 alter table zg drop 出生日期 (3)把性别字段的类型改为逻辑型。 alter table zg alter 性别 l (4)把工资字段改名为实发工资。 alter table zg rename 工资 to 实发工资 (二)SQL的操作功能 1.给课程表(kc)插入一条记录("2001","英语精读",2," ") insert into kc(课程号,课程名,学分) values ("2001","英语精读",2) 2.给女同学的入学分数增加10分。(提示:用update 命令) update xsqk set 入学分数=入学分数+10 where 性别="女" 3.把课程号为“1003”的学分改为3分。(提示:用update 命令) update kc set 学分=3 where 课程号="1003" 4.给成绩表(cj)中不及格成绩的数据加上删除标记。 delete from cj where 成绩<60 查看是否执行,再去掉删除标记。 Recall all (三)SQL语言的查询功能 1.查询指定列 (1)查询所有男同学的个人记录。 长沙理工大学C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述四、程序清单 1.编写程序实现在屏幕上显示以下结果: Thedressislong Theshoesarebig Thetrousersareblack 答案: #include printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥50.5\n"); } 2.编写程序:a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 答案: #include printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4.设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符) 答案: #include 实验七黑盒测试之场景法测试实验 1.1 实验目的 1、通过对简单程序进行黑盒测试,熟悉测试过程,对软件测试形成初步了解,并养成良好的测试习惯。 2、掌握黑盒测试的基础知识,能熟练应用场景法进行测试用例的设计。1.2 实验平台 操作系统:Windows 7或Windows XP 1.3 实验内容及要求 1、练习1 软件系统几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。场景法就是通过用例场景描述业务操作流程,从用例开始到结束遍历应用流程上所有基本流(基本事件)和备选流(分支事件)。下面是对某IC卡加油机应用系统的基本流和备选流的描述。 基本流A; 备选流: (1)使用场景法设计测试案例,指出场景涉及到的基本流和备选流,基本流用字母A表示,备选流用题干中描述的相应字母表示。 场景1:A 场景2:A、B 场景3:A、C 场景4:A、D 场景5:A、E (2)场景中的每一个场景都需要确定测试用例,一般采用矩阵来确定和管理测试用例。如下表所示是一种通用格式,其中行代表各个测试用例,列代表测试用例的信息。本例中的测试用例包含测试用例、ID、场景涤件、测试用例中涉及的所有数据元素和预期结果等项目。首先确定执行用例场景所需的数据元素(本例中包括账号、是否黑名单卡、输入油量、账面金额、加油机油量),然后构建矩阵,最后要确定包含执行场景所需的适当条件的测试用例。在下面的矩阵中,V 表示有效数据元素,I表示无效数据元素,n/a表示不适用,例如C01表示“成功加油”基本流。请按上述规定为其它应用场景设计用例矩阵。 测试用例表 2.程序填空 (1)以下程序的功能是计算1~50之间能被7整除的整数之和。 #include #include 《高级语言程序设计》实验报告班级:学号:姓名:成绩: 实验7 函数程序设计 一、实验目的 1.掌握函数定义的方法。 2.掌握函数实参与形参的传递方式。 3.掌握函数的嵌套调用和递归调用的方法。 4.了解全局变量和局部变量、动态变量、静态变量的概念和使用方法。 二、实验内容 1 (1)下列sub函数的功能为:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。例如,当s所指字符串的内容为“ABCD”时,t所指数组中的内容为“DCBAABCD”。纠正程序中存在的错误,以实现其功能。程序以文件名存盘。 #include <> #include <> void sub( char s[], char t[] ) { int i, d; d=strlen( s ); for( i=1; i< d ; i++ ) for( i=0; i< d ; i++ ) t[i]=s[d-1-i] ; for( i=0; i 24c02读写程序大全 2C总线的应用(24C02子程序) // 对24C02的读、写 // extern void DelayMs(unsigned int); // extern void Read24c02(unsigned char *RamAddress,unsigned char Ro mAddress,unsigned char bytes); // extern void Write24c02(unsigned char *RamAddress,unsigned char Ro mAddress,unsigned char bytes); /***************************************************************************/ #define WriteDeviceAddress 0xa0 #define ReadDviceAddress 0xa1 #include C语言程序设计实验报告(数组) 1实验目的 (1)熟练掌握一维数组,二维数组的定义,初始化和输入、输出方法; (2)熟练掌握字符数组和字符串函数的使用; (3)掌握与数组有关的常用算法(查找、排序等)。 2实验内容 编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr(char str[])用于统计一个字符串的长度,并在主函数中调用。 要求: 1、不允许用strcat()和strlen()字符处理库函数; 2、在主函数以直接初始化的方式输入两个字符串str1和str2.调用函数 strlen()计算并返回两个字符串的长度; 3、调用函数catstr()连接两个字符串(将str2连接在str1后面); 4、调用函数lenstr()计算并返回连接后字符串的长度; 5、在主函数中输入两个原始的字符串及几个字符串的长度,以及处理后字 符串及其长度。 3算法描述流程图 4源程序 #include for (i=0;m[i]!='\0';i++); printf("%d",i); } void main() {char s1[50]="forever",s2[50]="more"; printf("s1=%s,s2=%s",s1,s2); printf("\ns1的长度:"); lenStr(s1); printf("\ns2的长度:"); lenStr(s2); catStr(s1,s2); printf("\n连接后的字符:"); printf("%s\n",s1); printf("连接后字符的长度:"); lenStr(s1); printf("\n"); } 5测试数据 s1=forever, s2=more 6运行结果 7出现问题及解决方法 在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。无论什么事,细心都是必不可少的,认真是解决问题的关键。 8实验心得 通过本次实验,对于函数的定义和声明,数组以及循环语句有了进一步的认识,掌握了字符数组和字符串函数的使用,以及与数组有关的常用算法。此次实验不是调用strlen()和strcat()函数,而是通过自己设计程序来进行字符串的连接以及计量字符串的长度,由此我学会了如何去理清自己的思路来设计程序。 广东金融学院实验报告 课程名称:C++程序设计 实验编号 实验7数组与指针练习系别参考答案及实验名称 姓名学号班级 实验地点新电403实验日期2011-11-24实验时数4 指导教师曲政同组其他成员无成绩 一、实验目的及要求 1.学习C/C++数组和指针的概念和使用方法。 2.练习C++/CLI托管数组的创建方法和元素访问方法。 二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等) 硬件设备:联网的个人计算机 操作系统:Windows XP 编译系统:Visual Studio2005 三、实验内容及步骤(包含简要的实验步骤流程) 1.内容和步骤 ⑴仔细阅读本课件的知识点和例题,努力理解其中的文字阐述和源代码,必要时可将源代码拷入Visual Studio2005生成的C++/CLR框架编译和运行,将运行结果与源代码对照,加深对C/C++数组和指针的理解。 ⑵在理解本课件内容的基础上,编写C/C++程序实现下列文字描述: a.声明一个int型变量x,并赋初值3; b.打印x的值; c.打印x的地址; d.声明一个指向int的指针p,并让其指向变量x; e.打印p所指变量的值 f.打印p的值; g.声明一个有10个元素的一维本地整型数组A,并为其赋初值0~9; h.在一个循环中打印A的所有元素的值; i.打印A的值; j.打印A的第一个元素的地址; k.声明一个指向int的指针q,并让其指向A的第一个元素; l.在一个循环中通过q后跟下标,打印出A的所有元素的值; m.在一个循环中通过q加上循环变量和取值运算,打印出A的所有元素的值; n.在一个循环中通过q的增量和取值运算,打印出A的所有元素的值; o.在一个循环中通过q的负增量,反序打印出A的所有元素的值; p.声明一个int型指针r,在堆中创建一个int型变量,为该变量赋初值3,并将该变量的地址赋给该指针,打印出该变量的值,然后删除该变量。 q.声明一个本地类Point(可以用包含2个int型变量和一个有参数构造函数的结构体表示)的指针s,在堆中创建一个Point类的对象,调用构造函数为该对象的两个数据成员赋初值3和4,并将该对象的地址赋给该指针,打印两个数据成员的值,然后删除该对象。 r.声明一个int型指针t,在堆中创建一个3个元素的int类型数组并将该数组的首地址赋给该指针,为三个数组元素分别赋值3、4、5,在一个循环中打印出所有元素的值,然后删除该数组。 s.声明一个本地类Point类的指针u,在堆中创建一个3个元素的Point类的对象数组(需在Point 中添加无参数构造函数)并将数组的首地址赋给该指针,为三个数组元素分别赋值(1,2)、(3,4)、(5,6),在一个循环中打印该数组所有元素分量的值,然后删除该数组。 t.用基本语法声明并创建一个10个元素的一维托管整型数组B,并在一个循环中为元素赋值0~9; u.在另一个循环中打印B所有元素的值。 v.用初值表方式声明并创建一个10个元素的一维托管整型数组C,并为其元素赋初值10~19; w.在一个循环中打印C所有元素的值。 x.用数组C为数组B赋值。 y.在一个循环中打印B和C所有元素的值。 2.提示和要求 ⑴首先将上面的文字描述拷入Visual Studio2005生成的C++/CLR框架,在每条文字描述之前加“//”将其变为注释,并在其下留一个空行准备编写对应的程序。 ⑵对应于逐条文字描述,在其下编写程序(可能是一个或一组语句),每编写一条文字描述对应的程序,就编译(运行)一次,以保证语法和算法的正确性。 ⑶当全部文字描述所对应的程序编写完成,并编译、运行正确,将文字描述和源代码拷入实验报告。 ⑷对C/C++的数组和指针做简要总结。 AT24C02串行E2PROM的读写 I2C总线是一种用于IC器件之间连接的二线制总线。它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件:不管是单片机、存储器、LCD驱动器还是键盘接口。 1.I2C总线的基本结构采用I2C总线标准的单片机或IC器件,其内部不仅有I2C接口电路,而且将内部各单元电路按功能划分为若干相对独立的模块,通过软件寻址实现片选,减少了器件片选线的连接。CPU不仅能通过指令将某个功能单元电路挂靠或摘离总线,还可对该单元的工作状况进行检测,从而实现对硬件系统的既简单又灵活的扩展与控制。I2C总线接口电路结构如图1所示。 2.双向传输的接口特性传统的单片机串行接口的发送和接收一般都各用一条线,如MCS51系列的TXD和RXD,而I2C总线则根据器件的功能通过软件程序使其可工作于发送或接收方式。当某个器件向总线上发送信息时,它就是发送器(也叫主器件),而当其从总线上接收信息时,又成为接收器(也叫从器件)。主器件用于启动总线上传送数据并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。I2C总线的控制完全由挂接在总线上的主器件送出的地址和数据决定。在总线上,既没有中心机,也没有优先机。 总线上主和从(即发送和接收)的关系不是一成不变的,而是取决于此时数据传送的方向。SDA和SCL均为双向I/O线,通过上拉电阻接正电源。当总线空闲时,两根线都是高电平。连接总线的器件的输出级必须是集电极或漏极开路,以具有线“与”功能。I2C总线的数据传送速率在标准工作方式下为100kbit/s,在快速方式下,最高传送速率可达400kbit/s。 3.I2C总线上的时钟信号在I2C总线上传送信息时的时钟同步信号是由挂接在SCL时钟线上的所有器件的逻辑“与”完成的。SCL线上由高电平到低电平的跳变将影响到这些器件,一旦某个器件的时钟信号下跳为低电平,将使SCL线一直保持低电平,使SCL线上的所有器件开始低电平期。此时,低电平周期短的器件的时钟由低至高的跳变并不能影响SCL线的状态,于是这些器件将进入高电平等待的状态。 当所有器件的时钟信号都上跳为高电平时,低电平期结束,SCL线被释放返回高电平,即所有的器件都同时开始它们的高电平期。其后,第一个结束高电平期的器件又将SCL线拉成低电平。这样就在SCL线上产生一个同步时钟。可见,时钟低电平时间由时钟低电平期最长的器件确定,而时钟高电平时间由时钟高电平期最短的器件确定。 4.数据的传送在数据传送过程中,必须确认数据传送的开始和结束。在I2C总线技术规范中,开始和结束信号(也称启动和停止信号)的定义如图2所示。当时钟线SCL为高电平时,数据线SDA由高电平跳变为低电平定义为“开始”信号;当SCL线为高电平时,SDA线发生低电平到高电平的跳变为“结束”信号。开始和结束信号都是由主器件产生。在开始信号以后,总线即被认为处于忙状态;在结束信号以后的一段时间内,总线被认为是空闲的。 《高级语言程序设计》实验报告班级:_________ 学号:_______ 姓名:_________ 成绩:_________ 实验7函数程序设计 一、实验目的 1 ?掌握函数定义的方法。 2. 掌握函数实参与形参的传递方式。 3. 掌握函数的嵌套调用和递归调用的方法。 4. 了解全局变量和局部变量、动态变量、静态变量的概念和使用方法。 二、实验内容 1.改错题(在程序中画出错误的语句,将修改后的语句完整地写在该语句的右边。|) (1)下列sub函数的功能为:将s所指字符串的反序和正序进行连接形成一个新串放 在t所指的数组中。例如,当s所指字符串的内容为“ ABCD时,t所指数组中的内容为“DCBAABCD纠正程序中存在的错误,以实现其功能。程序以文件名sy7_1.c存盘。 #i nclude ATMEGA16读写iic(24c02) C语言程序测试通过 #include while(1) {/* I2C_Write('n',0x00); I2C_Write('c',0x01); I2C_Write('e',0x02); I2C_Write('p',0x03); I2C_Write('u',0x04); */ i=I2C_Read(0x00); //LCD_write_char(0,0,i); USART_TXD(i); i=I2C_Read(0x01); //LCD_write_data(i); USART_TXD(i); i=I2C_Read(0x02); //LCD_write_data(i); USART_TXD(i); i=I2C_Read(0x03); //LCD_write_data(i); USART_TXD(i); i=I2C_Read(0x04); //LCD_write_data(i); USART_TXD(i); } } /*上面上主函数部分*/ #include 实验一熟悉C程序运行环境 班级学号姓名成绩 一、实验目的 1. 熟悉C语言Visual C++调试环境。 2. 掌握C程序的编辑、调试及运行。 二、实验内容 项目1. 调试并运行下面程序,并写出运行结果: #include <> int main() { printf(“Good morning!\n”); printf(“Hello,world!\n”); return 0; } 运行结果(注意,按照屏幕输出格式写): 项目2. 调试并运行下面程序,并写出运行结果: #include <> int main() { int a , b , sum; /*定义变量*/ a=23; b=56; /*为变量赋值*/ sum=a+b; /*计算两个变量的和*/ printf(“sum is %d\n”,sum); /*输出计算结果*/ return 0; } 运行结果: 项目3. 调试并运行下面程序,并写出运行结果: #include <> int max(int,int); int main() { int a , b , c; /*定义变量*/ a=23; b=56; /*为变量赋值*/ c=max(a,b); /*调用max函数,将得到的值赋给c*/ printf(“max is %d\n”,c); /*输出c的值*/ return 0; } int max(int x,int y) /*定义max函数,函数值为整型*/ { int z; /*定义变量*/ if(x>y) z=x; else z=y; return(z); /*将z的值返回*/ } 运行结果: 三、提高部分 1.试想,如果求10个数中的最大者,则程序该如何编写。 程序代码 运行结果: 上海电力学院 实验报告 课程名称高级程序设计C++(1) 实验项目实验七数组1 姓名学号班级专业 同组人姓名无指导教师姓名实验日期 一、实验目的 1、掌握一维数组的定义、赋值和输入输出的方法; 2、掌握与数组有关的算法(特别是排序算法)。 二、实验内容和步骤 编程序并上机调试运行。 1、按如下要求编程: 在第一个循环中给a数组的前10个数组元素依次赋1、 2、 3、 4、 5、 6、 7、 8、 9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1;在最后一个 循环中输出对称折叠以后的a数组的前10个元素。 ●程序源代码(注意添加注释) #include /************************************************** 24C02.C 功能描述: PC端发送3个数据n0,n1,n2. n0=0,写,将n1写入n2地址中 n0=1,读,读出n1地址中的数据,n2不起作用,但必须有 收到一个字节后,将其地址值显示在数码管第1、2位上,数值显示在第5、6位上 读出一个字节后,将其地址值显示在数码管第1、2位上,读出的值显示在第5、6位上;**************************************************/ #define uchar unsigned char #define uint unsigned int #define Slaw0x0a; //写命令字 #define Slar 0xa1; //读命令字 #include "reg52.h" #include "intrins.h" sbit Scl=P2^1; //串行时钟 sbit Sda=P2^0; //串行数据 bit Rec; //接收到数据的标志 uchar RecBuf[3]; //接收缓冲区 #define Hidden 0x10; //消隐字符在字形码表中的位置 sbit we=P2^7; sbit du=P2^6; uchar code dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; uchar code disptab[]={0x3f,0x6,0x5b,0x4f,0x66, 0x6d,0x7d,0x27,0x7f,0x6f,0x77,0x7c,0x39,0x5e, 0x79,0x71,0x0}; uchar DispBuf[6]; uchar code TH0V al=(65535-3000)/256; uchar code TL0V al=(65535-3000)%256; uchar code th1=0xfd; uchar code tl1=0xfd; //以下是中断程序,用于显示 void timer0() interrupt 1 { static uchar count; uchar tmp; P0|=0x3f; we=1; tmp=dispbit[count]; P0&=tmp; we=0; du=1; 文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持. 《C语言程序设计》 实验报告 2013~2014学年第二学期 班级 姓名 学号 指导教师 实验一 实验项目名称:C程序的运行环境和运行C程序的方法 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的: 1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运行一个C程序; 2.通过运行简单的C程序,初步了解C源程序的特点。 二、预习内容: 教材《C语言程序设计教程》第1章。 三、实验内容: 1. 在Visual C++ 6.0环境下输入并运行下面的程序: #include 2. (1) 改正后的源程序: #include 实验7 1. 编一个程序,包含以下文件。 (1)Shape.java文件,在该文件中定义接口Shape,该接口在shape包中。 属性:PI。 方法:求面积的方法area()。 (2)Circle.java文件,在该文件中定义圆类Circle,该类在circle包中,实现Shape接口。 属性:圆半径radius。 方法:构造方法;实现接口中求面积方法area();求周长方法perimeter()。 (3)“Cylinder.java”文件,在该文件中定义圆柱体类Cylinder,该类口在cylinder包中,继承圆类。 属性:圆柱体高度height。 方法:构造方法;求表面积方法area();求体积方法volume()。 (4)X5_3_6.java文件,在该文件中定义主类X5_3_6,该类在默认包中,其中包含主方法main(),在主方法中创建两个圆类对象cir1和cir2,具体尺寸自己确定,并显示圆的面积和周长;再创建两个圆柱体类的对象cy1和cy2,具体尺寸自己确定,然后分别显示圆柱体cy1和cy2的底圆的面积和周长以及它们各自的体积和表面积。 【编程分析】本题主要考察接口、包、继承、封装等问题。编程步骤如下:第一步:首先创建p1包,在其中创建Shape接口 // Shape.java文件 package p1; // 创建p1包 public interface Shape{ // 定义Shape接口 … } 第二步:创建Circle类和Cylinder类,它们都定义在p2包中。 // Circle.java文件 package p2; // 创建p2包 import p1.*; public class Circle implements Shape{ // 定义实现Shape接口的Circle类 … } // Cylinder.java文件 package p2; public class Cylinder extends Circle{ // 创建继承Circle类的Cylinder类 … } 第三步:创建主类,在其中的main()方法中创建对象,实现相应的功能。 // X5_3_6.java文件 package p3; import p2.*; public class X5_3_6 { // 定义主类 public static void main(String[] args) { … } } -前言- /*非常感谢度娘以及各位网上C语言高手的支持,才能让敝人完成此文档的整理。 本文档集合了本人、度娘、众网友的力量,其中代码的正确率约为90%(不正确的有标注)。为回报度娘及众网友的帮助,本文档免费下载。 */ /*配“电子科技大学出版社(周信东主编)”的C语言程序设计实验*/ /*努力吧,骚年以及学妹们!*/ /*整理ed by 口玉刀一of GUET.*/ ===================== 实验一C语言程序初步 ===================== 1.---------------------------- 已知a=5,b=4,c=6,求出s并换行 #include"stdio.h" main() { int a,b,c,s; a=5;b=4;c=6; s=(a+b+c)/3; printf("a=%d,b=%d,c=%d\n,s=%d",a,b,c,s); } 2.------------------------------- 输入一个数字求他的平方 #include { int v; int a,b,c; //a,b,c aer sides,v is volume of cube a=3;b=3;c=5; v=a*b*c; printf("v=%d\n",v); } ================================= 实验二数据类型、运算符和表达式 ================================= 1. (1)-------------------------------------------------- //总觉得打印结果怪怪的,DO YOU THINK SO? main() { char s1='3',s2='4',s3='5'; int c1=101,c2=102; printf("3%c\t4%c\t5%c\n",s1,s2,s3); //3%c为输出3和%c printf("s1=%d\ts2=%d\ts3=%d\n",s1,s2,s3);//注意哦,s1,s2,s3是char!而%d:输入输出为整形%ld 长整型%hd 短整型%hu无符号整形%u %lu%s:输入输出为字符串%c字符%f:输入输出为浮点型%lf双精度浮点型printf("c1=%d\t~%c\n",c1,c1); //换码符'\t',表示水平制表位(horizeontal tab),它的作用是将光标移到最接近8的倍数的位置 printf("c2=%d\t~%c\n",c2,c2); //注意c1,c2的类型 } (2) //运行结果为8.300000 %是求余数先运算x-y,把结果转换为int型的有利于四则运算 main() { float x=8.3,y=4.2,s; int a=7; s=x+a%5*(int)(x-y)%2/3; printf("s=%f",s); } //实验24C02连接在PF口 //WP、A0、A1、A2都接地,如下图所示。 //单片机:STM32F103 #include "stm32f10x_flash.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #define AT24C02 0xa0 //AT24C02 地址 /******************************** 变量定义 ---------------------------------------------------------*/ GPIO_InitTypeDef GPIO_InitStructure; //GPIO ErrorStatus HSEStartUpStatus; unsigned char Count1 , Count2; unsigned int USEC; static vu32 TimingDelay; unsigned char Readzfc; unsigned char pDat[8] = {0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};//实验数据unsigned char R_Dat[8]; /*********************************声明函数-----------------------------------------------*/ void RCC_Configuration(void); void SysTick_Configuration(void); void Delay_us_24C02(u32 nTime); /************************************24C02硬件接口 ******************************/实验七参考答案
C语言程序设计实验报告参考答案
实验七-黑盒测试之场景法测试实验(参考答案)
C语言程序设计实验与习题答案
C实验报告7参考答案
24c02读写程序大全
C语言程序设计实验报告(数组)
C++程序设计实验七_参考答案
AT24C02串行E2PROM的读写
C实验报告7参考答案
ATMEGA16读写iic(TWI)(24c02) C语言程序
C语言程序设计实验实验指导书及答案
C++实验7及参考答案
at24c02应用程序
C语言程序设计实验报告(实验1-12)
JAVA实验7-9+答案
C语言程序设计实验-答案
STM32F103读写24C02 C程序-有硬件电路图和程序