实验5 子程序设计

合集下载

实验5LL(1)语法分析程序的设计与实现(C语言)

实验5LL(1)语法分析程序的设计与实现(C语言)

实验五LL(1)文法识别程序设计之宇文皓月创作一、实验目的通过LL(1)文法识别程序的设计理解自顶向下的语法分析思想。

二、实验重难点FIRST集合、FOLLOW集合、SELECT集合元素的求解,预测分析表的构造。

三、实验内容与要求实验内容:1.阅读并理解实验案例中LL(1)文法判此外程序实现;2.参考实验案例,完成简单的LL(1)文法判别程序设计。

四、实验学时4课时五、实验设备与环境C语言编译环境六、实验案例1.实验要求参考教材93页预测分析方法,94页图5.11 预测分析程序框图,编写表达式文法的识别程序。

要求对输入的LL(1)文法字符串,程序能自动判断所给字符串是否为所给文法的句子,并能给出分析过程。

表达式文法为:E→E+T|TT→T*F|FF→i|(E)2.参考代码为了更好的理解代码,建议将图5.11做如下标注:/* 程序名称: LL(1)语法分析程序 *//* E->E+T|T *//* T->T*F|F *//* F->(E)|i *//*目的: 对输入LL(1)文法字符串,本程序能自动判断所给字符串是否为所给文法的句子,并能给出分析过程。

/********************************************//* 程序相关说明 *//* A=E' B=T' *//* 预测分析表中列号、行号 *//* 0=E 1=E' 2=T 3=T' 4=F *//* 0=i 1=+ 2=* 3=( 4=) 5=# *//************************************/#include"iostream"#include "stdio.h"#include "malloc.h"#include "conio.h"/*定义链表这种数据类型拜见:http://wenku.百度.com/link?url=_owQzf8PRZOt9H-5oXIReh4X0ClHo6zXtRdWrdSO5YBLpKlNvkCk0qWqvFFxjgO0KzueVwEQcv9aZtVKEEH8XWSQCeVTjXvy9lxLQ_mZXeS###*/struct Lchar{char char_ch;struct Lchar *next;}Lchar,*p,*h,*temp,*top,*base;/*p指向终结符线性链表的头结点,h指向动态建成的终结符线性链表节点,top和base分别指向非终结符堆栈的顶和底*/ char curchar; //存放当前待比较的字符:终结符char curtocmp; //存放当前栈顶的字符:非终结符int right;int table[5][6]={{1,0,0,1,0,0},{0,1,0,0,1,1},{1,0,0,1,0,0},{0,1,1,0,1,1},{1,0,0,1,0,0}};/*存放预测分析表,1暗示有发生式,0暗示无发生式。

北京理工大学汇编实验五实验报告概要

北京理工大学汇编实验五实验报告概要

本科实验报告实验名称:子程序设计实验实验五子程序设计实验(设计性实验)一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言子程序设计方法;3.熟悉利用汇编语言子程序参数传递方法;4.熟悉汇编语言字符串处理基本指令的使用方法;5.掌握利用汇编语言实现字符串的输入输出程序设计方法;6.掌握数制转换程序实现方法。

二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。

三、实验涉及的主要知识A)子程序知识要点:1、掌握子程序的定义语句;过程名PROC [near/far] 过程体RET过程名ENDP2.子程序结构形式一个完整的子程序一般应包含下列内容:1. )子程序的说明部分在设计了程序时,要建立子程序的文档说明,使用户能清楚此子程序的功能和调用方法.说明时,应含如下内容:.子程序名:命名时要名中见意..子程序的功能:说明子程序完成的任务;.子程序入口参数:说明子程序运行所需参数及存放位置;.子程序出口参数:说明子程序运行结果的参数及存放位置;.子程序所占用的寄存器和工作单元;.子程序调用示例;2、)掌握子程序的调用与返回在汇编语言中,子程序的调用用CALL,返回用RET指令来完成。

.段内调用与返回:调用子程序指令与子程序同在一个段内。

因此只修改IP;.段间调用与返回:调用子程序与子程序分别在不同的段,因此在返回时,需同时修改CS:IP。

3.)子程序的现场保护与恢复保护现场:在子程序设计时,CPU内部寄存器内容的保护和恢复。

一般利用堆栈实现现场保护和恢复的格式:过程名PROC[NEAR/FAR]PUSH AXPUSH BX..PUSH DX...POP DX...POP AXRET过程名ENDP4.子程序的参数传递方法1.寄存器传递参数这种方式是最基本的参数传递方式。

2.存储器单元传(变量)递参数这种方法是在主程序调用子程序前,将入口参数存放到约定的存储单元中;子程序运行时到约定存储位置读取参数;子程序执行结束后将结果也放在约定存储单元中。

操作系统实验5 进程调度模拟程序设计

操作系统实验5 进程调度模拟程序设计

一、实验内容进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)或者时间片轮转法。

每个进程有一个进程控制块(PCB)表示。

进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。

进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。

进程的到达时间为进程输入的时间。

进程的运行时间以时间片为单位进行计算。

等待I/O的时间以时间片为单位进行计算,可随机产生,也可事先指定。

每个进程的状态可以是就绪R(Ready)、运行R(Run)、等待(Wait)或完成F(Finish)四种状态之一。

