文档库 最新最全的文档下载
当前位置:文档库 › 2_字符及字符串输入输出与顺序程序设计实验(1)

2_字符及字符串输入输出与顺序程序设计实验(1)

2_字符及字符串输入输出与顺序程序设计实验(1)
2_字符及字符串输入输出与顺序程序设计实验(1)

2.2 字符及字符串输入输出与顺序程序设计实验

2.2.1 实验目的

1、学习和掌握字符及字符串的输入输出方法。

2、掌握顺序程序的设计方法。

3、进一步掌握调试工具的使用方法。

2.2.2 实验预习要求

1、复习DOS功能调用中用于字符输入(功能号01H)、字符输出(功能号02H)、字符串输入(功能号

为0AH)以及字符串输出(功能号09H)的调用方法(详见教材5.5.6)。

2、复习BCD码运算调整指令。

3、根据“2.2.3 实验内容”中给出的源程序框架编写完整的源程序,以便实验时调试。

4、从“2.2.4 实验习题”中任选一道题目,编写源程序,以便上机调试。

2.2.3实验内容

从键盘输入两个一位十进制数,计算这两个数之和,并将结果在屏幕上显示出来。

1、问题分析

比如使用功能号为01H的用于实现单个字符输入的DOS功能调用接收从键盘输入的两个十进制数8和6,这时计算机内部得到的是这两个数的ASCII码值38H和36H。由于数字0 9的ASCII码值与其代表的数值之间相差30H,因此将其减去30H即可得到以非压缩型BCD数形式表示的十进制数08H和06H,使用ADD指令对它们进行相加后结果为0EH(00001110B),显然需要用非压缩型BCD数加法调整指令对ADD的运算结果进行调整,调整后得到两个非压缩型BCD数01H和04H,将它们分别加上30H后变为其对应的ASCII码31H(1的ASCII码)和34H(4的ASCII码),然后调用功能号为02H 用于单个字符输出的DOS功能调用将它们显示出来。综上所述,需要考虑以下问题。

(1)从键盘输入一个一位十进制数的方法

通过功能号为1的DOS功能调用实现从键盘输入一个字符,格式如下:

MOV AH, 01H

INT 21H ;此时程序等待用户键入,键入字符的ASCII码值存在AL中

SUB AL, 30H ;减去30H后得到键入数字所代表的数值

(2)提示信息字符串的显示

通过功能号为9的DOS功能调用实现字符串显示,注意字符串的最后一个字符必需为’$’。指令格式如下:

MOV DX, OFFSET INFOR1 ;INFOR1为在数据段中定义的要显示的字符串

MOV AH, 09H

INT 21H

(2)非压缩型BCD数加法调整指令的使用

设从键盘输入的数值已存放在寄存器AL, BL中,可用下列程序完成数据相加和调整操作:XOR AH,AH

ADD AL, BL

AAA ;执行该指令后,AH中为和的十位上的数字,AL中为个位上的数字请读者考虑,为什么要使用指令“XOR AH,AH”,不用行否?

(3)计算结果的显示

执行完AAA指令后,只需分别将AH(十位上的数值)和AL(个位上的数值)加上30H,并依次调用功能号为2的DOS功能调用来显示字符。具体指令代码如下:

PUSH AX

MOV DL, AH

ADD DL, 30H

MOV AH, 02H

INT 21H

POP AX

MOV DL, AL

ADD DL, 30H

MOV AH, 02H

INT 21H

2、源程序框架

DATA SEGMENT

INFOR1 DB "Please Input the First Data(<10):$"

INFOR2 DB 0AH,0DH,"Please Input the Second Data(<10):$"

INFOR3 DB 0AH,0DH,"The Result is:$" ;0DH和0AH分别为非显示字符回

;车和换行的ASCII码值,美圆符号“$”为字符串结束标志,不能省略。

DATA ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DA TA

START: MOV AX, DA TA

SUB AL, 30H

INT 21H

CODE ENDS

END START

3、程序调试

源程序编写完成后,先静态检查,无误后,对源程序进行汇编和连接,生成可执行文件。在DOS 命令提示符下运行该程序,分析运行结果是否正确。若结果不正确,使用DEBUG对其进行调试。

2.2.4 实验习题

1、设a,b,c,d为四个压缩型BCD数,它们被存放在内存dbcd开始的4个存储单元中,计算a+b+c+d,

并将结果在屏幕上显示出来(注意压缩型BCD数的表示方法:十进制数38表示成压缩型BCD数时应写成38H)。程序编写完成并运行正确后,打开源程序,改变a,b,c,d的内容,然后重新进行汇编、连接并运行程序,检查程序运行结果与手工计算结果是否相符。下面给出几组实验用数据:

(1)a=11, b=23, c=25, d=31

(2)a=10, b=20, c=30, d=40

(3)a=45, b=45, c=45, c=45

(4)a=88, b=99, c=77, d=66

(注意压缩型BCD数的表示方法:十进制数38表示成压缩型BCD数时应写成38H)

2、从键盘输入两个一位十进制数,计算这两个数之积,并将结果在屏幕上显示出来。

3、从键盘输入0 9中任意一个数自然数,将其平方值在屏幕上显示(使用查表法实现)。

2.2.5 实验报告要求

1、补全“2.2.3 实验内容”中源程序框架内未写出的程序代码,并说明你在调试该程序过程中遇到了哪

些问题,是如何处理的。

补全后的代码如下:

STACK SEGMENT

STL DB 100H DUP(?)

STACK ENDS

DATA SEGMENT

INFOR1 DB "Please Input the First Data(<10):$"

INFOR2 DB 0AH,0DH,"Please Input the Second Data(<10):$"

INFOR3 DB 0AH,0DH,"The Result is:$"

DATA ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DATA,SS:STACK

START: MOV AX, DA TA

MOV DS, AX

MOV AX, STACK

MOV SS, AX

MOV SP, LENGTH STL

;表达式“LENGTH STL”的功能为计算STL中定义的变量的个数,

