实验9 字符串和数组

合集下载

字符数组实验报告分析

字符数组实验报告分析

一、实验背景字符数组是C语言中常用的数据结构,它由一组字符元素组成,用于存储字符串。

通过对字符数组的操作,可以实现对字符串的读取、修改、排序等操作。

本次实验旨在通过一系列的字符数组操作,加深对C语言字符数组处理的理解和应用。

二、实验目的1. 理解字符数组的定义和初始化方法;2. 掌握字符数组的读取和修改操作;3. 熟悉字符串的输入、输出和拼接;4. 学习字符串的查找和替换;5. 掌握字符数组的排序方法。

三、实验内容1. 字符数组的定义和初始化实验步骤:(1)定义一个字符数组;(2)使用字符数组存储字符串;(3)初始化字符数组。

2. 字符数组的读取和修改实验步骤:(1)通过指针访问字符数组的元素;(2)修改字符数组中的指定元素;(3)遍历字符数组,读取所有元素。

3. 字符串的输入、输出和拼接实验步骤:(1)使用scanf和printf函数实现字符串的输入和输出;(2)使用strcpy函数复制字符串;(3)使用strcat函数拼接字符串。

4. 字符串的查找和替换实验步骤:(1)使用strstr函数查找子字符串;(2)使用strcpy函数替换字符串中的指定子串;(3)使用str_replace函数实现字符串的替换。

5. 字符数组的排序实验步骤:(1)使用冒泡排序算法对字符数组进行排序;(2)使用选择排序算法对字符数组进行排序;(3)使用插入排序算法对字符数组进行排序。

四、实验结果与分析1. 字符数组的定义和初始化实验结果显示,字符数组可以正确存储字符串,并且可以对其进行初始化。

2. 字符数组的读取和修改通过指针访问字符数组的元素,可以实现对字符数组的读取和修改。

遍历字符数组,可以读取所有元素。

3. 字符串的输入、输出和拼接使用scanf和printf函数可以实现字符串的输入和输出。

strcpy和strcat函数可以实现字符串的复制和拼接。

4. 字符串的查找和替换使用strstr函数可以查找子字符串,使用strcpy函数可以替换字符串中的指定子串。

实验总结报告-串和数组

实验总结报告-串和数组

实验总结报告—栈和队列学号:姓名:时间:一、目的1.做实验的目的2.2.撰写实验报告的目的二、内容1.说明实验次数及实验内容本次实验用一个实验课时完成。

实验内容:1. 编写函数StrAssign(), StrCopy() , StrLenth() , StrCompare() , StrConcat() ,Substring(), Replace(),完成串赋值,串复制,求串长度,串比较,串连接,求字串,子串替代等相应功能。

注:Replace() 依赖Find_KMP()2. 使用KMP 算法,编写函数Find_KMP(char *S,char *P,int start)实现字符串匹配。

测试数据:2.1char S[] = “abcabcabcd”;char P[] = “abcabcd”;2.2char S[] = “abcdababcabcdabcabcabcd”;char P[] = “abcabcd”;2.3char S[] = “cocaocoaoc”;char P[] = “coaoc”;要求: 1.打印出模式串P 的next[]模式数组;2.完成Find_KMP()后在Repalce()中调用,将P 替换成“AAA”。

注意2.2 有2 个地方要替换。

3. 创建三元组实现以下稀疏矩阵的存储,并利用三元组实现稀疏矩阵的转置,比较“按需查找”方法与“按位就座”方法的区别。

0 12 9 0 0 0 00 0 0 0 0 0 03 0 0 0 0 14 00 0 24 0 0 0 00 18 0 0 0 0 015 0 0 7 0 0 0建议实现流程为1.矩阵2.三元组3.转置的三元组4.转置的矩阵,将3 或4打印出来。

2.做实验完成情况实验内容在实验课时时间内完成(提前编写了大概1/2部分的代码),选做内容也完成。

本次实验内容较多,为使代码看着简洁有条理,采用了建工程的方式。

