朱 实验三 字符及字符串的输入和输出

合集下载

C语言学习2之字符串及输入输出

C语言学习2之字符串及输入输出

C语言学习2字符串及输出和输入2.1:不像我们之前学到的整型,浮点型等数据那样,C没有为字符串定义专门的变量类型,一般情况下将字符串放在字符数组中。

下面我们看下段字符串在数组中存放的方式:“hello hi!”需要注意“\0”不是真正意义上字符串的一部分,它的作用是告诉电脑字符串在此处结束。

但它也占用一个字节。

下面我们用程序2.1来验证“\0”是否占用空间。

/*函数名:main输入参数:无输出参数:无调用:printf(), strlen()被调用:无功能:验证字符串中“\0”是否占空间*/#include <stdio.h>#include <string.h>#define PRAISE "one name"//宏定义一个字符串void main(void){printf("the strlen(s_name) =%d\n",strlen(PRAISE));printf("the sizeof(s_name) =%d\n",sizeof(PRAISE));}程序2.1程序2.1运行的结果如图2-1所示:图2-1:程序2.3运行结果Strlen()求的是字符串中字符的个数“\0”是不属于字符串的一部分的,所以strlen(s_name)=8;sizeof求的是字符串所占数据的大小,“\0”也包括在内的,所以sizeof(s_name) =9。

也就是说字符串存放在数组中时,会在字符串的末尾加一个“\0”来指示字符串的结束。

给一个字符型数组赋值如下:Char c_name[10] = “ding you wei”;当我们需要知道一段字符串中有多少的字符时可以使用strlen()函数来实现。

下面我们来看程序2.2:/*函数名:main输入参数:无输出参数:无调用:printf()被调用:无功能:求取字符串中字符的个数*/#include <stdio.h>#include <string.h>char c_name[3] ;float f_richer ;void main(void){#define Q "hei is me."char s_name[30] ="ding you wei";printf("the num of Q is:%d\n",strlen(Q));printf("the num of s_name is:%d\n",strlen(s_name));}程序2.2对于上面的程序我们要注意两点:1,由于strlen()是C库中的函数,所以我们要在文件的开头包含string.h文件。

实验三串基本操作的编程实现

实验三串基本操作的编程实现

