实验三 数组和字符串

实验三   数组和字符串
实验三   数组和字符串

实验三数组和字符串

一、实验目的

1.掌握Java中的数组定义、引用

2.掌握向量的基本概念和应用技术

3.掌握使用字符串String类处理字符串的方法

4.掌握使用字符串StringBuffer类处理字符串的方法

5.掌握Date类以及Calendar类的常用方法;

二、实验内容

1.使用https://www.360docs.net/doc/067667006.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]

if(num[i-1]>300) count++;

}

System.out.println("最大的随机整数是:"+max);

System.out.println("最小的随机整数是:"+min);

System.out.println("大于300 的整数个数是:"+count);

}

}

2.求下列二维数组中各行元素之和并查找其值最大的那个行。package exercise;

publicclass shiyan3_2 {

publicstaticvoid main(String[] args)

{

int twoDimArray[][] = {

{24, 47, 55, 44, 24, 68, 98},

{96, 71, 64, 95, 20, 18, 21},

{47, 34, 28, 36, 89, 63, 86},

{64, 46, 58, 73, 24, 73, 13}

};

int sum, max, maxRow=0;

max = 0;

for (int row=0; row<4; row++) //数组的行数

{

sum = 0;

for (int col=0; col<7; col++)//数组的列数

sum += twoDimArray[row][col];

if(sum>max)

{

maxRow=row;

max=sum;

}//求得和最大的行及总和

}

System.out.println("和最大的行是" + maxRow + " 最大值为" + max);

}

}

3.String 类的常用方法。

实验要求:编写一个Java 应用程序,判断两个字符串是否相同,判断字符串的前缀、后缀是否和某个字符串相同,按字典顺序比较两个字符串的大小关系,检索字符串,创建字符串,将数字型字符串转换为数字,将字符串存放到数组中,用字符数组创建字符串。

package exercise;