;汇编后其值为100H ,详见教材5.2.2

MOV DX, OFFSET INFOR1

;INFOR1为在数据段中定义的要显示的字符串

MOV AH, 09H

INT 21H

MOV AH, 01H

INT 21H ;此时程序等待用户键入,键入字符的ASCII码值存在AL中

SUB AL, 30H ;减去30H后得到键入数字所代表的数值

MOV BL, AL

MOV DX, OFFSET INFOR2

;INFOR2为在数据段中定义的要显示的字符串

MOV AH, 09H

INT 21H

MOV AH, 01H

INT 21H ;此时程序等待用户键入,键入字符的ASCII码值存在AL中

SUB AL, 30H ;减去30H后得到键入数字所代表的数值

XOR AH,AH

MUL BL

AAA ;执行该指令后,AH中为和的十位上的数字,AL中为个位上的数字

PUSH AX

MOV DX, OFFSET INFOR3

;INFOR3为在数据段中定义的要显示的字符串

MOV AH, 09H

INT 21H

POP AX

PUSH AX

MOV DL, AH

ADD DL, 30H

MOV AH, 02H

INT 21H

POP AX

MOV DL, AL

ADD DL, 30H

MOV AH, 02H

INT 21H

MOV AH, 4CH

INT 21H

CODE ENDS

END START

在调试的过程中遇到的问题是和显示不正确,当时没有定义堆栈段,后加上了程序正常运行

2、从“2.2.4 实验习题”中任选一道题目,画出流程图,编写源程序,并说明在调试过程中遇到了哪些

问题,是如何处理的。

2. 从键盘输入两个一位十进制数,计算这两个数之积,并将结果在屏幕上显示出来。

调试中遇到的问题:

开始没有用的AAM指令,即非压缩型BCD乘法调整指令,而是沿用了上例中的AAA指令,结果中有些可以正常显示,如1*2,3*2,3*4,而像5*6,5*5,4*4就不能正常显示。后查书找到了乘法调整指令,修正后正常运行。

STACK SEGMENT

STL DB 100H DUP(?)

STACK ENDS

DATA SEGMENT

INFOR1 DB "Please Input the First Data(<10):$"

INFOR2 DB 0AH,0DH,"Please Input the Second Data(<10):$"

INFOR3 DB 0AH,0DH,"The Result is:$"

DATA ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DA TA,SS:STACK

START: MOV AX, DA TA

MOV DS, AX

MOV DX, OFFSET INFOR1

;INFOR1为在数据段中定义的要显示的字符串

MOV AH, 09H

INT 21H

MOV AH, 01H

INT 21H

;此时程序等待用户键入,键入字符的ASCII码值存在AL中

SUB A L, 30H ;减去30H后得到键入数字所代表的数值

MOV BL, AL

MOV DX, OFFSET INFOR2

;INFOR2为在数据段中定义的要显示的字符串

MOV AH, 09H

INT 21H

MOV AH, 01H

INT 21H

;此时程序等待用户键入,键入字符的ASCII码值存在AL中

SUB AL, 30H ;减去30H后得到键入数字所代表的数值

MUL BL ;AL BL相乘

AAM ;非压缩型BCD码乘法调整指令

PUSH AX

MOV DX, OFFSET INFOR3

;INFOR3为在数据段中定义的要显示的字符串

MOV AH, 09H

INT 21H

POP AX

PUSH AX

MOV DL, AH

;执行完AAM指令后,只需分别将AH(十位上的数值)和AL(个位上的数值)加上30H,

ADD DL, 30H

;并依次调用功能号为2的DOS功能调用来显示字符。

MOV AH, 02H

INT 21H

POP AX

MOV DL, AL

ADD DL, 30H

MOV AH, 02H

INT 21H

MOV AH, 4CH

INT 21H

CODE ENDS

END START

3、写出实验小结,内容包括实验心得(收获)、不足之处或今后应注意的问题等。

小结:通过这次的实验又进一步加深了对汇编的理解以及它的整个运行过程,能熟练掌握它的运行过程,也能够看懂一些基本的顺序设计的汇编程序,能设计出简单的顺序汇编。

刚上机时只想按照老师给出的提纲,把缺省的部分照上面给出的提示简单修改后拷贝,可是当程序出错时便不知道哪里的问题也不会修改,最后静下心仔细看程序后理解了,很快就做出来了。

在今后的学习中要吸取这次的教训,不能急于求成,要脚踏实地,掌握每一个知识点

C语言课程设计报告---字符串处理

课程设计报告 课程设计题目:研究生初试录取 学生:俊 专业:计算机应用技术 班级: 1140302 指导教师:宋文琳 2012年 06 月 23日

目录 一)实验题目 (3) 二)实验目的 (3) 三)实验要求 (3) 四)实验思路 (4) 五)实验过程 (6) 六)实验调试和结果 (9) 七)实验小结 (13)

实验题目 字符串处理 (1)不使用系统库函数,编写多个函数实现; (2)定义字符数组存放字符串,从键盘输入; (3)调用不同的函数,实现字符串的连接、拷贝、比较、求字符串长度、对字符串字符进行排序、查找字符串中某个字符是否存在; (4)分别输出以上字符串处理的结果。 二)实验目的 本次课程设计的主要目的是综合运用所学的C语言知识解决一个比较实际的简单问题,侧重对数组、函数、指针、结构体等相关容的综合应用,使学生能进一步熟悉掌握C语言的基本语法,进一步提升编程能力并逐步培养编程思维,进而不断提高学生解决问题的能力,并为以后的语言学习打下良好的基础。三)实验要求 1. 学生独立完成课程设计的主要容; 2. 按照实验课表安排进行,不得无故旷课; 3.按照选题规则确定课程设计题目,不可随意更换,但可在完成规定的任务之后,根据 个人兴趣选做其它题目; 4.严格按照报告格式撰写课程设计报告; 5.程序实现方式可以自选,可采用指针、数组或其任意组合方式完成。