实验三串基本操作的编程实现(共5页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--实验三串基本操作的编程实现【实验目的】内容:串基本操作的编程实现要求:串基本操作的编程实现(2学时,验证型),掌握串的建立、遍历、插入、删除等基本操作的编程实现,也可以进一步编程实现查找、合并、剪裁等操作,存储结构可以在顺序结构或链接结构、索引结构中任选,也可以全部实现。

也鼓励学生利用基本操作进行一些应用的程序设计。

【实验性质】验证性实验(学时数:2H)【实验内容】字符串用常规的顺序存储法来存储,实现常用的功能。

自己编程模式:开发一个程序,用来统计文件中各种信息,如字符个数,行数等。

修改程序模式:将下面程序空白的地方填空。

程序检查模式:将本文件夹中的程序运行后总结相关功能。

【思考问题】1.字符串的顺序存储和链表存储的差异C语言中是如何实现字符串的2.在字符串处理方面主要有什么操作3.字符串的操作的主要特点是什么4.举出几个字符串的应用范例【参考代码】立顺序串(仅限单行的字符串,建议不用汉字。

)"<<endl;cout<<"2.显示串"<<endl;cout<<"3.修改串"<<endl;cout<<"4.插入串"<<endl;cout<<"5.删除串"<<endl;cout<<"6.查找串"<<endl;cout<<"7.求串长度"<<endl;cout<<"8.结束程序"<<endl;cout<<"=========="<<endl;}int main(){int flag=0,returnvalue,position,beginposition,endposition,length;char choice,choose,newstr[maxsize];string newstring;menu();while(1){cout<<"请输入选择:";cin>>choice;switch(choice){case '1':if(flag){cout<<"数据已存在,是否覆盖(y/n)";cin>>choose;if(choose=='N'||choose=='n'){cout<<"数据没有发生更改!"<<endl;break;}if(choose=='Y'||choose=='y'){returnvalue=();if(returnvalue==success)cout<<"创建成功!"<<endl;flag=1;}elsecout<<"输入错误!"<<endl;}else{returnvalue=();if(returnvalue==success)cout<<"创建成功!"<<endl;flag=1;}break;case '2':if(flag==0)cout<<"请先建立串!"<<endl;else();break;case '3':if(flag==0)cout<<"请先建立串!"<<endl;else{();cout<<"请输入要修改的初始位置:";cin>>beginposition;cout<<"请输入要修改的终止位置:";cin>>endposition;cout<<"请输入修改后的字符串:";cin>>newstr;returnvalue=(beginposition,endposition,newstr);if(returnvalue==success){cout<<"修改成功!"<<endl;();}if(returnvalue==overflow){cout<<"字符串的最大长度为"<<maxsize<<endl;cout<<"发生溢出,操作失败!"<<endl;}if(returnvalue==range_error)cout<<"位置错误,操作失败!"<<endl;if(returnvalue==empty)cout<<"字符串为空,操作失败!"<<endl;}break;case '4':if(flag==0)cout<<"请先建立串!"<<endl;else{();cout<<"请输入要插入的位置:";cin>>position;cout<<"请输入要插入的字符串:";cin>>newstr;length=strlen(newstr);returnvalue=(position,newstr,length);if(returnvalue==success){cout<<"插入成功!"<<endl;();}if(returnvalue==overflow){cout<<"字符串的最大长度为"<<maxsize<<endl;cout<<"发生溢出,操作失败!"<<endl;}if(returnvalue==range_error)cout<<"位置错误,操作失败!"<<endl;}break;case '5':if(flag==0)cout<<"请先建立串!"<<endl;else{();cout<<"请输入要删除的初始位置:";cin>>beginposition;cout<<"请输入要删除的终止位置:";cin>>endposition;returnvalue=(beginposition,endposition);if(returnvalue==success){cout<<"删除成功!"<<endl;();}if(returnvalue==range_error)cout<<"位置错误,操作失败!"<<endl;if(returnvalue==empty)cout<<"字符串为空,操作失败!"<<endl;}break;case '6':if(flag==0)cout<<"请先建立串!"<<endl;else{();cout<<"请输入要查找的字符串:";cin>>newstr;position=(newstr);if(position>0){cout<<"已找到!"<<endl;cout<<"字符串出现的初始位置为:"<<position<<endl;}if(position==0)cout<<"您要查找的字符串不存在!"<<endl;if(position==-1)cout<<"字符串为空,操作失败!"<<endl;}break;case '7':if(flag==0)cout<<"请先建立串!"<<endl;else{();length=();cout<<"当前串的长度为:"<<length<<endl;}break;case '8':exit(0);break;default:cout<<"输入错误!\n";break;}cout<<"按任意键继续......"<<endl;getch();system("cls");menu();}getch();return 0; }。

c程序设计 实验报告

c程序设计 实验报告

c程序设计实验报告C程序设计实验报告引言:C程序设计是计算机科学中一门重要的编程语言,广泛应用于软件开发、系统编程等领域。

本实验报告旨在总结并分析我在C程序设计实验中的学习经验和成果。

实验一:基本语法和数据类型C语言作为一门结构化的编程语言,具有丰富的语法和数据类型。

在本实验中,我学习了C语言的基本语法,包括变量的声明和赋值、运算符的使用以及条件语句和循环语句的控制流程。

通过编写简单的程序,我熟悉了C语言的基本语法和数据类型的使用。

实验二:函数和指针函数是C语言中的重要概念,通过函数的封装和调用,可以实现程序的模块化和复用。

在本实验中,我学习了函数的定义和调用,了解了函数的参数传递和返回值的使用。

同时,我还学习了指针的概念和用法,掌握了指针变量的声明和指针运算的基本操作。

通过实验练习,我对函数和指针的使用有了更深入的理解。

实验三:数组和字符串数组和字符串是C语言中常用的数据结构,对于处理大量数据和字符操作非常重要。

在本实验中,我学习了数组的定义和使用,了解了数组的下标和内存分配的原理。

同时,我还学习了字符串的表示和处理方法,掌握了字符串的输入输出和常见操作函数的使用。

通过实验练习,我对数组和字符串的应用有了更深入的认识。

实验四:结构体和文件操作结构体是C语言中用于组织和管理复杂数据的一种方式,文件操作则是处理外部文件的重要技术。

在本实验中,我学习了结构体的定义和使用,了解了结构体成员的访问和结构体数组的操作。

同时,我还学习了文件的打开、读写和关闭操作,掌握了文件指针的使用和文件读写的基本流程。

通过实验练习,我对结构体和文件操作的应用有了更深入的了解。

实验五:动态内存分配和链表动态内存分配和链表是C语言中高级的数据结构和算法,对于处理动态数据和实现复杂逻辑非常重要。

在本实验中,我学习了动态内存分配的方法和使用,了解了malloc和free函数的原理和使用。

同时,我还学习了链表的定义和操作,掌握了链表的插入、删除和遍历等基本操作。

实习三 输入数据

实习三 输入数据

• • • • • • • • • • •
举例说明: input name $ 1-10 pulse 11-13 waist 14-15 gender $ 16; (二)什么情况下应用列输入方式? 1.变量值在所有的数据行上出现在相同的位置(列)上; 2.数据是标准的数值型或字符型格式; (三)列输入方式的特点 1.输入值可以按任何顺序读取,而不管它们在记录中什么位置; 2.字符型数据中可以在中间嵌套空格; 3.字符型数值可以输入 1-32767 个字符; 4.数值或数值中的一部分可以再次被读取, 例如: input id 10-15 group 13;
• (三)列表方式的特点 • 1.列表方式输入是使用最多的功能最强大以及最为方便的输入方 式; • 2.在指针控制符和格式修饰符的帮助下,列表方式可以读取几乎 所有格式的数据; 基于以上两点,也许这就是列表方式也被称为 自由格式的原因。
• (四)列表方式的特殊情况——格式修饰符 • 1.: 标明从非空格开始读取变量值直到遇到以下情况:下一个空格 列;预先定义的变量长度已经 读满;数据行结束; • 比如下面的例子,第一列数据最长是 15 个字符但不是一样长, 如果小于 15 个字符的数据值可 能会读到下一个数据值,那么就 需要用到:符号。 • data test; • input lastname :$15. ; cards; • Smith 123 Highway Longlastname 527 Avenue •;
• 1.语法格式一是标准格式,即在变量后面紧跟一个输入格式来指 明该变量读取数据时的格式,例如: • input item $10. jan comma5. feb comma5.; • 2.语法格式二和三都是变量列表方式,用于很多变量都采用相同 格式的情况。例如: input (name score)(:$10 4.2);如果变量列表的 格式都是一样的,可以只写一个格式,例如下面两个 input 语句 是等价的, • input (score1-score5)(4. 4. 4. 4. 4.); /*score1 到 score5 这 5 个变量 的取值宽度均为 4(即占 4 列)*/ • input (score1-score5)(4. );

实验四 字符及字符串的输入和输出

实验四  字符及字符串的输入和输出

实验四字符及字符串的输入和输出一、实验目的1.熟悉如何进行字符及字符串的输入输出。

2.掌握简单的DOS系统功能调用。

二、实验预习要求1.复习系统功能调用的1、2、7、8、9、10号功能。

2.按照题目要求预先编写好实验中的程序段。

三、实验任务1、输入以下程序段并用“single step”单步运行,执行INT 21H指令时,在键盘上按“5”键。

MOV AH,1INT 21H(1)运行结束后,(AL)=?它是哪一个键的ASCII码?答:(AL)=35 他是5的ASCII码运行结果如图(2)重复运行以上程序段,并分别用“A”、“B”、“C”、“D”键代替“5”键,观察运行结果有何变化?答:A时AL=(61)B时AL=(62)C时AL=(63)D时Al=(64)(3)再将1变为7和8,分别运行之答:7时AL=(37)8时Al=(38)2、输入以下程序段并运行之。

MOV DL,‘A’MOV AH,2INT 21H(1)观察屏幕上的输出,是否显示了“A”字符?显示了A字符如图(2)分别用“#”、“X”、“Y”、“$”、“?”代替程序段中的“A”字符,观察屏幕上的输出有何变化,并查看DL中的内容。

1、#时屏幕出现# 如图DL=(23)2、X时屏幕出现X 如图DL=(58)3、Y时屏幕出现Y 如图DL=(59)4、$时屏幕出现$ 如图DL=(24)5、?时屏幕出现?如图DL=(3F)(3)分别用0DH、0AH、24H代替程序段中的“A”字符,观察屏幕上的输出有何变化。

答:屏幕依次出现 CR,LF,$(4)用07H代替程序段中的“A”字符,观察屏幕上有无输出?计算机内的扬声器是否发出“哔”的声音?答:无输出如图发出哔的声音3.按要求运行程序,并回答问题。

提示:系统使用0AH号功能调用时,按如下方法设置键盘缓冲区:缓冲区长度N 实际读入的字符个数N个字节的预留内存区在DS:0000H开始的内存区域设置变量名为M1的如下键盘缓冲区:DATA SEGMENTM1 DB 5,0,5 dup (?)DATA ENDS然后输入以下程序段并单步运行,执行INT 21H指令时,在键盘上键入“5”、“4”、“3”、“2”、“1”、〈回车〉这六个键。

实验三字符串

实验三字符串

实验三字符串第3章串3.1 知识点概述串是一种特殊的线性表,它的每个结点仅由一个字符组成。

串是计算机中主要的非数值处理的对象,在计算机文字编辑、词法分析等方面有着广泛的应用。

串的基本运算有:串赋值、串复制、判断串空否、求串长、串联接、求子串、子串位置、串比较、串置换、插入和删除等。

串的存储有顺序存储(定长顺序存储和堆存储)和链式存储。

3.2 字符串的基本操作一、实验目的掌握字符串的基本操作掌握字符串函数的基本使用方法熟悉串的模式匹配算法和一般的文字处理方法二、实验内容(一)验证实验1、串的模式匹配:设有一目标串s和一模式串s1,判断目标串s 中是否包含模式串s1。

方法是:从目标串s中的第一个字符开始,按s1模式串的长度s1.len,与s1子串中的字符依次对应比较。

若不匹配,则再从目标串s中的第二个字符开始,仍按s1模式串的长度s1.len,与s1子串中的字符依次对应比较。

如此反复进行比较。

直到匹配成功或者目标串s中剩余的字符少于s1的长度为止。

若匹配成功,则返回s1在s中的位置。

若匹配不成功,则返回函数值-1。

2、串连接:将两个字符串连接。

其中一个串接在另一个串的末尾,生成一个新串。

(注意:串的末尾有\0)若给出两个串s1和s2,把s2连接在s1之后,生成一个新串s。

3、两串相等判断:给定两个串s1和s2,当s1和s2相等时,返回函数值1,否则返回函数值0。

(二)设计实验1、写一个串的基本操作演示系统。

在该演示系统中,能提供命令行的输入,能对输入的命令进行简单的编译并作出相应的出错处理,最后根据命令动词功能来执行命令行。

命令定义如下:(1)赋值:assign 串名1 串名2例如输入命令assign ss tt操作结果是将串tt赋值给了ss串(2)新建:creat 串名1 字符串常量例如输入命令creat ss ‘abcdefg’操作结果是将字符串常量赋值给串ss,注意:字符串常量两边用单引号括起来,不能省略(3)判断:equal 串名1 串名2 例如输入命令equal ss tt操作结果是根据两串比较的结果输出相应的信息(4)求串长:length 串名例如输入命令length ss操作结果是返回字符串的长度(5)字符串连接:concat 串名1 串名2 新串名例如输入命令concat ss tt v操作结果是将串ss和串tt连接起来(ss在前,tt在后)形成一个新串,并输出新串(6)求子串:substr 串名起始位置子串长度新子串名例如输入命令substr ss 1 3 t操作结果是将串ss从起始位置1开始的3个字符存入到串t中(7)子串定位:index 串名1 串名2 起始位置例如输入命令index ss t 1操作结果是返回串t在串ss从第1个字符后的字符序列中第一次出现的位置(8)退出:quit操作结果是结束演示系统运行的功能[数据描述](1)定义串的数据类型为指向字符的指针typedef char *STRING;//定义新的字符串类型,即指向字符的指针(2)在本程序中支持串名操作,因此需要将各字符串所对应的串名和首地址都存放在一个串头表中:struct strheadlist{STRING strhead[100]; //字符串首地址STRING strname[100]; //字符串的串名int curnum; //当前串头表中串的数目}(3)对于提示符下输入的每一行命令,在进行分析后,需要保留分析的结果(参数最多有6个)struct result{int num; //命令行中参数的个数int nametype[6]; //命令行中各参数的类型STRING str[6]; //命令行中各参数都以字符串的形式返回}注:参数类型以整型表示,如为1,则表示参数为命令动词;如为2,则表示参数为字符串;如为3,则表示参数为整数;如为4,则表示参数为串名。

实验三串基本操作的编程实现

实验三串基本操作的编程实现

实验三-串基本操作的编程实现一、实验目的本实验旨在深入理解和掌握串(字符串)的基本操作,包括串的创建、拼接、比较、子串查找等,并通过编程实现这些操作来加深对理论知识的理解。

二、实验内容1.串的创建与拼接2.串的比较3.子串的查找三、实验步骤与实现1.串的创建与拼接在Python中,我们可以使用字符串来创建串。

字符串是不可变的,这意味着我们不能改变字符串中的字符,但我们可以创建一个新的字符串。

拼接两个字符串可以通过加号(+)来实现。

# 串的创建str1 = "Hello"str2 = "World"# 串的拼接str3 = str1 + " " + str2print(str3) # 输出:Hello World2.串的比较在Python中,我们可以使用比较运算符(如==、<、>)来比较两个字符串。

字符串的比较是基于字符的ASCII值来进行的。

# 串的比较str1 = "Hello"str2 = "World"# 比较两个串是否相等if str1 == str2:print("两个串相等")else:print("两个串不相等") # 输出:两个串不相等3.子串的查找在Python中,我们可以使用find方法来查找一个字符串是否包含另一个字符串。

如果找到了子串,它将返回子串在主串中第一次出现的位置的索引;如果没有找到,它将返回-1。

# 子串的查找str1 = "Hello, world!"str2 = "world"# 查找子串的位置index = str1.find(str2)if index != -1:print("子串在主串中的位置是:", index) # 输出:子串在主串中的位置是: 7else:print("没有找到子串")四、实验总结与思考通过本次实验,我们了解了如何使用Python来实现串的基本操作。

字符串的输入输出

字符串的输入输出

字符串的输⼊输出本⽂部分内容参考了C Primer Plus(Fifth Edition)C语⾔字符串表⽰ 字符串是C语⾔中最常⽤也是最重要的数据类型,但是C语⾔没有专门提供这种类型。

因为字符串由字符组成,所以声明字符串,我们⽤字符数组。

字符数组是字符串的变量表⽰⽅法。

纯字符数组和字符串的区别和联系就是:字符串是⼀个以'\0'结尾的字符数组。

因此,我们声明⼀个字符数组char ch[32]实际上它最多只能存储31个可显⽰字符,最后⼀个字符是'\0',它是字符串结尾的标志。

字符串还有⼀种表⽰⽅法,那就是字符串常量(字符串字⾯量)。

例如printf("%s","King and Queen");这个表达式语句中"King and Queen"就是字符串常量。

实际上,它也是⼀个元素为字符常量的数组,这个数组内容为(char []){'K','i','n','g',' ','a','n','d',' ','Q','u','e','e','n','\0'};千万注意别忘了'\0'。

因为字符串常量如"Anytime"可以表⽰这个字符串(准确说是元素为字符常量的数组)的⾸地址。

因此,我们可以⽤指针来操作字符串。

我们可以这样声名:char * chptr = "Anytime";但不能这样:char * chptr;*chptr = "Anytime";因为*chptr表⽰chptr所指向的地址上⾯的内容,如果这个指针未初始化,那么这就是个很危险的操作,指针有可能乱指向内存空间,如果指向的是系统⽂件,它就会修改系统⽂件。

实验3 数据的输入与输出

实验3 数据的输入与输出

实验三数据的输入与输出一、实验目的1.掌握Print方法的使用,尤其是各种输出格式的设置。

2.掌握InputBox函数的使用。

3.掌握MsgBox函数和MsgBox语句的使用。

二、实验内容1.实验准备在练习文件夹中建立vb3-1、vb3-2、vb3-3、vb3-4、vb3-5、vb3-6、vb3-7文件夹。

2.Print方法实验例1:设计一个简单的VB程序。

程序运行时,单击窗体,分别用紧凑格式、标准格式和自定义格式,在窗体上输出打印项。

界面如下:图3.1 打印格式实验窗体界面设计(1)创建工程。

(2)建立用户界面在窗体下方画5个命令按钮,自左至右,名称依次为Command1 ~ Command5,如图3.1所示。

(3)设置各对象的属性。

各控件主要属性的设置参见表3.1。

表3.1 属性设置(4)编写命令按钮的事件代码。

双击“紧凑格式”按钮,进入代码编写窗口,编写如下代码:在输入以上代码时要注意区分中英文双引号。

中文标点只能作为字符串的一部分或出现在注释文字之中。

(5)调试运行程序。

单击菜单[运行]—[启动],或者单击工具栏的“启动”按钮,单击各个按钮,查看效果。

如单击“标准格式”和“自定义格式”按钮后,效果如图3.2所示。

图3.2 Print输出效果保存结果到练习文件夹中的vb3-1文件夹。

3.InputBox函数实验例2:设计一个简单的VB程序,界面如下:图3.3 InputBox函数实验界面设计(1)创建工程。

(2)建立用户界面。

各控件主要属性的设置参见表3.2。

表3.2 属性设置(3)双击按钮控件,切换到代码设计窗口,添加程序代码如下:(4)调试运行程序。

单击“计算输出”按钮,弹出InputBox对话框,输入数据,如图3.4所示,然后单击“确定”按钮或者直接回车。

两个数据都输入之后,返回到窗体,在两个文本框中可见到串相加和数相加的结果,如图3.5所示。

图3.4 InputBox函数实验数据输入图3.5 InputBox函数实验运行结果保存结果到练习文件夹中的vb3-2文件夹。

实验三 数据串传送和查表程序

实验三 数据串传送和查表程序

实验三数据串传送和查表程序实验三数据串传送和查表程序实验目的通过实验掌握下列知识:1、利用简化段定义方法实现程序结构定义;2、利用DOS的21H号中断调用完成输入输出;3、查表法和查表指令XLAT;4、数据串传送指令MOVS及重复前辍REP;5、掌握EQU和DUP伪指令的用法。

实验内容及步骤一、利用查表方法显示内存单元的内容1、编辑下列程序:.model small.stack.datastr1 db 'ABCDEFGHIJ' ;待显示的内存区内容str2 db 'Please input the number you will display:',10,13,'$'.code.startupmov ah,9mov dx,offset str2int 21h ;显示STR2字符串的内容,即提示信息mov ah,1int 21h ;输入待显示的字符序号(0-9)mov bx,offset str1sub al,30hxlat ;查STR1表,对应序号的字符ASCII码进入ALmov dl,almov ah,2int 21h ;显示对应字符.exit 0End2、程序汇编通过后,在运行过程中输入0-9的任意数字,显示STR1字符串中对应位置的字符。

3、在DEBUG环境中,用P命令调试执行该程序,察看AL寄存器的变化情况及结果的输出,分析其执行过程。

二、数据串传送程序1、编辑下列程序:.model small.stack.datastr1 db 'abcdefghijklmn' ;源串定义lengs equ $-str1str2 db lengs dup (?),'$' ;目标串.code.startupmov ax,dsmov es,ax ;使DS和ES为同一个段cldlea si,str1lea di,str2mov cx,lengsrep movsb ;串复制mov ah,9mov dx,offset str2int 21h ;显示目标串.exit 0End2、程序汇编通过后,运行程序察看输出结果3、在DEBUG环境中,用P命令调试执行该程序,察看SI、DI寄存器及相应内存单元的变化情况,分析其执行过程。

字符及字符串的输入输出实验报告-文少轩

字符及字符串的输入输出实验报告-文少轩

字符及字符串的输入输出实验报告西安交通大学文少轩一、实验目的1.掌握简单的DOS系统功能调用;2.掌握在PC机上建立,汇编,链接,调试和运行8086汇编语言程序的全过程。

二、实验设备IBM-PC 微型计算机一台三、实验要求1. 复习DOS系统功能调用的1,2,9,10号功能;2. 认真阅读预备知识中汇编语言的上机步骤的说明,熟悉汇编程序的建立,汇编,连接,执行,调试的全过程。

四、实验内容及数据记录实验内容一:字符的输入和输出从键盘读入一个小写字母,输出字母表中倒数与该字母序号相同的那个字母。

例如输执行结果:*实验习题:如果要在程序中加入显示提示字符串“Please input a lowercase letter”和“The inverse letter is:”,应如何修改程序?程序代码:执行结果:实验内容二:字符串的输入和输出从键盘输入一个字符串(假定键盘缓冲区的名字为STR),将其传送给INFO变量后,再在屏幕上显示出来。

汇编、连接:执行结果:*实验习题:如果要在程序中加入显示提示字符串“Please input a string”和“The string you input is:”,应如何修改程序?程序代码:DSEG SEGMENTINTIP DB 'Please input a string',0DH,0AH,'$'汇编、连接:执行结果:五、实验小结1.DOS系统功能调用的10号功能对键盘缓冲区格式地要求:第一个字节为输入字符串的最大长度,第二个字节用来存放实际输入字符串的长度,从第三个字节开始存放实际输入的字符串的ASCII码;2.DOS系统功能中的1、2、9、10号功能的输入输出参数及存放的寄存器关系如下表:3.字符和字符串的输入输出的实现都需要调用相应功能号,并产生相应的中断,即先给AX赋值所需的功能号,然后产生21H中断,输入的单字符会存放在AL中,输出单字符前需要把字符ASCII码存放到DL中,输入输出字符串,需要先把字符缓冲区首址存放到DS:DS寄存器中。

实验三字符串操作

实验三字符串操作

一、实验要求和目的1.了解汇编语言字符串处理基本流程;2.熟悉汇编语言字符串处理基本指令的使用方法;3.掌握利用汇编语言实现字符串处理的程序设计方法。

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

三、实验涉及的主要知识1、字符串处理基本操作流程(1)利用SI寄存器保存源串首地址;(2)利用DI寄存器保存目的串首地址;(3)利用CX寄存器保存字符串长度;(4)利用CLD或STD指令设置字符串处理;(5)利用字符串处理指令实现相关处理。

其中,CLD指令使DF=0,在执行串处理指令时可使地址自动增量;STD使DF=1,在执行串处理指令时可使地址自动减量。

提示:字符串处理一般都涉及到源串和目的串,汇编语言规定源串在数据段中定义,目的串在附加段中定义。

2、重复前缀指令,重复次数由计数寄存器CX中存放的值决定,指令每重复执行一次,计数器CX中值减1,当CX中值减至0时,停止重复执行,继续执行下一条指令REP无条件重复前缀,重复串操作直到计数寄存器的内容CX为0为止。

经常与REP配合工作的字符串处理指令有MOVS、STOS和LODS。

REPE/REPZ判断计数寄存器的内容CX是否为0或ZF=0(即比较的两个操作数不等),只要满足一个则重复执行结束,否则继续执行。

可以与REPE/REPZ配合工作的串指令有CMPS和SCAS。

3、字符串处理基本指令(1)MOVS传送指令格式:MOVSDST,SRC或MOVSB(传送字节)或MOVSW(传送字)。

后面两种形式需要与REP指令结合使用。

该指令把由源变址寄存器邰区⑺指向的数据段中的一个字(或字节)数据传送到由目的变址寄存器851)指向的附加段中的一个字(或字节)中去,同时,根据方向标志及数据格式(字或字节)对源变址寄存器和目的变址寄存器进行修改。