publicclass shiyan3_3 {

publicstaticvoid main(String[] args)

{

String s1=new String("徐州工程学院"),

s2=new String("江苏省徐州市");

if(s1.equals(s2)) System.out.println("s1 与s2 相同");// 使用equals 方法判断s1 与s2 是否相同

else System.out.println("s1 与s2 不相同");

String s3=new String("320305************");

if(s3.substring(0,6).equals("320305")) System.out.println("江苏省徐州市的身份证");//判断s3 的前缀是否是“320305”

String s4=new String("你"),

s5=new String("我");

if(https://www.360docs.net/doc/067667006.html,pareTo(s5)>0) System.out.println("按字典序s4 大于s5");//按着字典序s4 大于s5 的表达式

else System.out.println("按字典序s4 小于s5");

int position=0;

String path="c:\\java\\SY6_1.java";

position=https://www.360docs.net/doc/067667006.html,stIndexOf("\\");//获取path 中最后出现目录分隔符号的位置 System.out.println("path 中最后出现\\的位置:"+position);

String fileName=path.substring(12);//获取path 中“SY6_1.java”子字符串。

System.out.println("path 中含有的文件名:"+fileName);

String s6=new String("230"), s7=new String("123.456");

int n1=Integer.parseInt(s6);//将s6 转化成int 型数据。

double n2=Double.parseDouble(s7);//将s7 转化成double 型数据。

double m=n1+n2;

System.out.println(m);

String s8=String.valueOf(m);//String 调用valuOf(int n)方法将m 转化为字符串对象

position=s8.indexOf(".");

String temp=s8.substring(position+1);

System.out.println("数字"+m+"有"+temp.length()+"位小数") ;

String s9=new String("ABCDEF");

char a[]=newchar[6];//将s8 存放到数组a 中。

for(int i=a.length-1;i>=0;i--)

System.out.print(""+a[i]);

}

}

4.比较日期的大小

实验要求:编写一个java应用程序,用户从输入对话框输入了两个日期,程序将判断两个日期的大小关系、以及两个日期之间的间隔天数。

package exercise;

import java.sql.Date;

import java.util.Calendar;

import javax.swing.JOptionPane;

public class shiyan3_4 {

public static void main(String[] args)

{

String str=JOptionPane.showInputDialog("输入第一个日期的年份:");

int yearOne=Integer.parseInt(str);

str=JOptionPane.showInputDialog("输入该年的月份:");

int monthOne=Integer.parseInt(str);

str=JOptionPane.showInputDialog("输入该月份的日期:");

int dayOne=Integer.parseInt(str);

str=JOptionPane.showInputDialog("输入第二个日期的年份:");

int yearTwo=Integer.parseInt(str);

str=JOptionPane.showInputDialog("输入该年的月份:");

int monthTwo=Integer.parseInt(str);

str=JOptionPane.showInputDialog("输入该月份的日期:");

int dayTwo=Integer.parseInt(str);

Calendar calendar=Calendar.getInstance();//初始化日历对象

calendar.set(yearOne,monthTwo,dayOne);//将calendar 的时间设置为

yearOne 年monthOne 月dayOne 日

long timeOne=calendar.getTimeInMillis();//calendar 表示的时间转换成毫秒

calendar.set(yearTwo,monthTwo,dayTwo);//将calendar 的时间设置为yearTwo 年monthTwo 月dayTwo 日

long timeTwo=calendar.getTimeInMillis();//calendar 表示的时间转换成毫秒。

Date date1=new Date(timeOne);// 用timeOne 做参数构造date1

Date date2=new Date(timeTwo);// 用timeTwo 做参数构造date2

if(date2.equals(date1)) System.out.println("两个日期的年、月、日完全相同");

else if(date2.after(date1)) System.out.println("您输入的第二个日期大于第一个日期");

else if(date2.before(date1)) System.out.println("您输入的第二个日期小于第一个日期");

long

days=Math.abs((date1.getTime()-date2.getTime())/(24*3600*1000));//计算两个日期相隔天数

System.out.println(yearOne+"年"+monthOne+"月"+dayOne+"日和"

+yearTwo+"年"+monthTwo+"月"+dayTwo+"相隔"+days+"天");

}

}

5.有NUMBER 个马拉松运动员,对这些运动员的成绩进行排名次,NUMBER 和运动

员的成绩由用户输入,编写程序,输出所有运动员的成绩和名次。

package exercise;

import java.util.Scanner;

publicclass shiyan3_5 {

publicstaticvoid main(String[] args) {

// TODO Auto-generated method stub

System.out.print("请输入Number : ");

@SuppressWarnings("resource")

int Number = new Scanner(System.in).nextInt();

String[] name = new String[Number];

double[] score = newdouble[Number];

int[] sortNumber = newint[Number];

Scanner scanner = new Scanner(System.in);

for(int i = 0; i

System.out.print("请输入第" + (i + 1) + "个运动员的姓名:");

name[i] = scanner.nextLine();

System.out.print("请输入第" + (i + 1) + "个运动员的分数:");

score[i] = scanner.nextDouble();

scanner.nextLine();

sortNumber[i] = i;

}

scanner.close();

for(int i = 0; i

for(int j = 0; j

if(score[j] >score[j + 1]){

int temp = sortNumber[j];

sortNumber[j] = sortNumber[j + 1];

sortNumber[j + 1] = temp;

}

}

}

System.out.println("马拉松运动员排名榜:");

System.out.println("名次" + "\t" + "姓名" + "\t" + "分数");

for(int i = 0; i

System.out.println(i + 1 + "\t" + name[sortNumber[i]] + "\t" + score[sortNumber[i]]);

}

}

}

6.某班级有50 个学生,针对每个学生的《Java 程序设计》成绩x,输出其相应的等级,等级为:优秀、良好、中等、及格和不及格,划分标准为优秀(90≤x ≤100)、良好(80≤x<90)、中等(70≤x<80)、及格(60≤x<70)、不及格(x<60)。当某个学生的成绩x<45 时,增加警告提示信息“你的成绩太低了,需要加倍努力!”。

package exercise;

publicclass shiyan3_7 {

publicstaticvoid main(String[] args) {

// TODO Auto-generated method stub

int[] score = newint[50];

for(int i = 0; i< 50; ++i){

score[i] = (int) (Math.random()*65) + 35;

}

for(int i = 0; i< 50; ++i){

System.out.print("This is the "+ (i+ 1) + " student , he(she) score is " + score[i] + ":");

switch(score[i] / 10)

{

case 10:

case 9: System.out.println("优秀"); break;

case 8: System.out.println("良好"); break;

case 7: System.out.println("中等"); break;

case 6: System.out.println("及格"); break;

default : System.out.println("不及格"); break;

}

if(score[i] < 45){

System.out.println("警告 : 你的成绩太低了,需要加倍努力!");

}

}

}

}

三、实验心得

通过了本次试验,我了解了Java中的数组定义、引用,使用字符串String类、StringBuffer类处理字符串的方法。

实验三 数组和字符串

实验三数组和字符串 一、实验目的 1.掌握Java中的数组定义、引用 2.掌握向量的基本概念和应用技术 3.掌握使用字符串String类处理字符串的方法 4.掌握使用字符串StringBuffer类处理字符串的方法 5.掌握Date类以及Calendar类的常用方法; 二、实验内容 1.使用https://www.360docs.net/doc/067667006.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); } }

微机原理实验2程序 - 字符串匹配实验

8086汇编语言程序实验: 实验二、字符串匹配实验 题目: 1、(必做题)编程实现:从键盘分别输入两个字符串(不必等长), 然后进行比较,若两个字符串有相同的字符,则显示“MATCH”,若字符都不相同则显示“NO MATCH”。 2、(选做题)编程实现:从键盘分别输入两个字符串,然后进行比 较,若两个字符串的长度和对应字符都完全相同,则显示“MATCH”,否则显示“NO MATCH”。 对应程序如下所示: ;第1题 ;==================================== HUICHE MACRO ;定义一个具有回车、换行功能的宏,为程序多次回车换行所调用。 MOV DL,0DH ;用2号功能“显示”回车。 MOV AH,02H INT 21H MOV DL,0AH ;用2号功能“显示”换行。 MOV AH,02H INT 21H ENDM DA TA SEGMENT MESSAGE1 DB 'MATCH','$' ;定义“MATCH”提示信息,“$”作为调用9号功能的结束符。 MESSAGE2 DB 'NO MATCH','$' ;定义“NO MATCH”提示信息。 TISHI1 DB 'Please input the first string:','$' ;提示输入第1个字符串的提示信息。 TISHI2 DB 'Please input the second string:','$' ;提示输入第1个字符串的提示信息。 STRING1 DB 100 ; 100为存第一个字符串的最大可用空间的字节数。 DB ? ;预留字节,存储将要输入的第1个字符串的实际长度。 DB 100 DUP(?) ;预留100个字节空间,用于存放第1个字符串。 STRING2 DB 100 DB ? DB 100 DUP(?) DA TA ENDS

微机实验三 串操作

实验三串操作 一、实验目的 1.熟悉串操作指令的功能。 2.了解串操作指令的使用方法。 二、实验预习要求 1.复习8086指令系统中的串操作类指令。 2.按照题目要求在实验前编写好实验中的程序段。 三、实验任务 1.输入以下程序段并运行之,回答后面的问题。 CLD MOV DI,1000H MOV AX,55AAH MOV CX,10H REP STOSW 上述程序段执行后: (1) 从DS:1000H开始的16个字单元的内容是什么?。 (2) (DI)= ?(CX)= ?,并解释其原因。 2.在上题的基础上,再输入以下程序段并运行之,回答后面的问题。

MOV SI,1000H MOV DI,2000H MOV CX,20H REP MOVSB 程序段执行后: (1)从DS:2000H开始的16个字单元的内容是什么? 55AAH (2)(SI)=?(DI)=?(CX)= ?,并分析之。 SI=1020H,DI=2020H,CX=0000H 3.从DS:1000H开始存放有一个字符串”This is a string”,要求把这个字符串从后往前传送到DS:2000H开始的内存区域中(即传送结束后,从DS:2000H开始的内存单元的内容为”gnirts a si sihT”),试编写程序段并上机验证之。 assume cs:code,ds:datasg,ss:stack datasg segment db 'THIS IS A STRING' db 1000 dup(1) datasg ends stack segment dw 0,0,0,0,0,0,0,0 stack ends code segment start: mov ax,datasg

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

实验三字符及字符串的输入和输出 一、实验目的 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.

实验09-字符串

实验九字符串程序设计 班级:学号:姓名:评分: 一.【实验目的】 1、熟练掌握字符串的存取和操作方法方法。 2、进一步掌握C程序的调试方法和技巧。 二.【实验内容和步骤】 1、程序调试题 A.目标:进一步学习掌握程序调试的方法和技巧。 B.内容:参照《实验指导》教材P71“1.调试示例”,从键盘输入一个以回车键结束的字符串(少于80个字符),将它的内容逆向输出。例如:输入“ABCD”,输出“DCBA”。改正程序中的错误,使其实现程序的功能。(注:程序文件保存在“调试示例”文件夹中,文件名为error08_1.cpp) ①调试正确的源程序清单 #include int main( ) { int i, k, temp; char str[80]; printf("input a string: \n"); i = 0; while((str[i] = getchar( )) != '\n') i++; str[i] = '\0'; k = i - 1; for(i = 0; i < k; i++){ /* 调试时设置断点 */ temp = str[i]; str[i] = str[k]; str[k] = temp; k--; } /* 调试时设置断点 */ for(i = 0; str[i] != '\0'; i++) putchar(str[i]); printf("\n"); return 0; } ②运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。 2、完善程序,并调试运行程序 题目(1)求字符串长度。程序功能:连续输入一批以#结束的字符串(字符串的长度不超过80),遇## 则全部输入结束。统计并输出每个字符串的有效长度。例如:输入:hello 12#abc+0##,表示连续输入2个字符串"hello

实验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.掌握头文件ctype.h的用法; 2.掌握常用函数isalpha、isdigit、isspace、isupper、islower、toupper、tolower等常用函数的使用。 3.掌握常用字符串处理函数strcmp、strcat等的模拟。 二、实验内容 1.字符处理练习。编写一个程序提示用户输入一系列字符,只提示一次。在循环中使用scanf(“%c”,…)语句,一次读入一个字符。根据输入内容生成如下输出结果:一次一行,回显输入字符;调用isalpha()检查是否为字母,若是调用touper()函数将其转换为大写字母,如果不是,则打印出一条错误信息,如果字符为句点,打印一条说明信息后退出。 2.回文。设计一个程序测试一条语句是否是回文:即从前向后读和从后向前读的字母都是相同的。首先提示用户输入一条语句。使用getchar一次读入所有字符,直至出现句号为止。读取过程中要求:(1)回显输入字符;(2)调用tolower()函数将每个字符转换成小写;(3)计算读入字符的个数(包括句号在内);(4)将转换后的字符保存在数组的下一个元素中。算法提示:从数组的结尾和开始位置一起比较字母。比较第1个和最后一个,第2个和倒数第2个,依此类推。如果有一对无法匹配,则退出循环后宣布该条语句不是回文。如果一直进行到语句中内始科没有出现问题,则停止然后宣布输入语句为回文。假设输入内容不会超过80个字符。 3.不用库函数模拟strcat和strcmp函数。 三、选做内容 1.检测字符。使用字符分类函数将字符分成几个类:大写字母、小写字母、数字、代白字符和其他符号。编写一个函数完成测试。在主函数中读取一系列字符,直至遇到句号为止。回显每个输入字符,并找印出相应的标注。计算每个类别出现的次数。处理句号的同时为句号计数,然后打印出字符总额并退出程序。算法提示:使用一个计数器数组,递增计数器时可用枚举常量作为数组的下标。 2.编写一个程序在表格中显示ASCII代码,类似附录中的ASCII表格。不要试图直接打印无法打印的字符,跳过列出十六进制代码的列。 四、常见错误 1.char和int。理论上讲,在C语言中,字符就是极短的整数。但在要领上又是一种独立的类型,有自己独立的操作和不同的输入输出方法。确保不要进行无谓的操作,例如两个字符相乘等; 2.字符输入。输入字符时,空白字符是可能造成困扰的原因。Scanf()对数字类型的输入转换处理自动跳过之前的空白字符,在读取第1个非空白字符时才开始存储数据。但是,无论是否空白字符,getchar()都返回第1个字符,带有“%c”的scanf也是一样。为了跳过之前的空白字符,必须使用带有“%c”限定词(格式中的百分号之前包括一个空格)的scanf()。如果遗漏了这个空格,程序就可能读取空白字符并试图将其翻译成为数据,这通常都会导致出现错误。因此,程序员必须清楚地知道自己想做什么(读取空白字符还是跤过空白字符),然后为任务选择恰当的输入机制。 实验七字符串(二) 一、实验目的 1.熟练掌握字符串的匹配查找。 2.熟练掌握字符串的插入操作。 3.熟练掌握字符串的压缩还原处理。 二、实验内容 1.改错题 以下程序对一个由字母和数字字符组成的字符串从头至尾作如下变换:

微机原理实验三 字符串匹配程序.

实验三字符串匹配程序 教学目标:通过教学让学生掌握显示提示信息的方法及接收键盘输入信息的方法。 重点、难点: 重点:字符串匹配的算法,用INT 21H 的09号子功能显示提示信息,用INT 21H的0A号子功能接收字符 难点:用INT 21H的0A号子功能接收字符 课时安排:2学时 教学过程:讲解实验过程 一实验目的: 掌握显示提示信息的方法及接收键盘输入信息的方法 二实验内容: 编写程序,实现两个字符串的比较。如相同,则显示“MATCH”,否则,显示”NO MATCH”. 三程序框图(讲解流程图,介绍编写程序的思路) 四实验原理 1、讲解DB、DUP、EQU等伪指令的功能以及使用格式 2、讲解INT 21H 的09H子功能的功能、工作情况以及使用格式 3、讲解INT 21H的0AH子功能的功能、工作情况以及使用格式 4、讲解串扫描指令SCASB的功能以及使用格式 5、入栈、出栈指令PUSH 、POP的使用情况 五实验参考程序

CRLF MACRO MOV AH,02H MOV DL,0DH INT 21H MOV AH,02H MOV DL,0AH INT 21H ENDM DATA SEGMENT MESS1 DB 'MA TCH',0DH,0AH,'$' MESS2 DB 'NO MA TCH',0DH,0AH,'$' MESS3 DB 'INPUT STRING1:',0DH,0AH,'$' MESS4 DB 'INPUT STRING2:',0DH,0AH,'$' MAXLEN1 DB 81 ACTLEN1 DB ? STRING1 DB 81 DUP(?) MAXLEN2 DB 81 ACTLEN2 DB ? STRING2 DB 81 DUP(?) DATA ENDS STACK SEGMENT STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DATA START: MOV AX,DA TA MOV DS,AX MOV AX,DA TA MOV ES,AX MOV AX,STACK MOV SS,AX MOV SP,TOP ;段寄存器及堆栈初始化 MOV AH,09H MOV DX,OFFSET MESS3 INT 21H ;显示输入提示1 MOV AH,0AH MOV DX,OFFSET MAXLEN1 INT 21H ;接收键入的字符串1 CRLF ;回车换行 MOV AH,09H MOV DX,OFFSET MESS4 INT 21H ;显示输入提示2 MOV AH,0AH MOV DX,OFFSET MAXLEN2 INT 21H ;接收键入的字符串2 CRLF CLD

字符串处理实验报告

字符串处理实验报告 班级:10网工三班学生姓名:谢昊天学号:1215134046 实验目的和要求: 使学生能够掌握PHP中常用字符串函数的使用方法 实验内容: 编写PHP页面,实现字符串翻转功能、中文字符串截取、字符串对比、HTML 字符串过滤等功能 实验步骤与调试过程: 第一步、 php服务器安装并成功后就可以开始php编程之旅单击任务栏中的系统托盘中wampserver图标, 弹出界面用于管理服务器调试一下,然后打开start all services 选项,时启动服务器 在C:\wamp\www下建立项目sez(十二周首字母),并在该目录下新建一个文本文档,然后将该文件名称从新建文本文档.txt修改为test1.php 第二步、在sez项目中建立文件test2.php,此页面主要用来实现中文字符串截取功能,代码如下所示。 在sez项目中建立文件test3.php,此页面主要用来实现字符串对比功能,代码如下所示。 在sez项目中建立文件test4.php,此页面主要用来实现HTML字符串过滤功能,代码如下所示。 第三步、以记事本方式打开test1.php文件输入代码 第四步、保存test1.php文件内容后,启动php服务器 第五步、打开IE浏览器,在地址栏中输入http://localhost/1/helloworld.php后按回车键 看到想要看到页面则这个php程序编写运行成功 第六步、为保证php程序文件的扩展名确实为php不能隐藏已知文件类型的扩展名单击工具 文件夹选项,弹出文件夹选项对话框 第七步、在文件夹选项对话框中选择查看选项卡取消那个复选框,然后单击确定按钮即可

北理工_汇编_实验三_字符串操作实验

本科实验报告 实验名称: 字符串操作实验 课程名称: CPU 与汇编实验 实验时间: 任课教师: 实验地点: 实验教师: 实验类型: □ 原理验证 ■ 综合设计 □ 自主创新 学生姓名: 学号/班级: 组 号: 无 学 院: 信息与电子 同组搭档: 无 专 业: 信息工程 成 绩:

一、实验要求和目的 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。 REPNE/REPNZ 判断计数寄存器的内容是否为0或ZF=1(即比较的两个操作数相等),只要满足一个则重复执行结束,否则继续执行。可以与REPE/REPZ 配合工作的串指令有 CMPS 和SCAS。 3、字符串处理基本指令 (1)MOVS 传送指令 格式:MOVS DST,SRC或 MOVSB(传送字节)或 MOVSW(传送字)。后面两种形式需要与 REP 指令结合使用。该指令把由源变址寄存器(SRC)指向的数据段中的一个字(或字节)数据传送到由目的变址寄存器(DST)指向的附加段中的一个字(或字节)中去,同时,根据方向标志及数据格式(字或字节)对源变址寄存器和目的变址寄存器进行修改。 (2)STOS 存入串指令 格式:STOS DST 或 STOSB(存入字节)或 STOSW(存入字)。 该指令把 AL 或 AX 的内容存入由目的变址寄存器指向的附加段的某单元中,并根据方向标志(DF)和数据类型修改目的变址寄存器的内容。

实验三 字符串操作

一、实验要求和目的 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传送指令 格式:MOVS DST,SRC或MOVSB(传送字节)或MOVSW(传送字)。后面两种形式需要与REP指令结合使用。该指令把由源变址寄存器(SRC)指向的数据段中的一个字(或字节)数据传送到由目的变址寄存器(DST)指向的附加段中的一个字(或字节)中去,同时,根据方向标志及数据格式(字或字节)对源变址寄存器和目的变址寄存器进行修改。 (2)STOS存入串指令 格式:STOS DST或STOSB(存入字节)或STOSW(存入字)。 该指令把AL或AX的内容存入由目的变址寄存器指向的附加段的某单元中,并根据方向标志(DF)和数据类型修改目的变址寄存器的内容。 (3)LODS从串取指令

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

实验三串基本操作的编程实现 【实验目的】 容:串基本操作的编程实现 要求: 串基本操作的编程实现(2学时,验证型),掌握串的建立、遍历、插入、删除等基本操作的编程实现,也可以进一步编程实现查找、合并、剪裁等操作,存储结构可以在顺序结构或结构、索引结构中任选,也可以全部实现。也鼓励学生利用基本操作进行一些应用的程序设计。 【实验性质】 验证性实验(学时数:2H) 【实验容】 字符串用常规的顺序存储法来存储,实现常用的功能。 自己编程模式:开发一个程序,用来统计文件中各种信息,如字符个数,行数等。 修改程序模式:将下面程序空白的地方填空。 程序检查模式:将本文件夹中的程序运行后总结相关功能。 【思考问题】 1.字符串的顺序存储和链表存储的差异?C语言中是如何实现字符串的? 2.在字符串处理方面主要有什么操作? 3.字符串的操作的主要特点是什么? 4.举出几个字符串的应用例? 【参考代码】 //功能:顺序串的基本基本功能 #include #include #include #include #define maxsize 30//顺序串的总空间大小 enum returninfo{success,fail,overflow,underflow,range_error,empty};//定义返回信息清单 class string { public: string();//构造函数 ~string();//析构函数 returninfo strcreate(); //创建串 returninfo strinsert(int position,char newstr[],int str_length); //插入 returninfo strdelete(int beginposition,int endposition); //删除 returninfo strmodify(int beginposition,int endposition,char newstr[]); //修改 int strsearch(char newstr[]); //查找

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

字符及字符串输入输出与顺序程序设计实验 从键盘输入两个一位十进制数,计算这两个数之和,并将结果在屏幕上显示出来。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 (3)非压缩型BCD数加法调整指令的使用 设从键盘输入的数值已存放在寄存器AL, BL中,可用下列程序完成数据相加和调整操作: XOR AH,AH ADD AL, BL AAA ;执行该指令后,AH中为和的十位上的数字,AL中为个位上的数字

面向对象实验三 重载

面向对象实验三重载 一、实验目的在C语言中,每个函数都必须有其唯一的名字。对于不同类型上作不同运算而又用同样名字的情况,则称之为重载。重载分为对函数重载和对运算符重载。对重载函数必须至少在参数个数、参数类型或参数顺序上有所不同。运算符重载不改变运算顺序和优先级。有五个 运算符不能重载,它们是. :: * ?: # 。也不能创造新运算符。C++规定,运算符中,参数说明都是内部类型时,不能重载。通过重载类的成员函数来掌握面向对象程序设计中的编译时多态性。 二、实验内容 建立一个字符串类,使用Visual C++ 6.0 为该类添加进行比较的运算符成员函数或友 元函数。 三、实验要求 1 .建立一个字符串类,在字符串类中定义一个有参数构造函数的和一个不带参数的 构造函数; 2 .编写对字符串进行比较、运算(<,>,==,+=,=等)的成员函数或友元函数(通过重载运算符实现)。 3.编制主程序,将重载运算符运用于实际的字符串比较、运算中。 实验代码: //String.h #ifndef STRING_H_ #define STRING_H_ #include class String { private: char *name; public: String(){ name = new char[1]; name[0] = '\0'; }

String(const char *n); bool operator<(String &os); bool operator>(String &os); bool operator==(String &os); String &operator+=(String &os); String &operator=(String &os); friendstd::ostream&operator<<(std::ostream&os,const String &g); }; #endif //string.cpp #include"String.h" String &String::operator+=(String &os) { int len1 = 0; int len2 = 0; len1 = strlen(name); len2 = strlen(https://www.360docs.net/doc/067667006.html,); strcat(name,https://www.360docs.net/doc/067667006.html,); name[len1 + len2 + 1] = '\0'; return *this; } bool String::operator<(String &os) { if (strcmp(name, https://www.360docs.net/doc/067667006.html,) <0) return true; else return false; } String &String::operator=(String &os) { intlen=0; len = strlen(https://www.360docs.net/doc/067667006.html,); name = new char[len + 1]; strcpy(name,https://www.360docs.net/doc/067667006.html,); name[len+1]='\0'; return *this; } bool String::operator==(String &os)