就绪进程获得CPU后都只能运行一个时间片。

用已占用CPU时间加1来表示。

如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。

每进行一次调度程序都打印一次运行进程、就绪队列、等待进程以及各个进程的PCB,以便进行检查。

重复以上过程,直到所要进程都完成为止。

用C或C++二、实验目的与要求在采用多道程序设计的设计中的系统中,往往有若干个进程同时处于就绪状态。

当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器本实验模拟在单处理器情况下的处理器调度,帮助学生加深了解处理器调度工作。

三、实验环境Visual+C++6.0四、实验步骤1、实验准备知识处理器调度总是选对首进程运行。

采用动态改变优先数的办法,进程每运行一次优先数就减“1”。

由于本次实验是模拟处理器调度,所以,对被选中的进程并不实际的启动运行,而是执行:优先数—1要求运行时间—1来模拟进程的一次运行。

进程运行一次后,若要求运行时间≠0,则再将它加入队列(按优先数大小插入,且置队首标志);若要求运行时间≠0,则把它的状态修改成“结束”,且结束队列。

《Java程序设计》上机实验报告 实验五 流、文件及基于文本的应用

《Java程序设计》上机实验报告 实验五   流、文件及基于文本的应用

信息科学与工程学院《Java程序设计》上机实验报告专业班级姓名学号主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)2.编写一个程序,能将一个源程序中的空行及注释去掉,并将处理后的内容写到目标文件中。

(源文件名称和目标文件名称均要求以命令行参数形式输入)import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;public class CopyFile {static String delComm(String s){if(s==null)return s;int pos=s.indexOf("//"); //去掉以//开始的注释if(pos<0)return s;return s.substring(0,pos);}public static void main(String args[]){String infname="CopyFile.java";String outfname="CopyFile.txt";if(args.length>=1)infname=args[0];if(args.length>=2)outfname=args[1];try{File fin=new File(infname);File fout=new File(outfname);BufferedReader in = new BufferedReader(new FileReader(fin));PrintWriter out = new PrintWriter(new FileWriter(fout));int cnt=0;String s = in.readLine(); //写字符串while(s != null){主要实验记录及个人小结(包括部分实验源程序、调试结果及实验结果分析等)cnt ++;s=delComm(s); //去掉以//开始的注释out.println(cnt+":\t"+s);//写出s=in.readLine(); //读入}in.close(); //关闭缓冲读入流及文件读入流的连接out.close();}catch (FileNotFoundException e1){System.out.println("File not found");}catch(IOException e2){e2.printStackTrace();}}}主要问题的出错现象:1)运行程序后,无对应的输出结果出现2)源程序编写过程中,出现方法和类的调用无法完成.出错原因:1)函数调用时候,相关函数输入变量错误2)方法名的书写不符合规范,使得方法变为变量.解决方法及效果:1) 编写和调用类的方法时,注意参数的类型和数量的对应.2)规范命名.常量用大写字母,变量用小写字母开始,类以大写字母开始.实验小结:1) 为每个类分配正确的职责.尽量保持类功能单一. 不要在一个类中做太多事.2) BufferedReader的方法:readLine():String ,当他的返回值是null时,就表示读取完毕了。

C++语言程序设计形考二实验五

C++语言程序设计形考二实验五

上机实验5:数组应用程序设计一、实验内容有如下程序:#include <iostream>using namespace std;int main(){__________________ //定义具有6个元素的整形数组dint data,i=0; // data用于暂存每一个输入数据,i记录已插入数据的个数。

cout<<"请输入6个整数:";do{ //输入并处理6个数据cin>>data;int j=i; //j是候选的插入位置while(j>0){ //若j==0,它就是第一个数据的插入位置,无需进入循环。

if(data>=d[j-1]) __________; //若找到插入位置,退出循环。

d[j]=d[j-1]; //否则数据后移一个位置j--;}d[j]=data; //数据插入到位置j处i++; //i记录已插入数据的个数}while(________); //若不足6个数据,继续输入。

for(_______________________) cout<<d[i]<<' ';//显示数组中的6个数据cout<<endl;return 0;}此程序输入6个整数保存到一维数组d 中,使得输入的数据在数组中始终按从小到大的顺序排列,最后顺序输出数组中的数据。

例如,若输入是5 7 4 29 3,程序的输出是:2 3 4 5 7 9。

二、实验要求读懂程序,补充程序中下划线处缺失的部分,上机测试,直至产生正确的输出结果。

三、实验结果截图(请将实际上机运行的结果截图并上传)。

C语言实验五最简单的C语言程序设计

C语言实验五最简单的C语言程序设计

C语⾔实验五最简单的C语⾔程序设计实验5:最简单的C语⾔程序设计⼀、实验⽬的:(1)掌握C语⾔中使⽤最多的⼀种语句——赋值语句的使⽤⽅法。

(2)掌握各种类型数据的输⼊输出的⽅法,能正确使⽤各种格式转换符。

(3)进⼀步掌握编写程序和调试程序的⽅法。

⼆、实验内容和步骤:1、通过下⾯的程序掌握各种格式转换符的正确使⽤⽅法。

(1)输⼊以下程序:/* Note:Your choice is C IDE */# includeint main( ){int a,b;float d,e;char c1,c2;double f,g;long m,n;unsigned int p,q;a=61,b=62;c1='a';c2='b';d=3.56;e=-6.87;f=3157.890121;g=0.123456789;m=50000;n=-60000;p=32768;q=40000;printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);printf("f=%15.6f,g=%15.12f\nm=%1d\np=%u,q=%u\n",f,g,m,n,p,q);显⽰结果:(2)运⾏此程序并分析结果。

(3)在此基础上,将程序第10~14⾏改为c1=a,c2=b;f=3157.890121;g=0.123456789;d=f;e=g;运⾏程序,分析结果。

/* Note:Your choice is C IDE */#include"stdio.h"int main(){int a,b;float d,e;char c1,c2;double f,g;long m,n;unsigned int p,q;a=61;b=62;c1=a;c2=b;f=3157.890121;g=0.123456789;d=f;e=g;p=a=m=50000;q=b=n=-60000;printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);printf("f=%15.6f,g=%15.12f\nm=%1d,n=%1d\np=%u,q=%u\n",f,g,m,n,p,q);}显⽰结果:(4)⽤sizeof运算符分别检测程序中各类型的数据占多少字节。

实验五 循环结构程序设计

实验五  循环结构程序设计
printf("*");
//③
}
}
(3)下列程序的功能为:从键盘上输入123,输出结果是54656。请纠正程序中存在错误,使程序实现其功能。
#include<stdio.h>
main()
{intc;//①
while(c=getchar() !='\n')//②
{ switch(c-1)
{ case '0':
“辗转相除法”求两个正整数的最大公约数的算法提示如下:
①将两数中大的那个数放在m中,小的放在n中。
②求出m被n除后的余数。
③若余数为0则执行步骤⑦;否则执行步骤④。
④把除数作为新的被除数;把余数作为新的除数。
⑤求出新的余数。
⑥重复步骤③到⑤。
⑦输出n,n即为最大公约数。
#include <stdio.h>
nY++;
if(nY > 3) break;
}
printf(“x = %d\n”,nX);
if(nY == 4) continue;
nX--;
}while(!nX);
}
运行结果:
(7)三重循环的使用。
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。程序源代码如下:
printf("%d %d %d % d\n",a,b,c,d );
}
题目
⑴输入某课程的成绩(学生人数未知,以负数作为输入结束,大于100视为无效成绩),求课程成绩的平均分。