串部分:自定义了头文件String.h:/*自定义头文件*/#include<stdio.h>#define MAX_LEN 255typedef unsigned char SString[MAX_LEN + 1];/*自定义函数*/void StrAssign(SString &T, char s[]);//将字符串常量s赋给Tvoid StrPrint(SString T);//打印串void StrCopy(SString &T, SString S);//串复制void test();//检验串操作int StrLength(SString T);//求串长int StrCompare(SString T, SString S);//比较串,T>S返回正值,T<S返回负值,相等返回0void StrConcat(SString &T, SString S1, SString S2);//用T返回SString 类型串S1、S2连接成的新串void SubString(SString &S, SString T, int pos, int len);//用S返回串T中起始位置为pos,长度为len的字串void Index(SString S, SString T, int pos[]);//若S串中存在不重叠的子串T,则用pos[]返回所有T串的起始位置void StrReplace(SString &S, SString T, SString V);//若串S中存在字串T,则用V替代所有不重叠的Tvoid StrInsert(SString &S, int pos, SString T);//在串S中pos位置插入子串Tvoid StrDelete(SString &S, int pos, int len);//在串S中pos位置删除长度为len的子串void GetNext(SString S, int next[]);//求模式串中的next函数修正值并写入数组next[]int FindKMP(SString S, SString T, int start);//在串S中从start位置开始,查找第一次出现模式T的位置返回,没找到返回-1void StrReplace2(SString &S, SString T, SString V);//若串S中存在字串T,则用V替代所有不重叠的Tvoid KMP();//KMP算法及其应用在头文件中对所有要用到的自定义函数进行了声明,各函数的功能可见代码注释部分。

安徽建筑大学C实验内容答案

安徽建筑大学C实验内容答案

《程序设计基础—C程序实验》说明:实验1和实验2均为电子实验报告,后面8个实验是纸制实验报告。

电子实验报告:按照每次的实验内容完成一个文件,然后上传到文件服务器上张燕的文件夹里面。

纸制实验报告要求:1.准备一个能写八次实验内容的实验报告;2.实验报告书写格式:标号,题目,程序,输入,输出(注意输入输出的格式)。

3.独立完成实验,请勿抄袭!实验1 计算机基本操作实验目的⑴熟悉计算机,能够正确进行开、关机操作。

⑵熟悉键盘,掌握键盘上所有字符的输入,掌握正确的指法,能够进行中、英文切换。

⑶理解操作系统概念,掌握Windows XP的基本操作,能够利用“控制面板”进行一些参数的设置。

⑷知道“回收站”的功能,学会有关文件、文件夹的基本操作。

⑸学会在计算机上搜索或查找相关的文件或文件夹,掌握通配符的使用。

实验内容⑴在桌面上新建一个文件夹,该文件夹以学生自己的学号和姓名命名,如:123342134张燕。

将此文件夹上传到ftp://10.10.9.222上张燕的文件夹中。

⑵在桌面上新建一个以1.doc命名的word文件。

⑶利用“控制面板”修改系统时间、桌面背景、鼠标属性,将具体的操作步骤写在1.doc文件中。

⑷打开一级模拟题,输入准考证号码(11111100105,最后两位可以是01到30的任意数),进入打字题,把打字题目做完,并将打字的内容复制到1.doc文件中,并保存。

最后点击交卷,将打字题的得分记录截屏后复制粘贴到1.doc文件中。

⑸在1.doc文件中输入以下内容,并保存。

注意:输入时,标点符号和字符要正确;汉字与汉字之间的相对位置要保持一致。

⑹将你正在使用的电脑的IP地址和DNS记录在1.doc中。

(7) 将下列转换结果写在1.doc中●(101101)2=()10=()8=()16●(123.125)10=()2==()8=()16● (37) 8=()16●(11001)2、(28)10、(32)8、(2A)16将这四个数按照从大到小排序:(8) 将1.doc文件上传到ftp://10.10.9.222上自己的文件夹中。

四《C语言程序设计》实验四选择结构程序设计实验目的1、掌握分支

四《C语言程序设计》实验四选择结构程序设计实验目的1、掌握分支

四《C语言程序设计》实验四选择结构程序设计一、实验目的1、掌握分支语句的格式和功能。

2、掌握选择结构的程序设计。