(2)STOS存入串指令格式:STOSDST或STOSB(存入字节)或STOSW(存入字)。

第八讲 字符、字符串的输入与输出

第八讲 字符、字符串的输入与输出

1 第八讲 字符、字符串的输入与输出一:字符的输入与输出函数:1:字符输入函数getche ( ):它有两个变体getchar( )和getch( ),而第二个变体用得最多。

它们用于等待从键盘上输入一个‘字符’。

2:字符输出函数putchar(n): 其功能是用于输出单个‘字符’。

3:程序举例:<1>单个‘字符’的输入和输出:#include ”conio.h ” /*字符函数须此头文件*/ main(){char ch ; /*定义ch 为字符型变量*/ ch=getche() /*等待键入一个‘字符’*/ putchar(ch); /*输出键入的‘字符’*/ putchar(‘\n ’); /*注意用单引号加\n 换行*/ } 运行:输入a ,屏幕显示:aa注:使用该函数要用头文件。

运行结果中第一个a是键盘上输入系统回显的,第二个a 是putchar(ch) 函数输出的。

<2>多个‘字符’的输入和输出:#include<conio.h> /*字符函数须此头文件*/ main(){char a,b,c ; /*定义a,b,c 为字符变量*/ a=getch();b=getch();c=getch(); /*输入*/ putchar(a);putchar(b);putchar(c); /*输出*/ getch();} 运行:在键盘上输入boy ↙后显示:boy注:①最后一行的getch()函数在程序中的作用是显示boy 后,将停留到有一键按下,这有利于观察运 行结果,无须再按“Alt + F5”来查看运行果。