实验设计方案范文(5篇)

实验设计方案范文(5篇)

实验设计方案范文(5篇)实验设计方案 1一、实验原理(1)鉴定实验设计的理念:某些化学试剂 + 生物组织中有关有机化合产生特定的颜色反应。

(2)具体原理:①可溶性还原糖+ 斐林试剂→砖红色沉淀。

②脂肪小颗粒 + 苏丹Ⅲ染液→橘黄色小颗粒。

③蛋白质 + 双缩脲试剂→紫色反应。

二、目标要求初步掌握鉴定生物组织中可溶性还原糖、脂肪、蛋白质的基本方法。

三、重点、难点1.重点①初步掌握鉴定生物组织中可溶性还原糖、脂肪、蛋白质的基本方法。

②通过实验的操作和设计培养学生的动手能力,掌握探索实验设计技巧,从而培养创新思维能力。

2.难点根据此实验方法、原理,设计实验来鉴定常见食物的成分。

四、实验材料1.可溶性还原糖的鉴定实验:选择含糖量较高、颜色为白色或近白色的植物组织,以苹果、梨为最好。

2.脂肪的鉴定实验:选择富含脂肪的种子,以花生种子为最好(实验前浸泡3h~4h)。

3.蛋白质的鉴定实验:可用浸泡1d~2d的黄豆种子(或用豆浆、或用鸡蛋蛋白)。

五、仪器、试剂1.仪器:剪刀,解剖刀,双面刀片,试管,试管架,试管夹,大小烧杯,小量筒,滴管,玻璃漏斗,水浴锅,研钵,石英砂,纱布,载玻片,盖玻片,毛笔,吸水纸,显微镜。

2.试剂:①斐林试剂(0.1g/L的NaOH溶液+ 0.05g/mL的CuSO4溶液);②苏丹Ⅲ染液;③双缩脲试剂;④ 体积分数为50%的酒精溶液;⑤蒸馏水。

六、方法步骤1.制备试剂。

2.可溶性还原糖的鉴定、方法、步骤。

3.脂肪的鉴定、方法、步骤。

4.蛋白质的鉴定、方法、步骤。

七、实验过程新课引入:我们在化学中学习过物质的鉴定,其原理是被鉴定的物质与所用的化学试剂要么发生颜色反应,要么产生沉淀,我们生物学上也采用此原理,在生物学中物质鉴定的理念是:某些化学试剂能够使生物组织中的有关有机化合物产生特定的颜色反应。

新课教学:(具体原理)①可溶性还原糖+ 斐林试剂→砖红色沉淀。

(水浴加热)②脂肪小颗粒 + 苏丹Ⅲ染液→橘黄色小颗粒。

实验五 循环结构程序设计

实验五  循环结构程序设计

实验五循环结构程序设计一、实验目的(1)掌握使用while语句,do-while语句和for语句实现循环的方法。