3、掌握分支结构的嵌套。

二、实验内容与要求1、编程,计算下列分段函数值:x2+3x-4,x<0且x≠-4f(x)= x2-6x+5,0=x<10且x≠1及x≠5x2-4x-1,其他要求如下:(1)用if语句实现分支。

自变量x与函数值均采用双精度类型。

(2)自变量x值从键盘输入,且输入前要有提示信息。

(3)数据的输出格式采用以下形式:x=输入值,f(x)=计算值(4)分别以-3.0,-1.0,0.5,1.5,2.5,3.5,4.5,5.5为自变量,运行该程序。

记录结果。

(5)源程序以sy4_1.c存盘。

2、编程,将一个百分制成绩转换成等级制成绩。

具体要求如下:(1)百分制与等级制的对应关系如下:(3)用键盘输入百分制成绩,输入前要有提示信息。

(4)要能判断输入数据的合理性,对于不合理的数据应输出错误信息。

(5)输出结果中应包含百分制成绩和成绩等级。

(6)分别输入成绩-10,99,60,85,70,101,45,运行该程序。

记录结果。

(7)源程序以sy4_2.c存盘。

三、思考题1、实现选择结构程序设计的方法有哪几种?各有什么特点?适用条件是什么?2、如何设置选择结构中的判断条件?它在程序设计中的意义何在?实验五循环结构程序设计(1)一、实验目的1、掌握循环的概念。

2、掌握三种常用的循环语句的格式和功能。

3、初步掌握循环结构的编程方法。

二、实验内容与要求1、编程,分别利用三种循环语句,求1+2+3+…50之和。

要求如下:(1)输出计算结果;数据的输出格式采用以下形式:1+2+3+…50=计算值(2)源程序分别以sy5_1.c、sy5_2.c、sy5_3.c存盘。

2、编程,穷举算法解百马百担问题(有100匹马驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大、中、小马各多少?)要求如下:(1)输出计算结果;在数据输出之前应有提示信息。

程序设计基础实验

程序设计基础实验

实验5 C程序调用中的指针参数
分析程序并改正。 设计一个C程序,用以测试各表达式的运算。 想使指针变量pt1指向a和b中的大者,pt2指 向小者,以下程序能否实现此目的?如不 能实现目标,找出原因并修改之。
实验6 数组在C程序中的使用
编写程序,测试数组的定义方式是否正确。 运行C程序,根据运行结果,可以说明什么?。 操作符&用以求一个变量的地址,这在函数 scanf中已经使用过了。现在要你设计一个 程序,返回一个3 * 5 的二维数组各元素的 地址,并由此说明二维数组中各元素是按什 么顺序存储的(用二维数组和二维数组指 针两种方法实现)。
实验4 C程序函数调用
编写一个程序,给学生出一道加法运算题, 然后判断学生输入的答案对错与否,按下 列要求以循序渐进的方式编程。要求用Add 函数来进行两个整数的加法运算;用Print 函数判断正确与否;用main函数输入两个 相加的数和学生做的结果,然后判断该学 生输入的答案对错与否。
实验4 C程序函数调用
实验6 数组在C程序中的使用
已知一个数组a大小为20个元素,用随机函 数生成20个不同的2位整数填充该数组,再 将该数组元素从小到大排序。现要求任意 输入一个2位整数,要求将该数插入数组中 合适的位置,使得这个数组中的21个元素 仍然按照从小到大的顺序排列,并将数组 按下标顺序输出。
实验6 数组在C程序中的使用
(选做题)通过计算机随机产生10道四则 运算题,两个操作数为1~10之间的随机数, 运算类型为随机产生的加、减、乘、整除 中的任意一种,如果输入答案正确,则显 示“Right!”,否则显示“Not correct!”, 不给机会重做,10道题做完后,按每题10 分统计总得分,然后打印出总分和做错题 数。

计算机仿真实验9次

计算机仿真实验9次

实验一 MATLAB基础实验目的:1、熟悉MATLAB的操作环境;2、掌握MATLAB的基本运算指令。

实验内容:MATLAB的启动和退出方法,各菜单项的功能;MA TLAB的部分基本运算指令。