②用getch 函数编程,键盘输入系统无回显。

二:“字符串”的输入与输出函数:1:“字符串“的输入函数 gets (): 其功能是用于从键盘上输入“字符串”。

2:“字符串”的输出函数puts(): 其功能是用于输出“字符串”。

3:程序举例:<1>“字符串”的输入与输出:#include"string.h"/*字符数组用此头文件*/ main(){char p[20];/*定义一维数组p 为字符型*/clrscr();gets(p); /*在键盘上键入“字符串”*/ puts(p); /*输出数组中的“字符串”*/ puts("\n"); /*注意用双引号加\n 换行*/ puts("hello ");/*输出“hello ” 字符串*/} 运行:如输入This is a book.↙则显示: This is a book. (空一行) hello注:①在键盘上输入“字符串”后,必须用回车作为输入结束,在字符串后面用“\0”代替回车符。

实验三输入和输出函数

实验三输入和输出函数

实验三输入和输出函数【实验目的】:1、掌握C程序中格式输出函数和格式输入函数的用法。

2、掌握C程序中字符输出函数和字符输入函数的用法。

【实验时数】:2学时【实验内容】:一、新建文件夹按照实验1新建文件夹的方法,建文件夹,名为“实验3”,用来保存此次的作业。

二、相关知识点1.格式输出函数和格式输入函数格式输出函数prinrt( )的一般形式:printf(格式控制字符串,输出列表);此函数的作用是按指定格式,将指定的数据输出到显示屏幕上。