实验六 字符串类

实验六字符串类 专业班级学号姓名 实验学时 2 实验类型验证性实验地点 实验时间指导老师 实验成绩 年月日一、实验目的: 理解字符串类的作用,理解String类与StringBuffer类的区别与各自的运用范围。掌握 String类与StringBuffer类中的常用方法。 二、实验内容: 编写程序,输入两个字符串,完成以下几个功能: (1)求出两个字符串的长度。 (2)检测第一个字符串是否为第二个字符串的子串。 (3)把第一个串转换为byte类型并输出。 三、实验要求: 1.完成程序的编写工作。 2.写出实验报告。 四、实验步骤与结果:(由学生按照实验内容完成) Apackage zxl; import java.util.Arrays; public class ZXL { public static void main (String args[]) { String s1 = "java Application"; String s2 = "zxl"; int len = s1.length(); int len2 = s2.length(); System.out.println("s1的长度为"+len); System.out.println("s2的长度为"+len2); byte m[] = s1.getBytes(); byte n[] = s2.getBytes(); System.out.println(Arrays.toString(m)); System.out.println(Arrays.toString(n)); if(s1.indexOf(s2) != -1) { System.out.println(s2 + "是" + s1 + "的字串"); } else { System.out.println(s2 + "不是" + s1 + "的字串"); } } }

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