(2)掌握在循环结构中使用break与continue语句的方法。

(3)掌握多重循环的使用方法。

二、实验步骤、数据记录及处理(1)编写程序输出半径为1到15的圆的面积,若面积在30到100之间则予以输出,否则,不予输出。

程序代码:#include<stdio.h>int main(){int i;float area;for(i=1;i<=15;i++){area=3.14*i*i;if(area<30) continue;else if(area>100) break;printf("半径为%d的圆的面积为%6.2f\n",i,area);}return 0;}运行结果:(2)输入一个正整数x(可以是1-9位的正整数),将其转换为逆序正整数y输出,例如输入x的值为3456,则输出y的值6543。

程序代码:#include<stdio.h>int main(){int num,temp,i=0;printf("请输入一个数字:");scanf("%d",&num);while(num>0){temp=num%10;++i;printf("%d",temp);num=num/10;}printf("\n这个数是%d位数",i);return 0;}运行结果:(3)编写程序,分行输出斐波那契Fibonacci数列的前20项(每行5个数)。

说明:斐波那契序列:1,1,2,3,5,8,13,21,……题目扩展(选做):求Fibonacci数列中小于t的最大的一个数,其中t由键盘输入。

例如:输入t=1000时,则输出987。

程序代码:#include <stdio.h>void main(){int i,a[20];a[0]=1;a[1]=1;for(i=2;i<20;i++)a[i]=a[i-1]+a[i-2];i=0;while(i<20){printf("%d\t",a[i++]);if(i%5 == 0)printf("\n");}}运行结果:(4)编写程序,输出“九九乘法口诀表”。

以培养计算思维为导向的《计算机科学导论》实践教学案例设计

以培养计算思维为导向的《计算机科学导论》实践教学案例设计

第18卷第7期2019年7月软件导刊・教育技术Journal of Educational TechnologyVol.l8No.7Jul.2019以培养计算思维为导向的《计算机科学导论》实践教学案例设计袁红娟,朱晔,郦丽(泰州学院计算机科学与技术学院,江苏泰州225300)摘要:通过《计算机科学导论》实践教学案例——康托公式的设计与实现,有效培养学生的计算思维。

实践教学案例分别采用递推算法和递归算法实现,提升知识的创新性、挑战度,打造实践教学“金课&关键词:计算思维;递推;递归;康托公式中图分类号:G434文献标识码:A文章编号:1672-7800(2019)07-0046-040引言计算思维是运用计算机科学的基础概念进行问题求解、系统设计,以及人类行为理解等涵盖计算机科学之广度的一系列思维活动计算思维概念由美国卡内基・卡梅隆大学计算机科学系主任周以真教授于2006年首次提出&“通过中美高水平大学课堂教学的对比,可以看到一流大学教育的目的:不只是学知识、学能力,而且是学会一种思维方式,培养学生批判性独立思考的能力,并为终身学习打下基础”。