格式输入函数scanf( )的一般形式:scanf(格式控制字符串,地址列表);此函数的作用是按指定格式,从键盘上将数据输入到指定的变量中。

2.字符输出函数和字符输入函数字符输出函数putchar( )的一般形式:putchar(ch);字符输入函数getchar( )的一般形式:getchar( );三、实验内容:【程序一】程序改错。

该程序的功能是:从键盘上输入两个数,在屏幕上输出这两个数。

程序中有几个错误,修改程序使之能正确运行,修改后的程序以文件名pg3101.c保存。

源程序(有错误的程序):修改后程序的运行结果如图3.1.1所示:图3.1.1 pg3101.c的运行结果【程序二】程序改错。

该程序的功能是:从键盘上输入一个数,求这个数的平方。

程序中有一个错误,修改程序,使之能够正确运行,修改后的程序以文件名pg3102.c保存。

源程序(有错误的程序):修改前的运行结果:修改后的运行结果:图3.1.2 pg3102.c的源程序和运行结果【程序三】程序改错。

该程序的功能是:从键盘上读入一个字符并输出该字符。

程序中有一个错误,修改程序使之能正确运行。

程序以文件名pg3103.c保存。

源程序(有错误的程序):修改前的运行结果:修改后的运行结果:图3.1.3 pg3103.c的源程序和运行结果【程序四】程序扩展。