四)实验思路1)整体思路

五)实验过程 代码: #include void main() {void lianjie(char a[],char b[]); void kaobei(char a[],char b[]); void bijiao(char a[],char b[]); void qiuchangdu(char a[],char b[]); void paixu(char a[],char b[]); void chazhao(char a[],char b[],char c); char str1[50],str2[40]; char t; int i; printf("需要进行的操作:1.连接;2.拷贝;3.比较;4.求长度;5.排序;6.查找\n"); scanf("%d",&i); if(i==1) {printf("要连接的字符串1:"); scanf("%s",str1); printf("要连接的字符串2:"); scanf("%s",str2); lianjie(str1,str2);} else if(i==2) {printf("拷贝的字符串1:"); scanf("%s",str1); printf("要拷贝的字符串2:"); scanf("%s",str2); kaobei(str1,str2);} else if(i==3)

微机原理简单输入输出实验报告

东南大学 《微机实验及课程设计》 实验报告 实验四(1)简单输入输出 一. 实验目的与内容 (一)实验目的 1)进一步掌握TPC实验装置的基本原理和组成结构; 2)掌握利用I/O指令单步调试检查硬件接口功能,学会利用示波器检测I/O指令执行时总线情况; 3)掌握简单并行输入输出接口的工作原理及使用方法,进一步熟悉掌握输入输出单元的功能

和使用。 (二)实验内容及要求 1、输出接口输出,根据8个发光二极管发光的情况验证编程从键盘输入一个字符或数字,将其ASCII码通过正确性。(输出端口实验必做) 2、用逻辑电平开关预置某个字母的ASCII码,编程输入这个ASCII码,并将其对应字母在屏幕上显示出来。(输入端口实验必做) 3、利用基本实验(1)中的输出锁存电路,设计L0~L7为流水灯,流水间隔时间由软件产生。(输出端口实验) 4、利用基本实验(2)中的输入电路,监测逻辑电平开关K0~K7的变换,当开关状态为全开时,在屏幕上显示提示信息并结束程序。(输入端口实验) 要求: 1、输入输出端口应该可以响应外设的连续变化。 2、输出按ESC键退出;输入按任意键退出。 3、内容3、4比做一题,选做一题 二. 实验基本原理 (一)基本原理 简单并行输出实验:八D触发器74LS273的八个输入端接数据总线D0~D7,从键盘输入一个字符或数字,通过2A8H~输出接口输出该字符或者数字代表的ASCII码,再通过8个发光二极管发光显示二进制数码,从而验证编程以及电路的正确性。 简单并行输入实验:八缓冲器74LS244的八个输出端接数据总线D0~D7,8个输入端分别接逻辑电平开关K0~K7,在逻辑电平开关上预置任意字符的ASCII码,编程将此ASCII码通过2A0H~输入,ASCII码对应字符显示在屏幕上,从而验证编程及电路的正确性。 (二)实验接线图

汇编语言-实验五 输入输出程序设计

实验五输入输出程序设计 一、实验目的 1) 掌握输入输出程序的编写方法。 2) 熟悉系统功能调用的方法。 3) 熟悉动画程序的编写方法。 二、实验内容 1)在CRT上每隔一秒连续显示字符0-9。 编程提示 为了使输出的字符之间有空格,在每一个循环中输出一个0-9的字符和一个空格。为了输出0-9,置寄存器BL初值为0,每循环一次使其增量。为了保证输出是十进制,增量后用DAA调整指令。由于输出为一位十进制数,用AND 0FH 指令屏蔽高4位。 2)用系统功能调用将‘HELLO’由键盘输入,再从屏幕输出‘***HELLO***’。 3)编制在屏幕上画线的子程序,调用该子程序画一矩形。 4)编制字母下落一行的子程序,调用该子程序使字母从屏幕顶部下落到底部。 5)创建一磁盘文件,保存从键盘输入的字符串。 6)编写程序用设置系统时间,首先从键盘以十进制数形式输入时间,然后修改系统时间,并重新以十进制形式显示时间。 7)编写程序将屏幕分割成格状,每一格涂上不同颜色,格数从键盘输入。 8)编写程序在屏幕上显示菜单,输入相应菜单的序号后,选种该菜单项。 三、源程序 EXAM5-1 STACK SEGMENT STACK DB 1024 DUP(0)

STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK START:MOV BL,0 LP:MOV DL,20H MOV AH, 2 INT 21H MOV AL,BL ADD AL, 0 DAA AND AL,0FH MOV BL,AL PUSH BX OR AL,30H MOV DL,AL MOV AH, 2 INT 21H MOV BX,3E8H LP2:MOV CX,176H ;延时1ms LP1:PUSHF POPF LOOP LP1 DEC BX JNZ LP2 POP BX INC BL JMP LP CODE ENDS END START 执行程序EXAM5-1·EXE,屏幕上依次循环显示一个数字一个空格: 0 1 2 3 4 5 6 7 8 9 …… EXAM5-2 STACK SEGMENT STACK DB 1024 DUP(0) STACK ENDS DA TA SEGMENT BUFF DB 6,7 DUP(?),‘$’ DA TA ENDS INPUT MACRO BUFE MOV DX,OFFSET BUFE MOV AH,0AH INT 21H ENDM

实验二顺序程序设计