《计算机科学导论》课程是计算机专业本科生的入门课程,肩负着引导大一新生正确认知和学习计算机科学知识的重任&除了理论知识的学习,在实践教学设计中,重点培养学生独立的计算思维&2018年,在广州大学举办的“第十一届中国大学教学论坛”上,吴岩司长提出(课程是教育最微观问题,解决的是教育最根本问题。

各高校要全面梳理各门课程的教学内容,淘汰'水课1打造'金课1合理提升学业挑战度,拓展课程深度,切实提高课程教学质量”。

上述提议,强化了人才培养的核心地位,一流本科教育的基础地位,要求建设中国大学“金课”。

泰州学院计算机科学与技术学院,以《计算机科学导论》作为打造“金课”课程教学改革的先锋,相继申报了校级重点教改课题、校级精品在线开放课程建设项目。

C语言程序设计实验(5-7)

C语言程序设计实验(5-7)

C语⾔程序设计实验(5-7)实验41. 以下⼏段源程序有错,请调试修改正确。

①/*源程序实现的功能:输⼊两个实数,按从⼩到⼤的顺序输出*/ main(){ float a,b,t;scanf(“%f,%f”,&a,&b);if (a>b)t=a;a=b;b=tprintf(“%5.2f,%5.2f”,a,b);}#includeint main(){float a,b,t;scanf("%f,%f",&a,&b);if (a>b){t=a;a=b;b=t;}printf("%5.2f,%5.2f",a,b);}②该源程序实现的功能是:有如下函数关系:x (x>0)y= ? 2 (x=0)3x (x<0)根据输⼊的x值,求出y的值。

main( ){ int x,y;printf(“Enter x:”);scanf(“%d”,&x);if x>0 y=x;else if(x=0) y=2;else y=3*x;printf(“x=%d y=%d\n”,x,y);}#includeprintf("Enter x:");scanf("%d",&x);if(x>0)y=x;else if(x==0)y=2;else y=3*x;printf("x=%d y=%d\n",x,y);}#includeint main(){int x,y;scanf("%d",&x);if(x<1)y=x;else if(x<10)y=2*x-1;elsey=3*x-11;printf("y=%d",y);}某物品原有价值为p, 由于使⽤使其价值降低,价值的折扣率根据时间t(⽉数)确定如下:t<3,⽆折扣3<=t<6,2%折扣6<=t<12,5%折扣12=t>=21,10%折扣编程实现:根据输⼊的时间和原有价值计算物品的现有价值。

实验五汇编语言程序设计实验(一)

实验五汇编语言程序设计实验(一)

实验五汇编语言程序设计实验(一)一、实验目的1、了解和掌握汇编语言子程序和主程序的设计。

2、掌握循环程序的设计。

3、掌握汇编语言主程序与子程序的调用和参数传递。

4、进一步熟悉在PC机上建立,汇编,链接,调试和运行8086、8088汇编语言程序的过程。

二、实验内容1、复习汇编语言源程序的上机过程:2、编写一个完整程序(包含循环设计和子程序设计)在以strg为首地址的缓冲区中存放着1个字符串,以-1作为结束标志,编程统计字符串长度,并将结果存入lenth单元。

要求统计字符串用子程序完成。

data segmentstrg db ‘abcd’,-1lenth dw ?data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axlea dx,strgcall scountmov lenth,bxmov ah,4chint 21hscount proc nearpush sixor bx,bxmov si,dxnext:cmp byte ptr[si],-1jz overinc bxinc sijmp nextover:pop siretscount endpcode endsend start三、实验器材IBM PC 微机一台四、实验要求1、正确理解本次实验的目的,内容和原理。

2、能编写相应的程序五、实验报告要求完成下面任务:从键盘输入1个长度小于100的字符串,存入以buff 为首地址的缓冲区,其中如有大写字母,要求用子程序转换成小写字母,字符串以回车键作为结束。

写出操作步骤,程序清单,程序注释,实验现象。

上机实验五 循环结构程序设计一(带参考答案)

上机实验五 循环结构程序设计一(带参考答案)

上机实验五循环结构程序设计(一)一.目的要求1.掌握while、do-while、for语句的语法规则、执行流程。

2.比较3种循环语句的异同。

3.按题目要求,完成代码。

二.实验内容思考问题:3种循环的异同点?能否相互转换?for循环控制单元的表达式与while循环中表达式是如何对应的?第1题、分别用while、do-while、for语句编程,求数列前20项之和:2/1,3/2,5/3,8/5,13/8······算法提示:1)定义实变量sum、term、a、b、c,整变量i2)初始化:sum=0,分子a=2,分母b=13)初始化:i(计数器)=14)计算第i项term =a/b5)累加sum=sum+term6)计算c=a+b,更新b= a,更新a=c7)计数器加1,i++8)重复4、5、6、7,直到i>209)输出2位精度的结果编写程序:方法一,用while语句:#include<stdio.h>void main(){float s=0, a=2,b=1,c;int i=1;while(i<=20){s=s+a/b;c=a+b;b=a;a=c;i++;}printf(“s=%.2f”,s);}方法二,用do-while语句:#include<stdio.h>void main(){float s=0,a=2,b=1,c;int i=1;do {s=s+a/b;c=a+b;b=a;a=c;i++;} while(i<=20);printf(“s=%.2f”,s);}方法三,用for语句:#include<stdio.h>void main(){float s=0,a=2,b=1,c;int i;for(i=1;i<=20;i++){s=s+a/b;c=a+b;b=a;a=c;}printf(“s=%.2f”,s);}第2题、计算多项式的值:s=1!+2!+3!+4!+ (20)算法提示:该多项式迭代公式为:term=term*i,sum=sum+term注意:哪些变量需要初始化?变量应采用什么类型?编写程序:#include<stdio.h>void main(){int i;double s=0,fact=1;for(i=1;i<=20;i++){fact*=i;s=s+fact;}printf(“s=%f”,s);}把每一次迭代结果输出,程序应做怎样的修改?第3题、输入x和n,计算并输出下式的值:s=x/1+x/3+……+x/n参考答案:#include <stdio.h>int main(){int n,i;float x,s=0;printf("请输入x,n,以,分隔");scanf("%f,%d",&x,&n);for(i=1;i<=n;i+=2){s+=(x/i);}printf("\ns=%f",s);}第4题、输入一批正整数,求出其中的偶数之和。

汇编语言子程序设计实验心得(精选5篇)

汇编语言子程序设计实验心得(精选5篇)

汇编语言子程序设计实验心得(精选5篇)在刚进入大学得知数学专业也要学习程序设计的时候,我的内心充满了喜悦,因为我喜欢数学的同时,一样喜欢计算机。

虽说程序设计只是计算机专业的冰山一角,但这却是基础,所以我下定决心要学好它。

前段时间,我们学习了前五章的内容。

第一章主要对c语言进行了简单的介绍;第二章便是对最基础知识的介绍:C语言的数据类型、常用的简单符号、运算符的结合性等;而第三章就开始进行一些简单的算术运算了,千万别以为这就是小学数学水平的东西,其实这跟数学还是有差别的;第四章键盘输入和屏幕输出就是告诉我们如何进行人机交流,把自己的东西输入电脑,再在屏幕上显示出来;第五章便开始利用计算机进行程序设计来解决生活中的实际问题,而这就需要一个很重要的结构——选择控制结构。

虽然刚开始学习的内容还不是很多,但我却在这为时不长的学习中,深深地感受到了c语言的魅力,以及它强大的“功效”:C语言语言虽简单,但表达能力却强,使用起来灵活方便,而且程序设计自由度大,我们可以从多角度寻找解决问题的方案。