该程序的功能是:从键盘上输入两个数,使用条件表达式求出两个数的最大值。

字符及字符串的输入输出函数

字符及字符串的输入输出函数

字符串输入1,gets()函数用gets()输入字符串,没有预定的长度,为了知道输入何时结束,解决的办法是读字符串,直到遇到一个换行(\n),按回车键可以结束输入,它读取换行符之前(不包括换行符)的所有字符,在这些字符后添加一个空字符(\0),然后把这个字符串交给调用它的程序它将读取换行符并将其丢弃缺点:不检查预留有存储区是否能够容纳实际输入的数据,多出来的字符简单地溢出到相邻的内存区,fgets()改进了这个问题2,fgets()函数1),他需要第二个参数来说明最大读入字符数,如果这个参数值为n, fgets()就会读取最多n-1 个字符或者读完一个换行符为止,由这二者中最先满足的那个结束输入2),如果fgets()读取到换行符,就会把它存到字符串里,而不是像gets() 那样丢弃换行符3),它还需要第三个参数来说明读哪个文件,从键盘上读数据时,可以使用stdin作为该参数如:fgets( name , Max ,stdin);缺点:由于fgets()把\n 也当做输入字符,所以输出时,每遇到\n 就自动换行,可以用strchr() 来定位和删除换行符3, scanf()1), 带有%s格式scanf()函数来读入一个字符串,带有%c可读取一个字符,此时空格符也算一个字符所以输入是要注意了2),scanf()使用2种方法决定输入结束∙遇到第一个空格,制表符,换行符∙如果指定了字段宽度,比如%10s,则scanf()就会读入10个字符,或知道遇到第一个空白字符,二者最先满足的那个终止输入∙ scanf()函数返回的是一个整数值,是成功读取的项目数或当遇到文件结束时返回EOF。