实验二简单C程序设计—顺序结构 一、实验目的 1.掌握C语言中使用最多的一种语句――赋值语句的使用方法。 2.掌握各种类型数据的输入输出方法,能正确使用各种格式输出符。 二、实验内容和步骤 1.掌握各种格式输出符的使用方法。 #include int main() {int a,b; float d,e; char c1,c2; double f,g; long n,m; unsigned p,q; a=61;b=62; c1='a';c2='b'; d=3.56; e=-6.87; f=3156.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=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q); return 0; } (1)运行此程序并分析运行结果。 a,b都是以整型输出。C1c2以字符型输出。d,e以浮点型输出,数据长度都为6位,所以前面都有空格占位,加上小数点,数字或负号一共6位。 f以浮点型输出,数据长度为15位,小数位有6位,故前面有四个空格;g以浮点型输出,数据长度为15位,小数位有12位,故前面有一个空格;m,n都以长整型输出;p,q都以无字符型输出。 (2)在此基础上,修改程序的第9-14行: a=61;b=62; c1=a;c2=b; f=3156,890121;g=0.123456789; d=f;e=g; p=a=m=50000;q=b=n=-60000; 运行程序,分析运行结果。 把a,b的值依次赋给c1,c2,c1,c2的数据类型为字符型,根Ascll代码可知61对应=,62对应>;将f,g的值赋给d,e,d,e的数据类型为浮点型,且数据长度为6位,小数位有2位,故得出此结果;按照运算符的结合顺序可知程序把50000依次赋给了m,p,a,把-60000

实验三 数组和字符串

实验三数组和字符串 一、实验目的 1.掌握Java中的数组定义、引用 2.掌握向量的基本概念和应用技术 3.掌握使用字符串String类处理字符串的方法 4.掌握使用字符串StringBuffer类处理字符串的方法 5.掌握Date类以及Calendar类的常用方法; 二、实验内容 1.使用https://www.wendangku.net/doc/1c5588113.html,ng.Math类,生成100 个100~999 之间的随机整数,找出他们之中的最大的和最小的,并统计随机产生的大于300 的整数个数。 package exercise; publicclass shiyan3_1 { publicstaticvoid main(String [] args) { int count=0; int max=0; int min=Integer.MIN_VALUE; int num[]=newint[100];//声明并创建一个具有100 个元素的整型数组对象num int i; for(i=1;i<=100;i++) { num[i-1]=100+(int)(Math.random()*899); System.out.print(num[i-1]+"\t");//随机产生一个100~999 之间的随机整数 if(i % 10 == 0) System.out.println();//输出当前产生的随机数,并一行输出10 个数 if(num[i-1]>max) max=num[i-1]; if(num[i-1]300) count++; } System.out.println("最大的随机整数是:"+max); System.out.println("最小的随机整数是:"+min); System.out.println("大于300 的整数个数是:"+count); } }

实验四 输入输出流程序设计

C++面向对象程序设计课程实验报告 课程名称C++面向对象程序设计班级实验日期2014.5.16-2012 .5.23 姓名学号实验成绩实验名称实验四输入输出流程序设计 实验目的及要求1.理解输入输出流的基本概念,明确流是一个类 2.了解输入输出流类库基本结构和主要类,掌握主要层次,其中重 点理解fstream,iostream和iomanip 3.理解流缓冲区类的派生关系以及设备缓冲、文件缓冲和流缓冲 4.熟悉格式化的输入和输出,记住主要的常用的操作符,以及各种 应用(对齐) 掌握文件的输入和输出,区别C语言中的文件写入、打开等操作,会对一个文件进行I/O操作 实验环境硬件平台:普通的PC机 软件平台:Windows 操作系统编程环境:VisualC++ 6.0 实验内容1.文件数据的读取。编制一程序来显示并保存[2,1000]内的所有素数。显示、保存素数的格式为:每行10个素数,每一个素数占7个字符,右对齐,最后一行不足10个素数时按一行输出 2.编写一个单向链表的类模板,分别实现增加、删除、查找和打印操作 算法描述及实验步骤1、这个题主要考察了文件中数据的读取,还包括数据格式化输入输出。首先定义一个ofstream类的对象output,在main函数中打开文件后,再分别编写判断素数、每行输出10个数以及使辖域为7的代码,最后关闭文件。 2 这个题是C++与数据结构的结合,实现单向链表内各种功能。首先定义一个类ListNode,然后利用前插入法初始化链表,编写类模板的成员函数,再分别进行增加、删除和查找的操作

调试过程及实验结果 总结1.一旦文件被打开,文件中的文本数据信息的读/写操作与控制台文件信息的输入/输出操作就完全一致 2.定义ifstream、ofstream、fstream流类对象时,应用对象名替代控制台文本信息输入/输出使用的输入流类对象(如cin)和输出流类对象(如cout)

实验-4顺序结构

实验4:顺序结构程序设计 实验名称:顺序结构程序设计成绩: 实验日期:年月日实验报告日期:年月日 一、实验目的 1、掌握:使用标准输入/输出函数进行常见数据类型的数据的输入/输出方法。 2、初步培养编制程序框图和源程序、准备测试数据以及实际调试程序的独立编程能力。 二、实验内容 在Turbo C下完成程序题: (1)根据商品原价和折扣率,计算商品的实际售价(结果精确到小数点后2位) (2)根据圆柱体的半径和高,计算圆周长、圆面积、圆柱体表面积、圆柱体体积(结果精确到小数点后3位) 注:变量名可以自由选择,以易于理解为原则;数据由键盘输入。 三、实验要求 1、实验前编制程序框图、编写源程序、准备测试数据。 2、实验测试数据要求从键盘输入。应尽力追求程序的完美。比如要求输入数据,应当显示提示 字符串,提示用户输入;输出时要求有文字说明。 3、在Turbo C下完成程序的编辑、编译、运行,获得程序结果。如果结果有误,应找出原因, 并设法更正之。 4、编制的程序必须保存在D:\用户目录中。注:用户目录可以用学号或姓名拼音简写。 四、实验步骤、过程 1、启动操作系统,进入DOS窗口;切换到用户磁盘,创建、进入用户目录。(方法、命令与 实验1相同) 2、启动Turbo C集成开发环境。(方法与实验1相同) 3、完成2个程序题。(编辑、保存、编译连接、运行程序,步骤与实验1相同) 4、退出Turbo C集成开发环境,关机。