虽然人的能力很强,但不是所有问题解决的最佳途径依赖于人,有时候依靠C语言既省时又省力。

就像对很多的数据进行运算时,对人来说可谓是一项大工程,一点不注意就会全盘皆输,要重新来过,让人头大;而对计算机来说,它只会执行你的指令,不管其他,没有枯燥,不懂乏味,更重要的是,效率尤其高。

不止计算,C语言还有很多用处。

刚开始的时候,我错误的认为C语言跟数学没有太大差别。

然而接触过后我才发现自己错的很离谱。

虽然C语言与数学有着难舍难分的关系,但C语言就是C 语言,它有着自己的语言,自己的思想跟自己的规则。

我们可以借助数学更好的掌握C语言,但不能因此混淆二者。

就像数学语言在程序中是不一定能够识别的(“=”在数学中是等于,在C语言中是赋值,C语言中的等于是“==”),虽然数学对C语言帮助很大,但C语言却不会因此就放你程序通过,不识别就是不识别,除非你用我自己的东西。

国家开放大学-Python程序设计 实验5-利用 Pandas 进行空气质量数据分析-实验报告(1)

国家开放大学-Python程序设计 实验5-利用 Pandas 进行空气质量数据分析-实验报告(1)

实验名称:Python程序设计课程实验报告实验5利用Pandas进行空气质量数据分析
教师评语
教师签字日期成绩
学生姓名学号
一、实验目标
1.掌握CSV文件的读取方法。

2.掌握填补缺失值的方法。

3.掌握dataframe的广播特性。

4.理解groupby的使用方法
二、实验环境
Jupyter
Python3.8.7
Windows10
三、实验内容
1.准备格式化数据。

2.通过案例掌握Pandas进行数据处理的基本操作方法。

3.掌握Linux有关文件和目录操作的常用命令。

4.学会用系统调用和库函数进行编程,实现对文件的创建、打开、关闭、读和写四、实验成果
五、实训体会
学习了缺失值的查询与统计列删除,列均值计算的方法。

C语言实验报告实验五参考答案

C语言实验报告实验五参考答案

C语言实验报告实验五参考答案实验五一维数值数组(参考答案)1、设计程序sy5-1.c,计算n门课程的平均分。

例如:若有5门课程的成绩是:90.5.72.80.61.5.55,则平均分是:71.80.算法分析:先求n门课的成绩总和,(累加求和),再用累和除以课程数。

参考答案:includevoid main()double score[30]。

sum=0,aver;int n,i;printf("Inputn:");scanf("%d",&n);printf("请依次输入%d门课程的成绩",n);for(i=0;i<n;i++)scanf("%lf",&score[i]);sum=sum+score[i];aver=sum/n;printf( "\nAverage scoreis: %5.2f\n"。

aver);运行结果:2、设计步伐sy5-2.c,对输入的10个整数按倒序寄存后输出成效。

算法阐发:利用“半数交流”算法,最前面的元素和末了面的元素交流,逐步向中央挨近。

可利用两个下标变量i和XXX。

参考答案:includeint main()int a[10]={1,2,3,4,5,6,7,8,9,10};int i,j,t;for( i=0,j=9.i<j。

i++,j--)//逐一向中,交换。

直到已没有元素没交换t=a[i]。

a[i]=a[j]。

a[j]=t;}// a[i]-数组前端的数,a[j]-数组后端的数printf("交流后数组元素是:");for(i=0;i<10;i++)printf("%5d",a[i]);//%5d,5透露表现宽度printf("\n");//输出完所有的数后换行return 0;运行结果:3、设计程序sy5-3.c,输入10个整数,找出其中的最大数及其所在的下标。

实验五TIM定时器实验

实验五TIM定时器实验

实验五 TIM定时器实验一、实验目的了解TIM定时器的原理与应用二、实验内容1.对TIM3定时器进行控制,使得PB5-TIM3通道2产生频率为12.5Hz的方波,该方波控制LED1的闪烁。

(特定频率产生)2.对周期进行设置,控制通用定时器3的2通道,实现1KHz的不同占空比波形,用于控制LED1亮度的明暗渐变。

(PWM脉冲宽度调制)三、实验仪器、设备计算机、开发板、keil软件四、软件程序设计1、频率产生控制LED闪烁实验根据任务要求,程序内容主要包括:①配置TIM3的通道2为输出比较模式(预分频系数设置为63),TIM3_CCR2=45000。

②在相应的TIM3定时器中断服务处理程序中根据定时器的值翻转输出电平。

以输出方波。

整个工程包含4类源文件:FWLIB--stm32f10x_gpio.c ST公司的标准库,包含了关于对通用IO口设置的函数。

stm32f10x_rcc.c ST公司的标准库,包含了关于对系统时钟设置的函数。

stm32f10x_USART.c ST公司的标准库,包含了关于对USART设置的函数。

stm32f10x_flash.c ST公司的标准库,包含了关于对flash设置的函数。

Misc.c ST公司的标准库,包含了关于中断设置的函数。

CM3—是关于CORETEX-M3平台的系统函数及定义App—main.c 例程的主函数。

App—tim.c 定时器3的设置。

