实验三简单程序调试
C语言程序设计实验3

一、实验目的1. 掌握简单的程序设计,能正确写出顺序结构的源程序。
2. 掌握数据的输入输出方法,能正确使用各种格式转换符。
二、实验内容(程序清单及运行结果)(一)阅读程序1.先读下列程序,写出程序运算结果,再将该程序输入并运行,观察运行结果与你所写的结果是否相同。
①int main(){ int x,y,z;x=y=2;z=3;y=x++-1; printf("%d\t%d\t",x,y);y=++x-1; printf("%d\t%d\t",x,y);y=z--+1; printf("%d\t%d\t",z,y);y=--z+1; printf("%d\t%d\n",z,y);return 0;}②int main(){ char c1='a',c2='b',c3='c',c4='\101',c5='\116';printf("a%cb%c\tc%c\tabc\n",c1,c2,c3);printf("\tb%c%c",c4,c5);return 0;}2.以下各程序需要输入数据,请写出输入数据的格式和变量的值并上机验证。
①#include <stdio.h>int main(){ int a,b,c;printf("input a,b,c\n");scanf("%d%d%d",&a,&b,&c);printf("a=%d,b=%d,c=%d",a,b,c);return 0;}②main(){ int i, j;printf("i, j=?\n");scanf("%d, %d", &i, &j);}③scanf(“%d,%*d,%d”,&a,&b);若输入:3,4,5a=? b=?④scanf(“%3d%2d”,&a,&b);若输入:12345a=?b=?⑤按格式要求输入/输出数据#include "stdio.h"int main(){ int a,b;float x,y;char c1,c2;scanf(“a=%d,b=%d”,&a,&b);scanf(“%f, %e”,&x,&y);getchar();scanf(“%c %c”,&c1,&c2);printf(“a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n”,a,b,x,y,c1,c2);return 0;}运行该程序,必须按如下方式在键盘上输入数据a=3,b=7 ↙8.5,71.82 ↙a A ↙请同学们写出输出结果(二)完成程序要求:按照给定题目要求,参照出现的语句,填写程序空白处。
实验三_M_文件及_MATLAB_程序设计与调试

实验三M 文件及MATLAB 程序设计与调试一、实验目的全面掌握在MA TLAB 下进行程序设计的有关问题,具体涉及到M 脚本文件和M 函数文件的编写、全局和局部变量的使用、流程控制结构、提高程序执行效率的设计技术、程序调试等问题。
二、实验内容1、关于M 脚本文件和M 函数文件MATLAB 的M 文件有两类:脚本文件和函数文件。
(1)脚本文件——将原本要在MATLAB 的指令窗口中直接输入的语句,放在一个以.m 为后缀的,称为脚本文件中。
有了脚本文件,可直接在MATLAB 中输入脚本文件名(不含后缀)。
MATLAB 会打开这一脚本文件,并依次执行脚本文件中的每一条语句,这与在MATLAB 中直接输入语句的结果完全一致。
(2)函数文件——它的第一行必须是函数定义行。
M 函数文件由5 部分构成:◆函数定义行◆H1 行◆函数帮助文本◆函数体◆注释注意:在函数文件中,除了函数定义行之外,其它部分都是可以省略的。
但作为一个函数,为了提高函数的可用性,应加上H1 行和函数帮助文本,为了提高函数的可读性,应加上适当的注释。
例如:function y = mean(x)% MEAN Average or mean value.% For vectors, MEAN(X) is the mean value of the elements in X.% For matrices, MEAN(X) is a row vector containing the mean value of each column.[m,n]=size(x);if m==1% Determine whether x is a vectorm=n;endy = sum(x)/m;①函数定义行:function y = mean(x)function 为函数定义的关键字,mean 为函数名,y 为输出变量,x 为输入变量当函数具有多个输出变量时,则以方括号括起;当函数具有多个输入变量时,则直接用圆括号括起。
操作系统实验3-进程控制