字符及字符串输入输出与顺序程序设计实验 实验报告 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为在数据段中定义的要显示的字符串

实验三.数组与字符串

1.实验三数组与字符串 一、实验目的: 1.熟悉Java的数组的使用,编程练习数组声明、定义、遍历和排 序等操作。 2.熟悉Java的字符串相关类的使用,通过编程实现针对字符串的 一般操作。 二、实验内容: 1.定义一个有10个元素的整型数组,找出最大最小值; 2.定义一个有10个元素的整型数组,用选择法实现由小到大排序; 3.定义一个能实现冒泡法排序的方法bSort(int[] arr),然后定义并 初始化一4*5的二维数组,用bSort(int[] arr)将该二维数组的每 行元素进行升序排序; 4.编程求解一个3*3矩阵每一行的元素之和,每一列元素之和,对 角线元素之和,并输出。 5.接收键盘输入的字符串,使用String类的方法indexOf()来统 计该字符串中各个字符出现的次数。 6.设定并初始化一个字符串数组,并将数组中那些以字母b开头的 元素打印出来。 7.接收键盘输入的字符串,分别按顺序输出该字符串中的大写字符 和小写字符。 8.接收键盘输入的英文字符串(单词之间用空格隔开),将字符串 中出现的单词首字母改成大写后输出。 三、实验要求: 1.通过实验掌握数组的定义和初始化; 2.掌握数组最值求解算法; 3.掌握数组的基本排序算法; 4.掌握遍历数组的算法; 5.通过实验掌握String类的使用; 6.通过实验掌握String类常用方法的使用;