字符串输出1,puts()函数1), 与printf()不同,puts()显示字符串是自动在其后添加一个换行符,puts()遇到空字符时,输出停止,所以确保有空字符存在否则直到发现一个空字符为止2,fputs()函数1), fputs()函数需要第二个参数来说明需要写的文件,可以使用stdout作为参数来进行输出stdout在stdio.h中定义了2),与puts不同,fputs()并不为输出自动添加换行符字符串输入、输出的比较:∙gets()丢弃输入的换行符∙puts()为输出添加换行符∙fgets()存储输入的换行符∙fputs()不为输出添加换行符例如一程序中要求读取一行并把它回显在下一行,则可以这样写char line[8];while(gets(line))puts(line);3,printf()函数可以格式化多种数据类型,更常用字符输入输出函数getchar() putchar() getch() getche()1,getchar()函数从键盘键入字符结束后,既带缓冲区有带回显2,getche()函数:从键盘键入字符结束后,既不带缓冲区而有带回显3,getch()函数:从键盘键入字符结束后,既不带缓冲区有不带回显4,getchar()和putchar()的区:getchar()无参数,函数的返回值,即为输入字符。

实验三 数据的输入输出

实验三  数据的输入输出

三、思考题 1.分析输入和输出函数中的格式转换符有什 么区别? 2. 根据上面的上机练习,总结出scanf()函数在 输入数据时,要注意哪些问题?
(提示:printf()函数占了两行,在第一行末尾使用了一个反斜杠 (\)指出字符串将延续到下一行,因此编译器将把这两行代码视为一 行) 运行结果: (3)运行结果,并对每条程序加以注释。 #include <stdio.h> #include <math.h> main() { float a,b,c,disc,x1,x2,p,q; scanf("a=%f,b=%f,c=%f",&a,&b,&c); disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("\n\nx1=%5.2f\nx2=%5.2f\n",x1,x2); } 输入:a=1,b=3,c=2 运行结果: (4)观察以下代码的运行结果是否会显示在同一行? #include<stdio.h> void main() { printf(“hello, ”); printf(“world”); } 运行结果: (5)学习使用按位与& 运算。 程序分析:0&0=0; 0&1=0; 1&0=0; 1&1=1 #include <stdio.h> void main() { int a,b; a=077; b=a&3; printf("\40: The a & b(decimal) is %d \n",b); b&=7; printf("\40: The a & b(decimal) is %d \n",b); } 运行结果:

02-字符串的输入与输出(PPT)

02-字符串的输入与输出(PPT)

(2)用puts()来进行字符串的输出。
调用格式:
puts(字符数组名、字符指针名或字符串常量)
#include <stdio.h> int main() {
char ch[15]="Hello"; char *sp="world!"; puts(ch); puts(sp); puts("Hello world!"); return 0; }
“%s”表示按字符串格式进行输 入或输出
#include <stdio.h> int main() {
char ch[15]; scanf("%s",ch); printf("%s\n",ch); return 0; }
不能写成scanf("%s",&ch)
注意:C语言规定,用scanf()输入字符串是以空格、回车或制表符作为 字符串的分隔符。当遇到这些符号时,就认为字符串输入结束。
char ch[15],s; scanf("%s",ch); s=getchar(); printf("%s",ch); return 0; }
printf("%s%c",ch,s);
(2)用gets()来进行字符串的输入
用gets()可以直接输入字符串,直至遇到回车键为止,一般格式为:
gets(字符数组名)
用puts() 输出字符串,遇到“\0”结束字符串输出,同时自动换行。
利用格式输入输出函数scanf()与printf(),结合格式控制符“%s”,能够很方便地 实现字符串的输入与输出。
gets()与puts() 是专门对字符串进行输入输出的一对函数,不需要进行格式控制, 使用起来更加方便和简洁。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三字符及字符串的输入和输出
一、实验目的
1.熟悉如何进行字符及字符串的输入输出。

2.掌握简单的DOS系统功能调用。

二、实验预习要求
1.复习系统功能调用的1、2、7、8、9、10号功能。

2.按照题目要求预先编写好实验中的程序段。

三、实验任务
1.输入以下程序段并用“single step”单步运行,执行INT 21H指令时,在键盘上按“5”键。

MOV AH,1
INT 21H
(1) 运行结束后,(AL)=?它是哪一个键的ASCII码?
(2) 重复运行以上程序段,并分别用“A”、“B”、“C”、“D”键代替“5”
键,观察运行结果有何变化?
(3) 再将1变为7和8,分别运行之
2.输入以下程序段并运行之。

MOV DL,‘A’
MOV AH,2
INT 21H
(1)观察屏幕上的输出,是否显示了“A”字符?
(2)分别用“#”、“X”、“Y”、“$”、“?”代替程序段中的“A”字符,观
察屏幕上的输出有何变化,并查看DL中的内容。

(3)分别用0DH、0AH、24H代替程序段中的“A”字符,观察屏幕上
的输出有何变化。

(4)用07H代替程序段中的“A”字符,观察屏幕上有无输出?计算机内的扬声器是否发出“哔”的声音?
3.按要求运行程序,并回答问题。

提示:系统使用0AH号功能调用时,按如下方法设置键盘缓冲区:
在DS:0000H开始的内存区域设置变量名为M1的如下键盘缓冲区:DATA SEGMENT
M1 DB 5,0,5 dup (?)
DATA ENDS
然后输入以下程序段并单步运行,执行INT 21H指令时,在键盘上键入“5”、“4”、“3”、“2”、“1”、〈回车〉这六个键。

LEA DX,M1
MOV AH,0AH
INT 21H
程序段运行完后,检查DS:0000H开始
的内存区域:
①DS:0001H单元的内容是什么?它表示了什么含义?
②从DS:0002H开始的内存区域中的内容是什么?其中是否有字符“1”
的ASCII码?为什么?
4.要在屏幕上显示一个字符串“Hello, world”,写出该字符串变量的定义语句和显示这个字符串的程序段。

上机验证之。

(此题不要求写在实验报告上)
四、实验报告要求
1.整理出运行完整的实验程序和运行结果。

2.回答题目中的问题。

3. 1、2、9、10号功能的输入输出参数有哪些?分别放在什么寄存器中?
4.。

相关文档
最新文档