App--stm32f10x_it.c 中断服务程序主函数如下://__________________________________________________________int main(void){/* System Clocks Configuration --72M*/RCC_Configuration();/* NVIC configuration *//*嵌套向量中断控制器说明了定时器3抢占优先级级别0(最多1位),和子优先级级别0(最多7位) */NVIC_Configuration();/*定时器3的初始化*/time_ini();while(1);}void time_ini(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB , ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);/* GPIOA Configuration: Channel 1 Output */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //PB5复用为TIM3的通道2GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3 , ENABLE);//TIM3局部复用功能开启在TIM3的局部复用开启时,PB5会被复用为TIM3_CH2/* Time Base configuration *//*-------------------------------------------------------------------TIM3CLK=72MHz 预分频系数Prescaler=63 经过分频定时器时钟为1.125MHz捕获/比较寄存器2 TIM3_CCR2= CCR2_Val2通道产生的更新频率是=1.125MHz/CCR2_Val=25Hz-------------------------------------------------------------------*/TIM3_TimeBaseStructure.TIM_Prescaler = 63; //预分频器TIM3_PSC=63TIM3_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //计数器向上计数模式 TIM3_CR1[4]=0TIM3_TimeBaseStructure.TIM_Period =0xffff; //自动重装载寄存器TIM3_APRTIM3_TimeBaseStructure.TIM_ClockDivision = 0x0; //时钟分频因子 TIM3_CR1[9:8]=00TIM_TimeBaseInit(TIM3,&TIM3_TimeBaseStructure); //写TIM3各寄存器参数TIM3_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle ; //TIM3_CCMR1[14:12]=011 翻转当TIM3_CCR2=TIM3_CNT时,翻转OC2REF的电平 TIM3_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //输入/捕获2输出允许 OC2信号输出到对应的输出引脚PB5TIM3_OCInitStructure.TIM_Pulse =CCR2_Val; //若CC1通道配置为输出:CCR2是装入当前捕获/比较2 TIM3_CCR2寄存器的值(预装载值)。

实验5 选择结构程序设计

实验5 选择结构程序设计

实验5 选择结构程序设计一、实验目的1.正确使用关系表达式和逻辑表达式表达条件。

2.学习分支语句if和switch的使用方法。

3.进一步熟悉TC集成环境的使用方法,学习TC环境提供的调试工具。

二、实验环境Visual c++6.0三、实验内容1.调试下列程序,使之具有如下功能:输入a、b、c三个整数,求最小值。

写出调试过程。

main(){ int a,b,c;scanf("%d%d%d",a,b,c);if((a>b)&&(a>c))if(b<c)printf("min=%d\n",b);elseprintf("min=%d\n",c);if((a<b)&&(a<c))printf("min=%d\n",a);}程序中包含有一些错误,按下述步骤进行调试。

2.编写程序给一个不多于5位的正整数,要求:1)求出它是几位数;2)分别打印出每一位数字;3)按逆序打印出各个数字。

四、实验要求1.复习关系表达式、逻辑表达式和if 语句、switch语句。

2.学习程序的调试方法。

3.编写程序,运行程序并记录运行结果4.完成实验报告。

五、选做题1.自守数是其平方后尾数等于该数自身的自然数。

例如:25*25=62576*76=5776任意输入一个自然数,判断是否自守数并输出:如: 25 yes 25*25=62511 no 11*11=121。

大学vb 实验作业5 顺序结构程序设计

大学vb  实验作业5 顺序结构程序设计
2、编写程序判断某年是否是闰年。
提示:闰年的判断条件
(1)如果此年号能被400整除;
(2)如果此年号能被4整除,但不能被100整除。
满足以上两条件之一,则提示该年是闰年,否则提示该年不是闰年。
3、在文本框1中输入1到7之间的整数,在文本2中显示对应的英文单词。对应规则如下:
1——星期一;2——星期二;3——星期三;4——星期四;
软件:Microsoft Visual Basic 6.0
实验内容
1、编写程序判断某个数是否是水仙花数。
小知识:一个三位数其各位数字立方和等于该数本身,这个数就是水仙花数。如153是一个“水仙花数”,因为153=13+53+33。
要求:用inputbox函数输入一个三位数,将判断结果输出在消息框上,如是则在消息框提示该数是水仙花数(如下图1),否则在消息框上提示该数不是水仙花数(如下图2)。
5——星期五;6——星期六;7——星期日
4、新建工程,在窗体上添加两个按钮,标题分别为“输入”和“交换”。
程序运行后,单击“输入”按钮,通过输入对话框输入两个整数;
单击“交换”按钮,如果第一个数小于第二个数,则交换两数。最后将两个数在窗体上显示出来。
实验小结
实验名称
实验五顺序结构程序设计
实验时间
第六周
实验目的
(1)掌握基本语句的用法
(2)掌握InputBox和MsgBox函数的用法
(3)进一步掌握编写简单顺序结构程序的方法
(4)掌握关系、逻辑表达式的正确书写形式
(5)掌握由IF语句构成的选择结构
(6)学会编写选择结构程序解决实际问题
实验环境
硬件:微型计算机
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五子程序结构设计
一、实验目的
1、加深对子程序的理解,掌握子程序的结构。

2、掌握子程序的设计、编写及调试方法。