7.从JDK文档中查阅String类的以下方法(与本实验内容相关): split(),startWith(),toUpperCase(),indexOf(),charAt(),并说明 它们的用法; 8.写出实验报告。 四、实验学时:3学时 五、实验步骤: 1.进入Java编程环境; 2.新建一个Java文件,编写main()方法实现一维数组求最值的算 法; 3.新建一个Java文件,编写main()方法实现一维数组选择法排序 算法; 4.新建一个Java类,定义bSort(int[] arr)方法(冒泡法)实现数组 升序排序,然后在main方法里实现对一4*5二维数组每行元素 的升序排序; 5.新建一个Java文件,编写main()方法声明并初始化一两维3*3 数组,设计算法实现行、列和对角线元素的求和操作; 6.编写主方法main(),其中实现接收键盘输入功能、文件操作功能 和文件内容输出功能; 7.调用相应构造方法创建String对象; 8.查阅JDK文档,找出可以实现实验内容的String方法,设计算 法,编写程序; 9.调试运行程序,观察输出结果。

第七次实验:字符串的处理

第七次实验:字符串的处理一、实验目的 了解Java语言中字符串的操作和处理。 二、实验要求 1.掌握String类的特点及常用方法的使用 2.掌握StringBuffer类的特点及常用方法的使用 三、实验内容 (一)String类中常用方法的使用。 请将如下代码补充完整。 模板代码 StringExample.java class StringExample { public static void main(String args[]) { String s1=new String("you are a student"); String s2=new String("how are you"); if(【代码1】) // 使用equals方法判断s1与s2是否相同 { System.out.println("s1与s2相同"); } else { System.out.println("s1与s2不相同"); } String s3=new String("22030219851022024"); if(【代码2】) //判断s3的前缀是否是“220302”。 { System.out.println("吉林省的身份证"); } int position=0; String path="c:\\java\\jsp\\A.java"; position=【代码3】//获取path中最后出现目录分隔符号\\ 的位置

System.out.println("c:\\java\\jsp\\A.java中最后出现\\的位置:"+position); String fileName=【代码4】//获取path中“A.java”这个子字符串。 System.out.println("c:\\java\\jsp\\A.java中含有的文件名:"+fileName); String s6=new String("100"); String s7=new String("123.678"); int n1= Integer.parseInt(s6); //将s6转化成int型数据。 double n2= Double.parseDouble(s7); //将s7转化成double型数据。 double m=n1+n2; System.out.println(m); String s8=【代码5】//调用String类的valueOf( )方法将m转化为字符串对象 position=s8.indexOf("."); String temp=s8.substring(position+1); System.out.println("数字"+m+"有"+temp.length()+"位小数") ; String s9=new String("ABCDEF"); char a[]=【代码6】//将s8存放到数组a中。 for(int i=a.length-1; i>=0; i--) { System.out.print(" "+a[i]); } } } 源代码: public class StringExample { public static void main(String args[]) { String s1=new String("you are a student"); String s2=new String("how are you"); if(s1.equals(s2)) // 使用equals方法判断s1与s2是否相同 { System.out.println("s1与s2相同"); }

相关文档
最新文档