WORD wMajorReq=(WORD)(dwVerReq>16);
WORD wMinorReq=(WORD)(dwVerReq&0xffff);
::cout<<"Process ID:"<<dwIdThis<<",requires OS:"<<wMajorReq<<wMinorReq<<::endl;
{
//改变优先级
::SetPriorityClass(
::GetCurrentProcess(), //利用这一进程
HIGH_PRIORITY_CLASS); //改变为high
//报告给用户
::cout<<"Task Manager should indicate this "
"process is high priority."<<::endl;
//设置版本信息的数据结构,以便保存操作系统的版本信息
OSVERSIONINFOEX osvix;
::ZeroMemory(&osvix,sizeof(osvix));
osvix.dwOSVersionInfoSize=sizeof(osvix);
//提取版本信息和报告
::GetVersionEx(reinterpret_cast<LPOSVERSIONINFO>(&osvix));
Parent();
}
return 0;
}
分析:程序4-3.cpp说明了一个进程从“生”到“死”的整个一生,第一次执行时,它创建一个子进程,其行为如同“父亲”。在创建子进程之前,先创建一个互斥的内核对象,其行为对于子进程来说,如同一个“自杀弹”。当创建子进程时,就打开了互斥体并在其他线程中进行别的处理工作,同时等待着父进程使用ReleaseMutex()API发出“死亡”信号。然后用Sleep()API调用来模拟父进程处理其他工作,等完成时,指令子进程终止。
实验三 模块化程序设计

实验三模块化程序设计【实验目的】1.理解和掌握多模块的程序设计与调试的方法;2.掌握函数的定义和调用的方法;3.学会使用递归方法进行程序设计。
【实验内容】1.编写一个函数,判断一个数是不是素数。
在主函数中输入一个整数,输出是否是素数的信息。
实验步骤与要求:(1) 编写一个函数isprime(n),如果n是素数返回1,否则返回0。
(2) 编写一个主函数,输入一个整数,调用isprime( )函数,判断此整数是否为素数,并输出结果。
函数isprime(n)算法说明:(1) k = sqrt(n)(2) i = 2(3) 当i <= k时,执行(3.1)(3.2),否则转(4)(3.1) if ( m % i == 0 ) return 0(3.2) i=i+1(4) return 1#include<stdio.h>#include<math.h>int isprime(int n){int i;double k;i=2;k = sqrt(n);while(i<=k){if(n%i==0) return 0;i++;}return 1;}main(){int a;int t=1;printf("请输入一个整数\n");scanf("%d",&a);t=isprime(a);printf("%d",a);if(t==0) printf("不是素数\n");else printf("不是素数\n");}2.编写函数Celsius返回华氏温度对应的摄氏温度,函数Fahrenheit返回摄氏温度对应的华氏温度。
用这些函数编写程序,打印从0到100的所有摄氏温度及对应的华氏温度,32到212度的所有华氏温度及对应的摄氏温度。
实验步骤与要求:(1)用整齐的表格形式输出。
C语言程序设计实验三答案

实验三 选择结构程序设计一、实验目的与要求1. 理解C 语言表示逻辑量的方法,学会正确使用逻辑运算符和逻辑表达式。
2. 掌握利用if 结构实现选择结构的方法。
3. 掌握利用switch 结构实现多分支选择结构。
4. 结合程序掌握一些简单的算法,学习调试程序5. 实验4学时二、实验内容1.程序改错题改正下面程序中的错误。
输入实数x ,计算并输出下列分段函数f(x)的值(保留1位小数)。
)100(1=x x==)(x f y)100(≠x x输入输出示例1(改正后程序的运行结果)Enter x :100f )=输入输出示例2(改正后程序的运行结果)Enter x :23f )=源程序(有错误的程序)#include<>#include<>void main(void){double x;printf("Enter x: \n");scanf("=%f", x);if (x = 100) {y = 1/sqrt(x)}else (x != 100) {y = x;}printf("f(%.2f) = %.1f\n",x,y);}答:#include<>#include<>void main(void){double x,y;printf("Enter x:\n");scanf("%lf",&x);if (x=100)y = 1/sqrt(x);elsey= x;printf("f(%.2lf)=%.1lf\n",x,y);}2.一般编程题编程题1输入任意三个整数a,b,c ,求3个数中的最大值和最小值。
答:#include <>void main(){int a,b,c;printf("请输入三个整数:");scanf("%d %d %d",&a,&b,&c);if (a>=b)t=a,a=b,b=t;if (a>=c)t=a,a=c,c=t;if (b>=c)t=b,b=c,c=t;printf("最小值为:%d\n",a);printf("最大值为:%d\n",c);}编程题2输入x ,计算并输出下面分段函数f(x)的值(保留2位小数)。
微机原理实验三实验报告