二、实验内容
1、已知在内存数据段中GRADE开始单元连续存放着10个学生的成绩,试
采用子程序结构编程实现以下功能:
(1)找到最高成绩,将其偏移地址存放在内存单元MAX中。

(2)统计不及格的人数,存放在内存单元COUNT中。

(3)计算平均成绩(只取整数部分)。

(4)在屏幕上显示平均成绩。

要求:将以上功能分别写成子程序,数据区定义如下
DSEG SEGMENT
GRADE DB 76,68,54,80,45,92,63,58,94,85
MAX DW ?
COUNT DB ?
DSEG ENDS
答:源程序:
DATAS SEGMENT
GRADE DB 76,68,54,80,45,92,63,58,94,85
MAX DW?
COUNT DB?
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
MAIN PROC FAR
START: PUSH DS
MOV AX,0
PUSH AX
MOV AX,datas
MOV DS,AX
CALL MAXGRADE
CALL BUJIGE
CALL AVGRADE
RET
MAIN ENDP
MAXGRADE PROC FAR
push ax
push cx
push si
mov cx,10
mov ax,0
mov si,ax
start_loop:
mov ax,word ptr grade[si]
cmp ax,word ptr grade[si+1] jge big
mov ax,word ptr grade[si+1] big: inc si
loop start_loop
mov max,ax
pop si
pop cx
pop ax
ret
MAXGRADE ENDP
BUJIGE PROC FAR
PUSH SI
PUSH CX
PUSH AX
MOV AX,0
MOV COUNT,0
MOV CX,10
LOOP_START2:
MOV AX,WORD PTR GRADE[SI]
CMP AX,60
JG SMALL2
INC COUNT
SMALL2:
INC SI
LOOP LOOP_START2
POP AX
POP CX
POP SI
RET
BUJIGE ENDP
AVGRADE PROC FAR
push ds
sub ax,ax
push ax
mov ax,DATAS
mov ds,ax
mov cx,10
mov bx,0
mov dx,0
avg_grade_1:
mov al,grade[bx] cbw
add dx,ax
inc bx
loop avg_grade_1
mov ax,dx
mov bl,10
div bl
sub ah,ah
div bl
push ax
add al,30h
mov dl,al
mov ah,02
int 21h
pop ax
add ah,30h
mov dl,ah
mov ah,02
int 21h
mov ah,4ch
int 21h
ret
AVGRADE ENDP CODES ENDS
END
运行结果:
2、编写程序实现十进制数的加减运算。

数据段可照如下设置(也可自己定义格式):DA TA SEGMENT
mes1 db 'please input the first operand:$' ;请输入第一个数
mes2 db 'please input the second operand:$' ;请输入第二个数
mes3 db 'please input the operator:$' ;请输入操作符
mes4 db 'output the Calculated Results:$' ;输出计算结果
DA TA ENDS
下面的结果截图仅供参考:(以输入任意非十进制字符作为输入结束)
(做减法若结果为负数要输出负号)
答:源程序:
datas segment
x1 dw 0
y1 dw 0
z1 dw 0
mess1 db' please input the first operand:$ ' mess2 db' please input the second operand:$ ' mess3 db' pleade input the operaor:$ '
mess4 db' output the Calculated Result:$ ' datas ends
codes segment
assume cs:codes,ds:datas
main proc far
push ds
sub ax,ax
push ax
START:
MOV AX,DATAS
MOV DS,AX
call input
call crlf
call input2
call crlf
call jiajian
call crlf
call jieguo
ret
main endp
multily macro mess
local newchar,exit1
lea dx,mess
mov ah,09
int 21h
newchar:
mov ah,1
int 21h
mov dl,al
sub al,30
jl exit1
cmp al,9d
jg exit1
cbw
xchg ax,bx
add bx,ax
jmp newchar
exit1:
ret
endm
input proc near
multily mess1
mov x1,bx
ret
input endp
input2 proc far
multily mess2
mov y1,bx
ret
input2 endp
defmac macro fuhao,operator fuhao macro x,y,z
push ax
mov ax,x
operator ax,y
mov z,ax
pop ax
endm
endm
jia proc near
defmac addition,add
ret
jia endp
jian proc near
defmac subtract,sub
ret
jian endp
jiajian proc near
lea dx,mess3
mov ah,09
int 21h
mov ah,1
int 21h
mov ax,bx
cmp al,2bh
je add1
cmp al,2dh
je sub1
jmp next
add1:
call jia
addition x1,y1,z1 mov bx,z1
jmp next
sub1:
call jian
subtract x1,y1,z1 mov bx,z1
mov ax,bx
int 21h
next:
ret
jiajian endp jieguo proc near
lea dx,mess4
mov ah,09
int 21h
mov al,bl
and al,0fh
add al,30h
cmp al,3ah
jl print
add al,7h
print:
mov dl,al
mov ah,2
int 21h
ret
jieguo endp
crlf proc near
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,02h
int 21h
ret
crlf endp
mov ah,4ch
int 21h
codes ends
end main
运行结果:
三、实验报告要求:
1、画出程序框图说明程序的基本结构,写出各个模块说明。

2、写出调试过程,并分析结果,说明程序存在的问题。

3、说明子程序结构的使用场合。

相关文档
最新文档