




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章 单片机实验板简介 第2章 仿真软件概述2.1Microsoft Visual C+6.0简介Microsoft Visual C+ 6.0,简称VC6.0,是Microsoft公司推出的一款C+编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。Visual C+6.0不仅是一个C+ 编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具, 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。现在的最新版VC开发环境的版本已经升级至Microsoft Visual C+2013,对C+的支持更加全面稳定,建议电脑性能好的可以使用此版本。VC6.0使用步骤。第1步:进入Visual C+环境后,执行“文件”|“新建”菜单命令。第2步:在“新建”对话框中切换到“文件”选项卡,然后选择C+ Source File选项。第3步:在右边的目录文本框中输入准备编辑的源程序文件的存储路径,在“文件”文本框中输入准备编辑的C源程序文件名(如:sy1_1.c)。注意后缀是.c。然后单击“确定”按钮。第4步:在光标闪烁的程序编辑窗口输入上面C程序(注意:/* */之间的内容为程序注释部分,不执行),程序输入完毕后执行“文件”|“保存”命令,或单击工具栏上的“保存”按钮,也可以用Ctrl+S快捷键来保存文件。第5步:执行“编译”|“编译”菜单命令,或单击工具栏上的“编译”按钮,也可以按Ctrl+F7组合键,开始编译。观察调试信息窗口输出编译的信息,如果有错,则修改后再编译,直至编译信息为:“0 error(s),0 warning(s)”,表示编译成功。第6步:按F7键或单击,生成应用程序的菜单命令EXE文件(如sy1_1.exe)。第7步:运行程序观察结果。执行“编译”|“执行”,或单击工具栏上的“执行”按钮,也可以使用Ctrl+F5快捷键。 1.2 KEIL 软件简介1.3 STC-ISP简介1.4 Protues ISIS电路原理图设计第3章 实验项目3.1 单片机基础与C语言实验3.1.1 实验一C语言编程基础一、实验目的1.掌握C程序开发环境; 2.掌握编译环境的使用; 3.掌握C语言的基本定义;4.掌握各类型常量、变量在内存中的存储形式。 二、实验内容 1.C开发环境使用; 2.各种数据类型定义与转换; 3.各种运算符与表达式的定义; 4.常量的使用及变量的赋值; 5.输入输出语句的定义与书写; 6.设计一个项目融合以上内容(选做)。 三、实验步骤 1输入并运行下面程序,写出运行结果。#include stdio.hmain( ) char c1, c2; c1=97;c2=98; printf(%c,%c, c1, c2);在此基础上,完成以下3项任务:(1)在c1=97;c2=98;语句后加入如下语句,并运行。printf(%d, %d, c1, c2 );运行结果:(2)将char c1,c2;改为如下语句,再运行。int c1, c2;运行结果:(3)将c1=97;c2=98;改为如下语句,再运行,并分析其运行结果。c1=300; c2=400;运行结果: 2分析下面程序,写出运行结果,再输入计算机中运行,将得到的结果与分析得到的结果比较对照。#include stdio.hmain( ) char c1=a,c2=b,c3=c,c4=101,c5=116; printf(a%c b%ctabc%c n,c1,c2,c3); printf(tb%c %c,c4,c5);运行结果: 3分析下面程序,写出运行结果,再输入计算机中运行,将得到的结果与分析得到的结果比较对照。#include stdio.hmain( ) int i , j , m , n ; i=8; j=10; m=+i; n=j+; printf(%d,%d,%d,%d,i,j,m,n);运行结果:分别进行以下改动后,先分析结果,再运行对照。(1)将m=+i; n=j+;改为如下:m=i+; n= + j;运行结果:(2)程序改为如下:#include stdio.hmain( ) int i , j ; i=8; j=10; printf(%d,%d, i+, j+);运行结果:(3)程序改为如下:#include stdio.hmain( ) int i , j ; i=8; j=10; printf(%d,%d, + i, + j);运行结果:(4)程序改为如下:#include stdio.hmain( ) int i , j ; i=8; j=10; printf(%d,%d,%d,%d,i,j,i+,j+);运行结果:(5)程序改为如下:#include stdio.hmain( ) int i , j , m=0 , n=0 ; i=8; j=10; m+= i +; n-= -j; printf(i=%d,j=%d,m=%d,n=%d,i,j,m,n);运行结果: 4按格式要求输入、输出数据。#include stdio.hmain( ) int a,b; float x,y; char c1,c2; scanf(a=%d,b=%d,&a,&b); scanf(%f, %e,&x,&y); scanf(%c %c,&c1,&c2); /*录入时%c与%c之间有个空格*/ printf(a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%cn,a,b,x,y,c1,c2);运行该程序,必须按如下方式在键盘上输入数据: a=3,b=7 8.5,71.82a A (注解:a与A之间输入一个空格,且a紧跟71.82后写,不要空格)请写出输出结果。运行结果: 5输入三角形的三条边长,求三角形面积。#include stdio.h#include math.hmain( ) float a,b,c,s,area; scanf(%f ,%f,%f,&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c); printf(area=%f,area);运行结果:(具体情况根据自己输入的数据而定) 6输入一个摄氏温度,要求输出华氏温度,公式为f = 5/9c+32。试编写该程序。#include stdio.hmain( ) ; ; ;运行结果: 3.1.2 实验二 结构化程序设计 一、实验目的 1.掌握顺序结构程序的设计方法; 2.掌握关系、逻辑运算符和表达式; 3.掌握if、switch语句的选择结构程序设计方法; 4.掌握while、for语句的循环结构程序设计方法; 5.了解多种结构程序设计的综合、嵌套。 二、实验内容 1.顺序结构程序设计; 2.选择结构程序设计; 3.选择结构程序设计; 4.设计一个项目融合以上内容(选做)。 三、实验步骤 任务1. if语句 1.从键盘输入任意一个大写字母,将其转换成相应小写字母输出,将其补充完整并记录运行结果 。 #include main() char c; scanf(%c,&c); if ( ) c= ; printf(n%c,c); 2.下列程序运行结果: 。 #include stdio.h main( ) int a=8,b=7,c=9,t=0; if(ab) t=a;a=b;b=t; if(ac) t=a;a=c;c=t; if(bc) t=b;b=c;c=t;printf(%5d%5d%5dn,a,b,c); 任务2. SWITCH语句 1下列程序运行结果: 。#include “stdio.h” main ( ) int i=5; switch(i) case 4:i+=1; case 5:i+=2; case 6:i+=3; default:i+=4; printf(%dn,i); 2.有如下程序段,将其补充完整并记录运行结果 。(输入grade的值为C)switch(grade) case A:printf(Excellent!n);case B:printf(Fine!n);break;case C:printf(Medium!n);case D:printf(Pass!n);break;default:printf(Fail!n); 任务3. while语句程序设计 1下列程序运行结果: 。 #include main() int i=0; while(i10) if(i=5) break;i+; printf (“%dn”,i); 2.下面是一个计算e的近似值(使误差小于给定的数值)的程序。#includemain() double e=1.0,x=1.0,y,detax; int i=1; printf(please input enter :n); scanf(%lf,&detax); y=1/x; while(y=detax) x=x*i; y=1/x; e=e+y; +i; printf(%12.10f,e);实验要求:(1)阅读上面的程序,写出程序所依据的计算公式:e= (2)当输入的detax是下列各值时,写出运行结果。a. detax1.0时, 。b. detax0.5&detax=1.0时, 。c. detax=0.1时, 。 3.求 1!+2!+3!+4!+5!+6!+7!+8!+9!+10!,将其补充完整并记录运行结果 。#include main( ) int j,m,p,sum; sum= ; m=1 ; do p= ; j=1 ; while(j=m) p*=j; j+; sum=sum+p; m+; while(m=10); printf(s=%dn,sum); 4. 每个苹果0.8元,第一天买2个苹果,第二天开始,每天买前一天的2倍,直至购买的苹果总个数到不超过100的最大值,编程求每天平均花多少钱输出并记录运行结果 。 参考答案:#include stdio.hvoid main() int x,sum,day; double ave=0; x=2; day=1; sum=2; do x=2*x; sum=sum+x; day+; while(sum=100); ave=(sum-x)*0.8/(day-1); printf(%lf,ave); 任务4 for语句程序设计 1.下列程序运行结果: 。#include main() int i,sum=0; for(i=0;i=10;i+) sum=sum+i; if(i=5) break; printf (sum=%dn,sum); 2.求出1000以内能被13整除的最大数。将其补充完整并记录运行结果 。#include stdio.hmain() int i; for( ; ;i-) if( ) break; printf(n%d,i); 3.求如下Fibonacci 数列1,1,2,3,5,8, 的前40个数,要求每一行输出8个数。将其补充完整并记录运行结果 。 程序如下:#include main( ) long f1,f2; int i; f1=1; f2=1; for(i=1; ;i+ ) printf(%10ld%10ld,f1,f2); if( ) printf(n); f1=f1+f2; f2=f2+f1; 4.编程实现求1100之间所有素数的个数及和并记录运行结果。参考答案:#include #include main() int m,n,i,j,k,sum=0; n=0; for(m=2;m=100;m+) k=(int)sqrt(m); i=2; while(m%i!=0&i=k) i+; if(i=k+1) n+;sum=sum+m; printf(共有%8d个素数,总和为%8dn,n,sum); 3.1.3实验三模块化程序设计 一、实验目的 1.掌握模块化程序设计的框架; 2.掌握函数形参、实参的使用方法; 3.掌握函数调用参数传递的具体过程; 4.掌握内部和外部函数联合使用的方法。二、实验内容 1.主函数、子函数设计; 2.函数的嵌套、递归调用; 3.全局变量和局部变量的声明; 4.内部函数、外部函数的使用; 5.设计一个项目融合以上内容(选做)。三、实验步骤任务1 数组的基本定义与应用 1. 编程实现定义一个10个元素的int数组a,输入10个数并输出,记录运行结果 。参考程序:main()int i,a10; for(i=0;i10;i+) scanf(%d,&ai); for(i=0;i10;i+) printf(%5d,ai); printf(n); 2.编程实现寻找整数数组num中的最大值及其所在的下标,记录运行结果 。参考程序:main()int i,max,p,a10; printf(please enter 10 data:n); for(i=0;i10;i+) scanf(%d,&ai); max=a0;p=0; for(i=1;imax) max=ai;p=i; printf(max is:%dn,max); printf(point is:%dn,p+1); 3.编程实现对n个数的数列从小到大排序,记录运行结果 。参考程序:冒泡法#include main()int i,j,n,a100;int temp;clrscr(); printf(enter the number:n); scanf(%d,&n); for(i=0;in;i+) scanf(%d,&ai); printf(n output the original arrayn); for(i=0;in;i+) printf(%5d,ai); for(i=0;in-1;i+) for(j=0;jaj+1) temp=aj;aj=aj+1;aj+1=temp; printf(n output the sorted arrayn); for(i=0;in;i+) printf(%5d,ai); printf(n); 4.编程实现将一个44的矩阵,行和列的元素互换,输出互换后的矩阵,记录运行结果 。(统一输入44矩阵为: 2 0 0 1 0 2 1 0 0 2 1 0 2 0 0 1 ) 参考程序:main()int a44,i,j,t; for(i=0;i4;i+) for(j=0;j4;j+) scanf(%d,&aij); printf(output array a: before change:n);for(i=0;i4;i+) for(j=0;j4;j+) printf(%5d,aij); printf(n); for(i=0;i4;i+) for(j=0;ji;j+) t=aij;aij=aji;aji=t; printf(output array a: after change:n);for(i=0;i4;i+) for(j=0;j=a&ai=A&ai=0&ai=a&si=z) si=si-32; i+; puts(s); 任务3. 函数的定义和声明 1分析推测下面程序的运行结果,上机运行验证并记录运行结果 。#include unsigned fun26(unsigned num) unsigned k=1; do k*=num%10;num/=10; while(num); return k;main( ) unsigned n=26; printf(%dn,fun26(n); 2上机运行下面程序并记录运行结果 ,描述程序所完成的功能 。#include main( ) int power(int x,int n); int x=2,n=4; printf(ns=%d,power( x,n) ;int power(int x,int n) int i,p=1; for(i=1;i=n;i+) p=p*x; return(p); 任务4. 数组与函数的综合应用 1.编程实现在一个一维数组a中存放10个正整数, 求其中所有的素数,记录运行结果 。参考程序:int sushu(int x) int i,k=1; if(x=1) k=0; for(i=2;i=x/2;i+) if(x%i=0) k=0; return(k); main( ) int a10,i; for(i=0;i10;i+) scanf(%d,&ai); printf(sushu of array a are:n); for(i=0;i10;i+) if(sushu(ai) printf(%5d,ai);printf(n); 2.编程实现求一个34的矩阵中的最大元素并输出,记录运行结果 。(要求:将计算最大值的功能设计成函数,数组名作为参数)参考程序:max_value(int array12)int i,max; max=array0; for(i=0;imax) max=arrayi; return(max);main()int a34=1,3,5,7,2,4,6,8,15,17,34,12; printf(max=%dn,max_value(a); 任务5. 函数的嵌套调用 调试下面程序,注意函数调用的过程中形参、实参的关系。记录并分析结果;将形参a,b对应改为x,y,使之与实参变量同名,记录运行结果 ,并分析结果 。#include main( ) int t,x=2,y=5; int swap(int,int); printf(1) in main: x=%d,y=%dn,x,y); swap(x,y); printf(4) in main: x=%d,y=%dn,x,y);swap(int a,int b) int t; printf(2) in swap: a=%d,b=%dn,a,b); t=a; a=b; b=t; printf(3) in swap: a=%d,b=%dn,a,b); 任务6. 函数的递归调用 编程实现使用递归函数实现计算n!,并在main函数中调用,记录运行结果 。参考程序:#include stdio.hlong fun(int n)long f;if(n=1|n=0) f=1; else f=n*fun(n-1); return f;main()int num; scanf(%d,&num); if(num=0) printf(%d!=%ld n,num,fun(num); else printf(input data error! n); #选做#任务7. 变量的存储类型与编译预处理从键盘上输入一个字符串,内有若干个字符,再输入一个字符,编写程序将字符串中该字符删去。(用外部函数实现,分别编译连接,执行main函数文件) /* 文件名为:zy161.c*/#include void main() extern enter_string(char str),delete_string(char str,char ch),print_string(char str); char c; static char str80; enter_string(str); scanf(%c,&c);delete_string(str,c); print_string(str); /* 文件名为:zy162.c*/#include #include string.henter_string(char str) gets(str); /* 文件名为:zy163.c*/delete_string(char str,char ch)int i,j; for(i=j=0;stri!=0;i+) if(stri!=ch) strj+=stri; strj=0; /* 文件名为:zy164.c*/#include #include print_string(char str) puts(str);运行结果: 3.1.4实验四 数据处理程序设计 一、实验目的 1.掌握数组、指针、结构体、共用体的数据类型定义方法; 2.掌握各种数据的存储; 3.掌握各种数据的多种调用方法; 4.掌握数组、指针的嵌套。 二、实验内容 1.指针的定义和引用; 2.结构体、共用体、枚举的定义和嵌套; 3.指针与数组的结合; 4.设计一个项目融合以上内容(选做) 三、实验步骤 任务1. 指针及其使用方法 1分析下面程序,理解指针概念及“*”与“&”的含义,记录运行结果 。#include main() int a,b; int *p1,*p2; a=100; b=10; p1=&a; p2=&b; printf(a=%d,b+2= %dn,a ,b+2); printf(*p1=%d,*p2+2= %dn,*p1,*p2+2 ); 2分析下面程序,理解用指针变量进行输入、输出,记录运行结果 。#include main( ) int *p,m; scanf(%d,&m); p=&m; /*指针p指向变量m*/ printf(%d,*p); /*p是对指针所指的变量的引用形式,与此m意义相同*/ 上述程序可修改为如下,记录运行结果 。#include main( ) int *p,m; p=&m; scanf(%d,p) ; /*p是变量m的地址,可以替换&m*/ printf(%d,m); 任务2 使用指针访问一维数组 1分析下面程序,理解指针与数组的关系,记录运行结果 。#includemain( ) int a=1,2,3,4,5,6,7,8,9; int *p=a,b,c,s=0; for(b=0;b3;b+) for(c=0;c3;c+) if(b=c) p+; s+=*p; printf(s=%d,s); 2分析下面程序,理解指针、数组的多种表示法,记录运行结果 。#includemain( ) int a=1,2,3; int *p,k; p=a; for(k=0;k3;k+) printf(a%d=%dn,k,ak); printf(p%d=%dn,k,pk); printf(*(p+%d)=%dn,k,*(p+k); printf(*(a+%d)=%dn,k,*(a+k); 3下面程序完成从键盘输入两个字符串a和b,再将a和b的对应位置字符中的较大者存放在数组c中,当一个字符串结束时停止比较,此时将另一个字符串剩下的字符直接放在数组c的后面,填空完成该程序,记录运行结果 。#include #include void main( ) int k=0; char a80,b80,c80=0,*p,*q; p=a;q=b; gets(a); /*输入回车为结束*/ gets(b); while( ) if( ) ck=*p; else ck=*q; p+; ; k+; if(*p!= 0) strcat(c,p); else strcat(c,q); puts(c ); #选做#任务3. 使用指针访问二维数组 1分析下面程序,理解二维数组元素的多种引用方法,记录运行结果 。#includevoid main( ) int a34; int i,j; for(i=0;i3;i+) for(j=0;j4;j+) scanf(%d,&aij); /*数组元素下标表示法*/ for(i=0;i3;i+) for(j=0;j4;j+) printf(%4d,*(*(a+i)+j);/*数组元素指针表示法*/ printf(n); printf(n); for(i=0;i3;i+) for(j=0;j4;j+) printf(%4d,*(ai+j); /*数组元素下标+指针表示法*/ printf(n); printf(n); 2分析下面程序,理解指针与二维数组以及数组指针的概念,记录运行结果 。#include void f(int (*b)3);void main( ) static int a23=1,2,3,4,5,6; f(a);void f(int (*b)3) printf(n%d %d %dn,b00,b01,b02); 任务4 . 掌握指针与函数的关系 1调用子程序,实现求解一维数组中的最大元素。将程序补充完整,记录运行结果 。#include main( ) int sub_max(int b,int i); int n,a10,*ptr=a; /*定义变量,并使指针指向数组*/ int max,i= ; /*参数i值与数组长度的关系?*/ for(n=0;n=i-1;n+) scanf(%d,&an); max= ; /*函数调用,其实参是指针*/ printf(max=%dn,max);int sub_max(int b,int i) /*函数定义,其形参为数组*/ int temp,j; temp=b0 ; for(j=1;ji;j+) if(tempbj) temp=bj; return temp; 2分析下面程序,理解利用指向指针的指针变量对二维字符数组的访问,记录运行结果 。#include #include main( ) int i; static char c16=c language,fox,computer,home page; static char *cp=c0,c1,c2,c3; static char *cpp; /*指向字符指针的指针变量*/ cpp=cp; /*将指针数组的首地址传递给指向字符指针的指针变量*/ for(i=0;i4;i+) /*按行输出字符串*/ printf(%sn,*cpp+); printf(-n); for(i=0;i4;i+) cpp=&cpi; printf(%sn,*cpp); 任务5 使用指针编写综合应用程序 1编程利用指针实现对数组进行从小到大的排序。参考程序(冒泡法):#includemain( ) int a10; int *p,t,k,i,j; p=a; for(i=0;i10;i+) scanf(%d,p);p+; p=a; for(i=0;i9;i+) k=i; for(j=i+1;jpj)k=j; if(k!=i) t=pk;pk=pi;pi=t; for(i=0;i10;i+)printf(%5d,pi); 2编程实现,100人围成一圈,从第1个人开始,每数到3的人出圈,求出最后一个出圈的人的序号。参考程序:#include void main( ) int a100,i,n,k,*p; p=a; for(i=0;i1) if(*(p+i)!=0) k+; if(k=3) *(p+i)=0;k=0;n-; i+; if(i=100) i=0; while(*p=0) p+; printf(the last is %dn,*p); 任务6 . 结构体、共用体与枚举构造数据类型的定义与使用 1分析下面程序,熟悉结构体变量及指向结构体变量指针的使用,记录运行结果 。#includevoid main( ) struct xs int num; char name20; float score; stu1=001,Zhang san,90.5; struct xs stu2,*p; stu2=stu1; printf(%d %s %fn,stu2.num,,stu2.score); p=&stu2; printf(%d %s %fn,p-num,p-name,p-score); 2分析下面程序,并分析指向结构体数组的指针变量的使用,理解指针与结构体数组的关系及结构体成员的引用方式,记录运行结果 。#includestruct xs int num; char name20; char sex; int age;stu3=10101,Li Lin,M,18, 10102,Zhang Fun,M,19, 10104,Wang Min,F,20;main( ) struct xs *p; for(p=stu;pnum,p-name,p-sex,p-age); 思考:printf(%d%s%c%dn,p-num,p-name,p-sex,p-age);如用结构
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版智能电网技术研发技术保密协议正本-电力行业保密协议
- 2025年度电梯维保及智能化改造项目合同
- 2025年车辆挂靠及运输服务合同模板
- 2025版国际会议中心租赁服务合同
- 2025二手农用三轮车买卖与农事配套服务合同
- 2025年度房地产营销策划服务合同范本
- 2025年软件开发使用权授权合同样本
- 2025年度人防工程防护设备安装与验收合同
- 2025版食品安全宣传资料保密制作合同
- 2025年建筑施工安全防护措施合同范本
- 模态逻辑的本体论含义
- 中国舷外机(船外机)行业现状及趋势
- 顶楼违建房买卖协议书
- 输液过程中出现肺水肿的应急预案及流程
- 大学团支书竞选
- (高清版)JTG 2120-2020 公路工程结构可靠性设计统一标准
- 连翘仿野生种植技术规范
- 2024年房地产经纪协理考试题库附参考答案(综合题)
- 科技伦理教学课件
- 人教版数学四年级上册全册课本练习题精心整理可编辑可打印
- 88版干部履历表
评论
0/150
提交评论