实验3. 循环程序设计一、实验目的⒈掌握移位指令的使用方法。
⒉学会循环结构程序的编程方法。
⒊利用DEBUG调试程序查看循环程序循环过程中CS和IP的变化情况。
二、实验要求⒈编写程序并上机调试,记录运行结果。
⒉用DEBUG调试程序调试所编程序,查看并记录每条指令内存单元地址及执行结果(包括F标志寄存各位值。
)⒊注意观察并记录每条指令执行后CS和IP寄存器值变化情况,以加深对循环程序的概念的理解。
三、实验内容⒉编写统计15个学生数学学习成绩程序。
要求:分别统计出低于60分,60-69分,70-79分,80-89分,90-100分的人数,并存放到S5,S6,S7,S8,S9,S10对应内存单元中。
源程序代码;DATA SEGMENTDATA1 DB 55,60,65,88,67,70,75,80,77,85,90,66,95,53,100DATA2 DB 5 DUP(?)DATA ENDS;CODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,15LEA SI,DATA1LEA DI,DATA2AGAIN:MOV AL,[SI]CMP AL,90JB NEXT1INC BYTE PTR[DI]JMP NEXT0NEXT1:CMP AL,80JB NEXT2INC BYTE PTR[DI+1]JMP NEXT0NEXT2:CMP AL,70JB NEXT3INC BYTE PTR[DI+2]JMP NEXT0NEXT3:CMP AL,60JB NEXT4INC BYTE PTR[DI+3]JMP NEXT0NEXT4:INC BYTE PTR[DI+4]NEXT0:INC SILOOP AGAINMOV AH,4CHINT 21HCODE ENDSEND START程序运行结果截图:四、实验总结本次实验掌握移位指令的使用方法。
20155313实验三《Java面向对象程序设计》实验报告

20155313实验三《Java⾯向对象程序设计》实验报告⼀、实验内容XP基础XP核⼼实践相关⼯具⼆、实验要求1.没有Linux基础的同学建议先学习《Linux基础⼊门(新版)》《Vim编辑器》课程2.完成实验、撰写实验报告,实验报告以博客⽅式发表在博客园,注意实验报告重点是运⾏结果,遇到的问题(⼯具查找,安装,使⽤,程序的编辑,调试,运⾏等)、解决办法(空洞的⽅法如“查⽹络”、“问同学”、“看书”等⼀律得0分)以及分析(从中可以得到什么启⽰,有什么收获,教训等)。
报告可以参考范飞龙⽼师的指导3.严禁抄袭,有该⾏为者实验成绩归零,并附加其他惩罚措施。
三、实验步骤1. 在IDEA中使⽤⼯具(Code->Reformate Code)把下⾯代码重新格式化,再研究⼀下Code菜单,找出⼀项让⾃⼰感觉最好⽤的功能。
提交截图,加上⾃⼰学号⽔印。
public class CodeStandard {public static void main(String [] args){StringBuffer buffer = new StringBuffer();buffer.append('S');buffer.append("tringBuffer");System.out.println(buffer.charAt(1));System.out.println(buffer.capacity());System.out.println(buffer.indexOf("tring"));System.out.println("buffer = " + buffer.toString());if(buffer.capacity()<20)buffer.append("1234567");for(int i=0; i<buffer.length();i++)System.out.println(buffer.charAt(i));}}2. 在码云上把⾃⼰的学习搭档加⼊⾃⼰的项⽬中,确认搭档的项⽬加⼊⾃⼰后,下载搭档实验⼆的Complex代码,加⼊不少于三个JUnit单元测试⽤例,测试成功后git add .; git commit -m "⾃⼰学号添加内容";git push;提交搭档项⽬git log的截图,包含上⾯git commit的信息,并加上⾃⼰的学号⽔印信息。
软件调试实验报告