实验题目:1、自拟题目验证矩阵的生成、运算、翻转指令。

2、求解线性方程组AX=B。

1 1.52 9 7 30 3.6 0.5 -4 4 -4其中A= 7 10 -3 22 33 ,B= 203 7 8.5 21 6 53 8 0 90 -20 163、求方程 x^4+7x^3 +9x-20=0的全部根。

实验二 MATLAB程序设计实验目的:掌握MA TLAB的编程方法,命令窗口的数据输入和数据输出方法,控制程序流程的常用指令及其结构,以及函数文件的调用。

实验内容:1 M文件编辑器界面如下:要求:1)简单程序的编写与运行。

(自己找实例:程序M文件与函数M文件)2)熟练掌握各种程序控制语句。

循环语句:for循环,while循环条件语句:if else elseif分支语句:switchcontinue和break语句3)通过实际程序编制及执行,深入理解程序M文件与函数M文件的区别。

2 MA TLAB程序的编写。

input函数:用于向计算机输入一个参数。

pause函数:暂停程序的执行。

disp函数:命令窗口输出函数。

实验题目:1.求1~100的和。

2.求n的阶乘。

3.输入20个数,求其中最大数和最小数。

要求用循环结构输入数据,然后调用MA TLAB的max函数、min函数来实现。

(strcat是实现字符串串联的命令)4. Fibonacci数列(1.1.2.3.5.8.13…),就是数列中从第三项开始,任意一个数都是它前两数之和的数列。

要求:编制程序,使得运行程序后,输入大于2的数n就可以输出Fibonacci数列的前n项。

实验三MATLAB的绘图功能实验目的:掌握Matlab的图形处理功能,学会使用二维、三维图形绘制函数。

实验六 字符数组与数组的综合应用

实验六字符数组与数组的综合应用一、实验目的1.掌握字符数组和字符串函数的使用。

2.使用数组进行复杂程序的编写。

二、实验要求1.复习字符数组的定义、输入输出和常用的字符串函数。

2.在实验题目空白处编写源程序代码。

3.运行程序并记录运行结果。

4.总结实验过程中的错误和心得体会,写出实验总结。

5.对本次实验进行自评,在“实验得分”部分对每个实验题目的完成情况打分。

三、实验内容1. 下面程序的功能是对两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。

例如:输入的两个字符串分别为"abcdefg"和"abceef",则输出为-1。

#include <stdio.h>main(){ char str1[100],str2[100],c;int i,s;printf("Enter string 1: "); gets(str1);printf("Enter string 2: "); gets(str2);i=0;while((str1[i] = = str2[i] && str1[i]!= ))i++;s= ;printf("%d\n", s);}2. 编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中。

不用strcpy函数。

复制时’\0’也要复制过去,’\0’后面的字符不复制。

程序代码:#include <stdio.h>main(){ char s1[80],s2[80];int i;printf("Input s2:");scanf("%s",s2);for(i=0;i<strlen(s2);i++)s1[i]=s2[i];printf("s1:%s\n",s1);}3. 输入若干个字符串(最多10个),求出每个字符串的长度,并打印最长字符串的内容。

字符数组的实验报告

一、实验目的1. 熟悉字符数组的基本概念和操作。

2. 掌握字符数组的初始化、赋值和访问方法。

3. 学会使用字符数组进行字符串的输入、输出和比较操作。

4. 了解字符数组在编程中的应用场景。

二、实验环境1. 操作系统:Windows 102. 编程语言:C3. 开发环境:Visual Studio 2019三、实验内容1. 字符数组的初始化和赋值2. 字符数组的访问3. 字符串的输入、输出和比较4. 字符数组的应用四、实验步骤1. 字符数组的初始化和赋值(1)创建一个字符数组,并使用初始化列表为其赋值。

```cchar str1[] = "Hello, world!";```(2)使用字符数组存储一个字符串,并使用赋值运算符为其赋值。

```cchar str2[50];strcpy(str2, "I love programming.");```2. 字符数组的访问(1)使用下标访问字符数组中的元素。