五、源程序清单、测试数据、结果。 1、根据商品原价和折扣率,计算商品的实际售价 程序框图: 程序 main() { float price,discount,fee; printf("Input Price,Discount:"); fee=price*(1-discount/100); } 运行: Input Price,Discount: Fee= 注:下划线表示程序运行后用户输入的数据,表示回车,以后不再解释。 2、根据圆柱体的半径和高,计算圆周长、圆面积、圆柱体表面积、圆柱体体积程序 void main() { float r,h,pi=3.1415926; float c0,s0,s,v; printf("Input r,h(m):"); scanf("%f,%f",&r,&h);

实验3MATLAB矩阵分析与处理和字符串操作实...

实验三 MATLAB 矩阵分析与处理、字符串操作 一、实验目的 1.掌握生成特殊矩阵的方法 2.熟练掌握矩阵的特殊操作及一些特殊函数 3.熟练掌握MATLAB 的字符串操作 4.掌握MATLAB 矩阵的关系运算及逻辑运算法则 二、实验内容 1.特殊矩阵分析与处理操作 常用的产生通用特殊矩阵的函数有:zeros( );ones( );eye( );rand( );randn( ). 下面建立随机矩阵。 (1) 在区间[20,50]内均匀分布的5阶随机矩阵。 (2) 均值为0.6、方差为0.1的5阶随机矩阵。 说明:产生(0 ,1)区间均匀分布随机矩阵使用rand 函数,假设得到了一组满 足(0,1)区间均匀分布的随机数x i ,则若想得到任意[a,b]区间上均匀分布的随机数,只需要用i i x a b a y )(-+=计算即可。产生均值为0、方差为1的标准正态分布随机矩阵使用randn 函数,假设已经得到了一组标准正态分布随机数x i ,如果想要更一般地得到均值为i i x y ,、σμσμ+=可用的随机数方差为2计算出来。针对本例,命令如下: x=20+(50-20)*rand(5) y=0.6+sqrt(0.1)*randn(5) 建立对角阵。 diag( )函数除了可以提取矩阵的对角线元素以外,还可以用来建立对角矩阵。 设V 为具有m 个元素的向量,diag(V)将产生一个m*m 对角矩阵,其主对角线元素即为向量V 的元素。例如: diag([1,2,-1,4])

ans= 40000 10000 20000 1 diag(V)函数也有另一种形式diag(V ,k),其功能是产生一个n*n(n=m+|k|)的对角矩阵,其第k 条对角线的元素即为向量V 的元素。例如: diag(1:3,-1) ans=03000 0200 0010 000 矩阵的旋转 函数rot90(A,k)表示将矩阵A 以90度为单位对矩阵按逆时针方向进行k 倍的旋转。 rem 与mod 函数的区别 练习: 1> 写出完成下列操作的命令。 (1)建立3阶单位矩阵A 。eye(3) (2)建立5*6随机矩阵A ,其元素为[100,200]范围内的随机整数。 A=100+(200-100)*rand(5,6) (3)产生均值为1,方差为0.2的500个正态分布的随机数。 B=1+sqrt(0.2)*randn(50,10) (4)产生和A 同样大小的零矩阵。 zeros(size(A)) (5)将矩阵A 主对角线的元素加30。 B=eye(5,6)*30 A+B (6)从矩阵A 提取主对角线元素,并以这些元素构成对角阵。 B=diag(diag(A)’) 注:转置是把列向量转变成行向量。 2> 先建立5*5的矩阵A ,然后将A 的第一行元素乘以1,第二行元素乘以2,…,第五行乘以5。(提示:用一个对角矩阵左乘一个矩阵时,相当于用对角阵的

实验2顺序结构程序设计

《C语言程序设计》实验报告 ---------------------------------------------------------------------------------------------- 实验2顺序结构程序设计 一、实验目的 (1)掌握C语言中赋值语句的使用方法。 (2)掌握各种类型数据的输入与输出方法,能正确使用各种格式转换符。(3)掌握C语言的顺序结构程序设计。 二、实验内容与步骤 1.输入程序,观察程序运行结果 (1)输入并运行下面的程序,掌握用scanf()函数输入多个整型数据时,格式说明中无分隔符的正确使用。 /*c2-1.c*/ #include int main() { int i,j; printf("Enter i,j\n"); scanf("%d%d",&i,&j); printf("i=%d,j=%d\n",i,j); return 0; } 总结与反思: 1.printf("Enter i,j\n");语句是对下面的输入语句起提示作用;2. 本题在scanf()语句中,输入两个整数之间可用空格、Tab或回车键分隔,但用其他的分隔符不能得到正确的值。 (2)输入并运行下面的程序,掌握用scanf()函数输入多个整型数据时,格式说明中逗号分隔符的正确使用。 /*c2-2.c*/ #include int main() { int i,j; printf("Enter i,j\n");

scanf("%d,%d",&i,&j); printf("i=%d,j=%d\n",i,j); return 0; } 总结与反思:本题在scanf()语句中,输入两个整数之间必须用逗号分割,用 其他的分隔符时第一个变量能得到正确的值,第二个变量不能得到正确的值。(3)输入并运行下面的程序,掌握格式scanf()函数中普通字符按原样输入的使用方法。 /*c2-3.c*/ #include int main() { float i,j; scanf("i=%f,j=%f",&i,&j); printf("i=%.3f,j=%.3f\n",i,j); return 0; } 总结与反思:用scanf()函数输入内容,必须严格按照格式说明部分进行键入。 (4)输入并运行下面的程序,如果scanf()函数中格式与变量类型的对应关系错误,将不能得到正确的结果。 /*c2-4.c*/ #include int main() { int i,j; scanf("%f,%f",&i,&j); printf("i=%d,j=%d\n",i,j); return 0; } 总结与反思:1.与int(基本整型)对应的应是%d,与float(浮点型)对应的是%f。 2.scanf()函数格式说明应与定义的变量类型一致! (5)输入一个大写字母A,将它转换为小写字母a,输出小写字母a及对应的ASCII码值97,要求输出格式为“j=a,j=97”,完善下面程序中的输出语句。 /*c2-5.c*/ #include int main() { int j;char i; scanf("%c",&i); j=i+32; printf("j=%c,j=%d\n",j,j);

微机原理实验五输入与输出程序设计

实验六输入与输出程序设计 一、实验目的 1.掌握常用DOS中断调用的功能以及在应用程序中的使用方法。 2.学习键盘输入和屏幕输出的基本方法。 3.宏指令、子程序在应用程序中的使用。 4.汇编语言程序设计的调试与完善。 二、设计指标与实验要求 1.设计内容 本实验要求设计完成:①屏幕输出提示(如“Want input(Y/N)?”),若键入N 则结束程序返回操作系统;键入Y则转2步;键入的是其它字母则回①步。②换行后输出提示(如“please input a strings:”),且在该提示后键入一字符串(输入到输入缓冲区)。 ③换行后输出提示(如“your inputting is:”),在该提示后输出由②步输入的字符串。 ④换行后输出提示“Want continue(Y/N)? ”,若键入Y则转②步;键入N则结束程序返回操作系统;其它字母则回第④步。 2.设计要求 ①按屏幕提示要求输入,从屏幕上获得正确结果。 ②把程序中常用的中断调用定义成宏指令(至少定义2个)。 ③字符串回显部分设计成子程序,可以选择用21H中断的2号或9号功能来实现,应 能显示由主程序指定的任一字符串。要注意这两种方法实现的设计过程是不同的。 采用2号功能的,子程序输入参数为“回显字符串地址”和“回显字符数”;采用 9号功能的,子程序输入参数为“回显字符串地址”。 ④屏幕的提示信息显示格式尽量做到兼顾美观。 3.实验步骤 ①.选用合适的程序文本编辑软件编辑源程序,并为文件取以.ASM为扩展名的文件存盘。 ②.用宏汇编软件MASM对源程序文件进行汇编,若有错误,根据提示(行号,错误类型)回源程序文件中修改。 ③.用LINK对由MASM汇编后产生的目标文件做连接,生成可执行文件;若有错误(同

实验二+顺序结构程序设计

实验二顺序结构程序设计 一、实验学时 2学时 二、实验目的 (一)掌握简单结构的C语言程序设计; (二)掌握输入、输出函数的正确使用。 三、预习要求 熟悉并掌握scanf()函数,printf()函数,getchar()函数和putchar()函数的语法格式,比较它们在使用时的异同。 四、实验内容 (一)输入并运行下面的程序,掌握scanf()函数输入多个整型数据时,格式说明中无分隔符的正确使用。 main ( ) { int i,j; scanf("%d%d",&i,&j); printf("i=%d,j=%d\n",i,j); } 注意:运行程序时,当调用格式输入函数scanf()时,首先返回用户屏幕,等待用户从键盘上输入两个整数并回车,程序才能继续向下执行。 从键盘上为变量i,j赋值32和18时,两个整数之间可用空格、Tab或回车键分隔。试一试,用其它的分隔符输入时各个变量,能否得到正确值。 (二)输入并运行下面的程序,观察与上一程序的区别。注意:printf("Enter i,j\n");语句对下面的输入语句起提示作用。 main ( ) { int i,j; printf("Enter i,j\n"); scanf("%d%d",&i,&j); printf("i=%d,j=%d\n",i,j); } 注意:运行程序时,先执行printf("Enter i,j\n");,当调用格式输入函数scanf()时,返回用户屏幕,屏幕上会有提示Enter i,j,等待用户从键盘上输入两个整数。 (三)输入并运行下面的程序,掌握scanf()函数输入多个整型数据时,格式说明中逗号分隔符的正确使用。 main ( ) { int i,j; printf("Enter i,j\n"); scanf("%d,%d",&i,&j); printf("i=%d,j=%d\n",i,j); }

C语言程序设计实验报告

《C程序设计》实验教学大纲 一、适用范围 大纲适用信息管理专业本科教学使用。 二、课程名称 C程序设计 三、学时数与学分 总学时:90 总学分: 4 实验学时:28 实验学分:1 四、教学目的和基本要求 目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,加深对讲授内容的理解,尤其是通过上机来掌握语法规则,使学生全面了解 C 语言的特点,熟练掌握C 语言程序设计的基本方法和编程技巧。 基本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止,上机结束后,应整理出实验报告。 注:带*的实验项目为选做实验项目 六、教材、讲义及参考书 《C程序设计题解与上机指导》谭浩强主编清华大学出版社 七、实验成绩评定办法 实验成绩=平时实验表现+实验报告。实验成绩占总成绩的20%。 实验成绩以等级形式给出,评定等级分优、良、中、及格、不及格五类。 1、平时考核:上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止。在实验中,教师可根据学生编程操作能力、观察和分析及运用知识能力、程序编制正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。

2、实验报告:学生实验后应按时完成实验报告。 八、实验教学大纲说明 本大纲共安排28学时的实验,其中带*号实验项目为选做实验项目,实际课时为18学时。实验项目多为设计性实验项目,每个设计性实验项目中都包含数个小的设计性题目,其中带*号的题目为选做题目,有时间和有能力的同学可以选做。 九、实验项目 实验一 C程序的运行环境和运行一个C程序的方法 一、实验目的 1.了解Visual C++编译系统的基本操作方法,学会独立使用该系统。 2.了解在该系统上如何编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序,初步了解C源程序的特点。 二、实验内容 1.用编辑程序,输入教材第一章例程序,并进行编译和运行。应了解所用的系统是用什么命令进行编译和连接运行的。编译和连接后所得到的目标程序的后缀是什么形式的 2.编写一个C程序,输出以下信息: **************************** very good! **************************** 3.输入并运行教材第一章中例,了解如何在运行时向程序变量输入数据。 实验二数据类型、运算符和表达式 一、实验目的 1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用格式转换符。 2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。 二、实验内容 1.输入并运行以下程序: main( ) { char c1,c2; c1=97;c2=98; printf(“%c %c\n”,c1,c2); printf(“%d %d\n”,c1,c2); } 在此基础上 ①将第三行、第四行改为: c1=321;c2=353; 再使之运行,分析其运行结果。 ②将第二行改为: int c1,c2; 再使之运行,分析其运行结果。。 2.输入并运行以下程序: main( ) {int i=8,j=10,m,n; m=++i;n=j++;

实验一 顺序程序设计

实验一顺序程序设计 一、实验目的: 1、学习顺序程序的设计方法 2、熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程 3、学习和掌握字符及字符串的输入输出方法 二、实验环境: 硬件环境IBM/PC 及其兼容机 软件环境操作系统DOS 编辑程序EDIT或其他编辑程序 汇编程序MASM.EXE 连接程序LINK.EXE 调试程序DEBUG.EXE 可视化编程环境emu8086 三、实验内容: 1、已知X和Y是数据段中的两个无符号字节单元,用程序完成表达式Z=(X2+Y2)/2的计算。 2、从键盘读入两个一位数(按键时保证按下的是数字键),显示它们的积。 四、实验要求: 1、画出实验程序流程图,独立完成源代码的编写。 开始 X中的内容 送AL 计算X*X X*X乘积 送BX Y中的内 容送AL 计算Y*Y 计算X*X+Y*Y 计算(X*X+Y*Y)/2结果送Z单元 结束 开始 读入第1个数字 并保存在BL中 读入第2个数字 将两个数字都转换成十进制数 两个数相乘, 积在AX中 积除以10取商送AL,余数在AH中 转换成相应的 ASCII码,并 保存在BX中 输出十位数 输出个位数 结束

2、在DOS环境下使用MASM完成对源代码的编译、连接,有必要的情况下使用debug.exe 进行调试。 3、WINDOS环境下使用EMU8086完成上第2步的工作。 4、与程序流程图比较,验证是否完成规定的功能,若未达要求,返回第1步。 5、提交完成的源代码,要求对关键语句进行注释。 ①源代码如下: DA TA SEGMENT X DB 5 Y DB 4 Z DW ? DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX ;初始化数据段 MOV AL,X ;X中的内容送AL MUL AL ;计算X*X MOV BX,AX ;X*X乘积送BX MOV AL,Y ;Y中的内容送AL MUL AL ;计算Y*Y ADD AX,BX ;计算X2+Y2 SHR AX,1 ;计算(X2+Y2)/2 MOV Z,AX ;结果送Z单元 MOV AH,4CH INT 21H ;返回DOS CODE ENDS END START ;汇编结束 ②源代码如下: CODE SEGMENT ASSUME CS:CODE MAIN: MOV AH,1 INT 21H ;读入第1个数字 MOV BL,AL ;保存在BL中 MOV AH,2 MOV DL,13 INT 21H ;回车 MOV DL,10 INT 21H ;换行 MOV AH,1 INT 21H ;读入第2个数字 SUB AL,30H ;第2个数字转换成十进制数 SUB BL,30H ;第1个数字转换成十进制数 MUL BL ;两个数相乘,积在AX中

实验四 数组及其字符串的处理

实验四数组及其字符串的处理 1.输入一串英文字母,统计每个字母(不区分大小写)出现的次数。(输 出统计结果时一律显示为小写字母) 如输入:Good 则输出:字母d有1个 字母g有1个 字母o有2个 请根据提示填空,使程序实现相应功能。 #include main() { char ch[10000]; //用于保存输入的字母串 int nnum[26]=【1】;/* 赋初值,使各元素值为0 nnum用于存储各字母出现的次数, 因字母表共有26个字母,因此元素个数为26 */ int i,j; printf("请输入一串字母\n"); scanf("%s",【2】);//读取字符串 i=0;//变量i用于遍历整个字符串各元素,初值为0,表示从字符数组首元素开始 while(【3】) //依次读取各元素,直至遇到字符串结束符’\0’ { j=(ch[i]>=65&&ch[i]<=90)?ch[i]-65:ch[i]-97; /*若输入为字母,则用j 保存其在字母表中的位 次*/ if (【4】)nnum[j]++;//若j值不超限,则将该字母累计数加1 【5】;// 改变i值,换至下一个元素 } for(i=0;i<26;i++) if(nnum[i]!=0) printf("字母%c有%d个\n",97+i,【6】); //按题目要求输出结果 return; } 编程题 2.输入10个整数存入数组,找出其中的最大数及其位置。 (位置从0开始编号)

3.求裴波那契数列(1 1 2 3 5 8 13 21 34……)的前18项。 4.求字符串长度(实现strlen 函数的功能) 提示:可参考第1题。 5.输入一个5*5的矩阵(#define N 5),求 (1)所有元素的和 (2)主对角线元素之和 (3)最大值及最小值所在位置 #include main() { double mat[5][5]; int i,j; 【此处补充定义其它所需变量】 for(i=0;i<5;i++) for (j=0;j<5;j++) scanf("%lf",&mat[i][j]); 【完成其余代码,实现该题(1)(2)(3)的功能】 return; }

c语言程序设计基本输入输出和简单程序设计

实验3 基本输入输出和简单程序设计 实验目的 1.掌握常用的C语言语句,熟练应用赋值、输入、输出语句。 2.理解C语言程序的顺序结构,掌握顺序结构设计的基本方法。 3.进一步熟悉C程序的编辑、编译、连接和运行以及调试跟踪的过程。 实验内容 1.准备实验环境: (1)启动Visual Studio 201X 或者Codeblocker等C程序开发的IDE (2)如果保留了实验1的工程项目,则可以直接双击工程项目文件夹中的.sln 文件打开它即可。否则,按实验1的做法,创建一个Win32控制台应用程序(即ConsoleApplication)工程,以自己的姓名全拼音为工程名称。可能有些同学已经忘记了,我们再指导一遍: 首先新建项目:

2.理解分析程序,熟悉基本的C程序输入输出。 1)给工程新建一个源程序文件,取名为"你的姓名全拼_3_1.c",并将以下程序编写进该源程序保存: #include int main() { int a=25; double d = 4321.123456789012345; char c = 'T'; printf("你的姓名_3_1:理解输出!\n");/* 改姓名哦*/ printf("a = :%d;%5d;%-5d;%+05d!\n",a,a,a,-a); printf("a = :%5x;%o!\n",a,a); printf("d = :%f;%15f;%8.3f;%20.15f;%.2f!\n",d,d,d,d,d); printf("c = :%c;%5c;%-5c!\n",c,c,c); } 运行该程序,将运行的结果截图放在下面: 程序运行的结果图:

最简单的C程序设计—顺序程序设计实验报告

嘉应学院计算机学院 实验报告 课程名称程序设计基础实验名称实验地点 指导老师实验时间提交时间 班级姓名座号 一、实验目的和要求 (1)掌握C语言中使用最多的一种语句——赋值语句的使用方法。 (2)掌握各种类型数据的输入输出的方法,能正确使用各种格式装换符。 (3)进一步掌握编写程序的和调试程序的方法。 二、实验环境和方法 实验方法: (一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。 (二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。 (三)根据实验内容,编译程序。 实验环境:Windows xp Visual C++6.0 三、实验内容及过程描述 实验步骤: ①进入Visual C++ 6.0集成环境。 ②输入自己编好的程序。 ③检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错,及时改正。 ④进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”,根据提示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 ⑤运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果是否正确,应运行多次,分别检查在不同情况下结果是否正确。 实验内容:编译以下题目的程序并调试运行。 实验① (1)通过下面的程序掌握各种格式装换符的正确使用方法。 ①输入以下程序:

②运行程序并分析结果如图: ③在此基础上,将程序第10~14行改为 c1=a;c2=b; f=3157.;g=0.; d=f;e=g; P=a=m=50000;q=b=n=-60000; 运行程序,分析结果如: (二)设圆半径r=1.5,圆柱高h=3,求圆周长﹑圆面积﹑圆球表面积﹑圆球体积﹑圆柱体积。用scanf 输入数据,输出计算结果,输出时要求有文字说明,取小数点后两位数字。 程序代码为: #include 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'; d=3.56;e=-6.87; f=3157.;g=0.; 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,n=%1d\np=%u,q=%u\n",f,g,q,m,n,p,q); } #include int main() {float h,r,l,s,sq,vq,vz; float pi=3.; printf("请输入圆半径r ,圆柱高h :"); scanf("%f,%f",&r,&h); l=2*pi*r; s=r*r*pi; sq=4*pi*r*r; vq=3.0/4.0*pi*r*r*r; vz=pi*r*r*h;

实验5字符串的操作

博客网站设定了校验密码的规则,编写方法检验一个字符串是否是合法的密码。规则如下: 密码长度在8-16 之间 密码只能包含字母和数字 密码必须存在至少2 个数字如果用户输入的密码符合 2. import java.util.Scanner; 3. import java.util.regex.Pattern; 4. public class Check { 5. public static void main(String[] args) { 6. System.out.println("请输入密码:"); 7. Scanner sc = new Scanner(System.in); 8. String str = sc.next(); 9. Check ch = new Check(); 10. ch.checkup(str); 11. sc.close(); 12. } 13. 14. public void checkup(String str) { 15. String patternStr1 = "([0-9]|[a-zA-Z]){8,16}"; 16. String patternStr2 = ".*\\d.*\\d.*"; 17. boolean result1 = Pattern.matches(patternStr1, str); 18. boolean result2 = Pattern.matches(patternStr2, str); 19. if (result1 && result2) { 20. System.out.println(" valid password"); 21. } else { 22. System.out.println(" Invalid password "); 23. } 24. } 25. } 26. String patternStr2 = ".*\\d.*\\d.*"; 27. boolean result1 = Pattern.matches(patternStr1, str); 28. boolean result2 = Pattern.matches(patternStr2, str); 29. if (result1 && result2) { 30. System.out.println(" valid password"); 31. } else { 32. System.out.println(" Invalid password "); 33. } 34. } 35. } 要求从用户输入的多行文本中提取学生的姓名、学号及登录日期,并封装到Student 类中作为类的私有属性。创建一个Student 类型的对象数组,对学号进行升序排序并输出 /*从键盘输入多行文本,格式如下: 学生端名称,姓名,班级名称,学生ID,注册时间 姜涛,姜涛,,20092212232,2011-11-4 9:06:56

实验一 顺序结构程序设计

实验一顺序结构程序设计 一、实验目的 1. 掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。2 2. 学会使用有关算术运算符,以及包含这些运算符的表达式。 3. 掌握数据的输入输出方法,能正确使用各种格式转换符。 二、实验学时数 4学时 三、实验内容和步骤 1..启动TC 2.0编译系统,进入编辑界面,建立一个新文件。文件名自定。(要求每个学生建立一个自己的文件夹,每个同学的练习和作业的源程序命名形成系列,便于检查、查找和考核)。 利用一个小程序验证常量、变量的使用方法与特点,验证数据类型和表达式值的计算规则及其输出格式。 参考程序: main( ) { char c1,c2; c1=97;c2=98; printf(″%c,%c\n″,c1,c2); } (1)在此基础上加入以下printf语句,并运行。 printf(″%d,%d\n″,c1,c2); (2)将第二行改为以下语句,并运行。 int c1,c2; (3)将第三行改为以下语句,并运行。 c1=300;c2=400; 分别写出三次运行结果。 2.编程并调试运行 (1)编程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf 函数输出这两个字符。上机运行此程序,比较putchar和printf函数输出字符的特点。 (2)试编写程序,从键盘输入一个大写字母,要求改用小写字母输出。 3.写出下面程序的运行结果: 1)main() { int x=1,y=1,z=1; y=y+x; x=x+y; printf(″%d\n″,x); printf(″%d\n″,y); } 2) main()

相关文档
相关文档 最新文档