一、实验目的1. 理解软件调试的基本概念和重要性。
2. 掌握常用的调试工具和技巧。
3. 提高问题定位和解决能力。
二、实验环境1. 操作系统:Windows 102. 编程语言:C++3. 调试工具:Visual Studio 20194. 软件版本:Visual Studio 2019 Enterprise三、实验内容本次实验主要涉及以下内容:1. 简单程序的调试2. 复杂程序的调试3. 调试技巧和工具的使用四、实验步骤1. 简单程序的调试(1)编写一个简单的C++程序,实现以下功能:```cpp#include <iostream>using namespace std;int main() {int a = 5;int b = 10;int sum = a + b;cout << "The sum of a and b is: " << sum << endl;return 0;}```(2)编译并运行程序,观察输出结果。
(3)使用Visual Studio 2019的调试功能,设置断点,逐步执行代码,观察变量值的变化。
(4)分析代码,找出错误原因,修改程序。
2. 复杂程序的调试(1)编写一个复杂的C++程序,实现以下功能:```cpp#include <iostream>#include <vector>using namespace std;int factorial(int n) {if (n <= 1) return 1;return n factorial(n - 1);}int main() {vector<int> numbers = {3, 4, 5, 6, 7, 8, 9, 10};for (int i = 0; i < numbers.size(); i++) {cout << "Factorial of " << numbers[i] << " is: " <<factorial(numbers[i]) << endl;}return 0;}```(2)编译并运行程序,观察输出结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三 简单程序调试
一、实验目的
初步掌握汇编语言程序设计及调试的方法 二、实验仪器
1、 DVCC-598JH 单片开发机一台;
2、 WD-5 型直流稳压源一台。
三、实验预习
1、认真阅读实验指导书有关内容,明确实验目的、内容和操作步骤;
2、对实验中的程序进行手工汇编;
3、复习实验中相关指令的功能;
4、复习顺序结构程序设计思想。
四、实验内容
程序一: BCD 码数的加法运算
设有两个4位压缩的BCD 码数,一个数存放在片内RAM31H (千位、百位) 和30H (十位、个位)单元,另一个数高位存在 33H 单元,低位存在32H 单元, 求两数之和,其结果存30H 和31H 单元。
参考程序:
地址
目标程序 源程序
ORG 1000H
1000 7830 MOV R0,
#30H
1002 7932 MOV R1,
#32H
1004 E6 MOV A , @R0 1005 27 ADD A , @R1 1006 D4 DA
A
1007 F6 MOV @R0, A
1008
08
INC R0
100909INC R1
100A E6MOV A,@R0
100B 37 ADDC A ,
@R1
100C D4 DA A
100D F6 MOV @R0,
A 100E
80FE
SJMP $
END
程序二: 拆字程序
设有一个 8 位二进制数存放在片内 RAM40H 单元,将其拆为两个 4 位二进
制数,高 4 位存于 41H 单元,
低 4 位存于 42H 单元。
参考程序:
ORG
1000H
START :
MOV A , 40H ; 取数
ANL A , #0FH ;屏蔽高四位
MOV
42H , A ; 存低四位数
MOV
A , 40H ; 重新取数
SWAP
A ;高低四位互换
ANL
A , #0FH ;屏蔽低四位
MOV
41H , A ; 存高四位数
SJMP
$
END
程序三: 负数求补程序
已知一个16位二进制负数存放在R1R0中,试求其补码,并将结果存在R3R2 中。
提示:二进制负数的求补方法可归纳为“求反加 1”。
即可利用CPL 指令实 现求反,而 16 位加 1,则应是低 8位先加 1 ,高8位再加上低位的进行位。
注意, 这里不能用 INC 指令,因 INC 指令不影响标志位。
参考程序:
ORG 1000H START : MOV
A , R0 ;读低 8 位
CPL
A
;取反
ADD A ,#01H;加1
MOV R2,A;存低8 位
MOV A ,R1;读高8 位
CPL A;取反
ADDC A ,#00H;加进位
MOV20H,R1;高8位一位寻址区
MOV
C,
07H;
符号位-C
MOV
ACC.7 ,
C;恢复符号
MOV R3,A;存高8 位
SJMP$
END
五、实验步骤
1、认真阅读实验参考程序并分析程序运行后的理论结果;
2、输入程序并检查输入是否正确;
3、根据已知条件输入程序执行前的原始数据;
4、执行程序,检查并记录结果;
六、练习
1、试编写计算6655H+11FFH 的程序。
提示:被加数和加数是16 位数,需分两步完成计算,首先将两数的低位相加,若有进位,保存在C Y中;然后再将两数的高8位连同进位位相加,结果存入
50H、51H 单元中。
2、编写程序,将片内41H 和42H 单元的两个4 位二进制数进行组合,存放于40H单元。
41H单元的数作为低4位,42H单元的数作为高4位。
七、实验报告
1 、整理记录结果,并与理论结果进行比较;
2、调试过程及体会;
3、思考BCD 码相减的实现方法;
4、思考有符号数的求补方法。