```cchar str3[10] = "ABCDEF";printf("%c\n", str3[0]); // 输出 A```(2)使用指针访问字符数组中的元素。

```cchar str4[] = "Hello, world!";char ptr = str4;printf("%c\n", ptr); // 输出 H```3. 字符串的输入、输出和比较(1)使用 scanf 函数从键盘输入一个字符串。

```cchar str5[50];printf("Please enter a string: ");scanf("%49s", str5);```(2)使用 printf 函数输出一个字符串。

```cchar str6[] = "Hello, world!";printf("%s\n", str6);```(3)使用 strcmp 函数比较两个字符串。

《程序设计基础Ⅱ》课程教学大纲

《程序设计基础Ⅱ》课程教学大纲一、课程与任课教师基本信息二、课程简介《程序设计基础》是为软件工程专业开设的第一门程序设计课程。

本课程以C语言为载体,介绍程序设计语言的基本概念、结构化程序设计的一般方法以及算法的概念及其表示方式,C语言的基本数据类型及其运算、三种基本程序控制结构、编译预处理、数组、函数的嵌套调用与递归调用、结构体与共用体、指针及其应用、文件及其操作等,为后续其它程序设计语言与工具、学科基础课程、专业课程学习提供程序设计的基础。

三、课程目标结合专业培养目标,提出本课程要达到的目标。

这些目标包括:1.知识与技能目标通过本课程的学习,理解算法的概念与表示方式,掌握用程序框图或N-S 图对问题解决的算法思想的描述和表达。

掌握C语言的基本数据类型及其运算、三种基本程序控制结构、编译预处理、数组、函数的嵌套调用与递归调用、结构体与共用体、指针及其应用、文件及其操作。

通过学习和实践,逐步掌握程序设计的基本思想和方法,培养问题求解和语言的应用能力。

为后续课程打好基础。

2.过程与方法目标在本课程的学习过程中,学生将学习结构化程序设计的基本思想、方法。

通过大量的编程实践,使学生初步具备对现实世界问题进行抽象思维和分析,对解决问题的算法思想进行描述和表达的能力。

理解程序错误的主要方面与原因,掌握程序调试与排除错误的基本方法,培养良好的程序设计和调试能力。

3.情感、态度与价值观发展目标通过本课程的学习,使学生了解学习与运用、学习与能力的辩证关系。

培养学生独立思考、合理分配和利用时间、不断总结、提高学习效率的良好学习方法。

坚持不懈、勤于思考、严谨治学的科学态度,为未来的学习、工作奠定良好基础。

四、与前后课程的联系本课程是软件工程专业开设的第一门程序设计课程。

本课程讲授的内容在后续的专业基础课程和专业课程,如:算法与数据结构、操作系统、以及其它后续程序设计语言与工具课程中都有具体体现,是学习好上述后续课程重要基础。

人工智能九宫格重移——搜索的实验报告

人工智能九宫格重移——搜索1.问题描述:八数码问题也称为九宫问题。

在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的某一数字,不同棋子上标的数字不相同。

棋盘上还有一个空格,与空格相邻的棋子可以移到空格中。

要求解决的问题是:给出一个初始状态和一个目标状态,找出一种从初始转变成目标状态的移动棋子步数最少的移动步骤。

所谓问题的一个状态就是棋子在棋盘上的一种摆法。

棋子移动后,状态就会发生改变。

解八数码问题实际上就是找出从初始状态到达目标状态所经过的一系列中间过渡状态。

2.九宫重移有无答案检查(逆序数)我们把每个9宫格横向展开,如第一个123456789,我们把左边数大于右边数的组数称为这个九宫格的逆序数,显然123456789的逆序数为0;考虑横向平移,那么逆序数的增量为2或0或-2;纵向平移,逆序数的增量为4或0或-4;但147258369的逆序数为奇数。

所以147258369是无解的情况。

由此也可以类推当将9宫格展开后,如果数据序列的逆序数为奇数,则此数据序列对应的九宫格是无解的。

3.BFS算法队列: Queue open = new Queue();存放待扩展的节点List: List<Bfstr> closed = new List<Bfstr>();存放已被扩展过的节点ArrayList map = new ArrayList();//存放答案HashTale: Hashtable table = new Hashtable();构造哈希表以方便查找3.1.BFS算法介绍广度优先搜索算法BFS基本思想:从图中某顶点v出发,逐层对节点进行拓展,并考察是否为目标节点,在第n层节点没有全部扩展并考察前,不对第n+1层节点进行扩展。

对九宫重排问题,即构造广度优先搜索树,从初始状态,利用广度优先搜索算法逐步找到目标状态的节点。

3.2.状态空间表示状态空间用一维数组表示,每个节点存放在Bfstr结构体中的字符now中,从第一行开始从左往右给九宫格标号0……8,字符串now元素下标代表格子位置,而now数组中对应数组的值代表九宫格中存放的数码,用数值9代表空格。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验9 字符串和数组
3.1实验目的
1.理解并掌握String类、StringBuffer类;
2.掌握字符串与其他数据类型的转换;
3.掌握Java Application命令行参数的使用;
4.熟练掌握一维数组和二维数组的使用;
5.把课堂上学到的理论用于实践,并验证理论的正确性,和发现新的问题。

3.2实验内容
1.利用下面的关键代码编写一个完整的程序,理解String类的使用。

String s=new String("This is an demo of the String method.");
//String s="This is an demo of the String method.";
System.out.println("Length: "+s.length());
System.out.println("SubString: "+s.substring(11,15));
代码如下:
public class Test1 {
public static void main(String[]args){
String s=new String("This is an ddemo of the String method.");
System.out.println("length:"+s.length());
System.out.println("SubString:"+s.substring(11,15));
}
}
2.利用下面的关键代码编写一个完整的程序,理解StringBuffer类的使用。

StringBuffer sb=new StringBuffer("Hello World!");
sb.append(" Hello Java!");
sb.insert(12," And");
System.out.println(sb);
System.out.println(sb.charAt(0));
sb.setCharAt(0,''h'');
System.out.println(sb.charAt(0));
System.out.println(sb);
代码如下:
public class Test2 {
public static void main(String[]args){
StringBuffer sb=new StringBuffer("Hello World!");
sb.append("Hello Java!");
sb.insert(12,"And ");
System.out.println(sb);
System.out.println(sb.charAt(0));
sb.setCharAt(0,'h');
System.out.println(sb.charAt(0));
System.out.println(sb);
}
}
3.编写程序,读入6个整数,要求存放在数组中,求出最大数并计算它出现的次数。

代码如下:
public class Tools {
public static double max(double[]nums){
double max = nums[0];
for(double n : nums){
if(n>max){ max = n;}
}
return max;
}
public static double num(double[]nums){
int num=0;
for(double n : nums){
if(n==Tools.max(nums)){ num++;}
}
return num;
}
}
import java.util.*;
public class Test3 {
public static void main(String[]args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入逗号分隔的多个字符:");
String row=sc.nextLine();
sc.close();
String[]strs=row.split(",|,");
double[]nums = new double[strs.length];
for(int i=0;i<strs.length;i++){
nums[i]=Double.parseDouble(strs[i]);
}
System.out.println("最大值:"+Tools.max(nums));
System.out.println("最大值出现的个数:"+Tools.num(nums));
}
}
4.编写程序,找出一个二维数组的鞍点,即该位置上的元素在该行上最大、在列上最小(也
可能没有鞍点)。

5.使用Java Aplication的命令行参数读入两个数据,计算它们的和,然后将和输出。


果参数的数目不足,显示相应提示信息并退出程序的执行。

3.3分析与提示
1. 略。

2. 略。

3. 定义一个变量max存放最大的数,再定义另一变量num存放该最大数出现的次数。

先用
一个循环语句找出数组中的最大数max,再用一个循环语句算该数出现了几次。

4. 编写程序,从命令行读入的参数都存放在args数组里。

因为该数组里存放的类型是String
类型,所以在做运算之前还需数据进行类型转换,编译该Java文件,生成字节码文件。

最后打开命令提示符,执行d:\user>java Test3_3 5 10 (假设该字节码文件存放在d:\user目录下)运行结果为:两数和为:15。

相关文档
最新文档