回文判断实验报告
数据结构回文实验报告

数据结构回文实验报告1. 实验目的本实验旨在通过使用数据结构中的栈和队列的知识,设计并实现一个回文判断程序,以检测给定的字符串是否为回文。
2. 实验原理回文是指正读和反读都相同的字符串。
在本实验中,我们将使用栈和队列来判断给定字符串是否为回文。
具体步骤如下:2.1 将字符串加入栈和队列将给定的字符串依次加入栈和队列中,保持顺序一致。
2.2 从栈和队列中弹出字符从栈和队列中分别弹出字符,并进行比较。
2.3 判断是否为回文如果所有字符都一一相等,那么该字符串就是回文。
否则,不是回文。
3. 实验步骤接下来,我们将按照上述原理,逐步进行回文判断的实验。
3.1 导入所需库由于本实验仅使用了基本的数据结构,无需导入额外的库或模块。
3.2 创建栈和队列首先,我们需要创建栈和队列的数据结构。
栈可以通过使用列表来实现,而队列则可以通过使用双端队列来实现。
# 创建栈stack = []# 创建队列from collections import dequequeue = deque()3.3 输入字符串接下来,我们需要从用户获取一个待判断的字符串。
# 获取待判断的字符串string = input("请输入待判断的字符串:")3.4 将字符串加入栈和队列将输入的字符串依次加入栈和队列中。
# 将字符串加入栈和队列for char in string:stack.append(char)queue.append(char)3.5 从栈和队列中弹出字符并比较从栈和队列中分别弹出字符,并进行比较,直到栈或队列为空。
is_palindrome =Truewhile len(stack) >0and len(queue) >0:stack_char = stack.pop()queue_char = queue.popleft()if stack_char != queue_char:is_palindrome =Falsebreak3.6 输出判断结果根据比较结果,输出判断字符串是否为回文。
Java实验报告(回文数-applet)

Java实验报告1.编程:编写一个applet,输入一个数,判断输入的这个数是否为回文数。
所谓回文数就是从左向右看和从右向左看都一样。
例如,121,13431都是回文数,而12345不是回文数。
分析步骤:step1:开始。
step2:从用户端输入一个数。
step3:判断它是否从左向右看和从右向左看都一样。
step4:若是,则为回文数;若否,则不是回文数step5:将step4结果显示在小窗口上。
step6:结束。
Code:packagetimu;importjava.applet.Applet;importjava.awt.*;public class NewApplet extends Applet {Label lab;TextField input;int x;public void init() {lab=new Label("输入一个数");input=new TextField(10);add(lab);add(input);}publicboolean action (Event e,Object o){x=Integer.parseInt(input.getText());int y=10,i=1;intnum=x,b=x;while(x/y>0){x=x/y;i++;} // end for 找出此数是几位数int store[]=new int[i];for(int j=0;j<i;j++){store[j]=num%10;num=num/10;} //将每位数储存到store数组中inttruetime=0;for(int n=0;n<(i+1)/2;n++){if(store[n]==store[i-1-n])truetime++;elsebreak;}if(truetime==(i+1)/2) //通过测试正确次数类比较是否是回文数showStatus("是回文数");elseshowStatus("不是回文数");return true;}// end action}显示结果:不是回文数的情况是回文数的情况2.编程:产生20个int类型的随机数,针对每个数使用if-then-else判断它是大于、小于或等于下一个数(注意:最后一个数不参与比较)。
数学实验报告 关于回文数产生数的检验

数学实验报告姓名:班级:学号:指导老师:1.实验题目:对于一个自然数,若将各位数字倒序排出,加到原来的数字上,反复这样多次后,若能得到一个从左到右读与从右到左读完全一样的数,则称该自然数能产生回文数或者对称数,例如:195就可以产生一个回文数9339,因为195+591=786786+687=14731473+3741=52145214+4125=9339通过编程计算,你能找出多少个能产生回文数的数,又能找出多少个不能产生回文数的数?二者的最小数是多少?注:由于每个自然数可以进行无穷次循环计算,因此不能判定一个自然数进行无穷次计算后一定能或不能产生回文数,所以本次实验中只判定在一万次的循环计算后能否产生回文数。
2.Matlab程序源代码:j=input('请输入测试数上限:')for m=0:1:jnum=m;fprintf('num:%d\n',m);n=0;for h=0:1:10000i=1;jilu=0;while (num/i)>=1;i=i*10;jilu=jilu+1;endi=10;xinshu=0;bianliang=num;while jilu>=1;a=mod(bianliang,i);bianliang=(bianliang-a)/10;xinshu=xinshu+a*10^(jilu-1);jilu=jilu-1;endnum=num+xinshu;i=1;jilu=0;while (num/i)>=1;i=i*10;jilu=jilu+1;endi=10;xinshu=0;bianliang=num;while jilu>=1;a=mod(bianliang,i);bianliang=(bianliang-a)/10;xinshu=xinshu+a*10^(jilu-1);jilu=jilu-1;endif xinshu-num==0n=1;fprintf('原自然数能产生回文数\n');break;endendif n==0;fprintf('原自然数在一万步运算内不能产生回文数\n'); endend3.程序运行结果:注:M文件的文件名为“zhuanhuan”>> zhuanhuan请输入测试数上限:200 j =200num:0原自然数能产生回文数num:1原自然数能产生回文数num:2原自然数能产生回文数num:3原自然数能产生回文数num:4原自然数能产生回文数num:5原自然数能产生回文数num:6原自然数能产生回文数num:7 原自然数能产生回文数num:8原自然数能产生回文数num:9原自然数能产生回文数num:10原自然数能产生回文数num:11原自然数能产生回文数num:12原自然数能产生回文数num:13原自然数能产生回文数num:14原自然数能产生回文数num:15原自然数能产生回文数num:16原自然数能产生回文数num:17原自然数能产生回文数num:18原自然数能产生回文数num:19原自然数能产生回文数num:20原自然数能产生回文数num:21原自然数能产生回文数num:22原自然数能产生回文数num:23原自然数能产生回文数num:24原自然数能产生回文数num:25原自然数能产生回文数num:26原自然数能产生回文数num:27原自然数能产生回文数num:28原自然数能产生回文数num:29num:30原自然数能产生回文数num:31原自然数能产生回文数num:32原自然数能产生回文数num:33原自然数能产生回文数num:34原自然数能产生回文数num:35原自然数能产生回文数num:36原自然数能产生回文数num:37原自然数能产生回文数num:38原自然数能产生回文数num:39原自然数能产生回文数num:40原自然数能产生回文数num:41原自然数能产生回文数num:42原自然数能产生回文数num:43原自然数能产生回文数num:44原自然数能产生回文数num:45原自然数能产生回文数num:46原自然数能产生回文数num:47原自然数能产生回文数num:48原自然数能产生回文数num:49原自然数能产生回文数num:50原自然数能产生回文数num:51 num:52原自然数能产生回文数num:53原自然数能产生回文数num:54原自然数能产生回文数num:55原自然数能产生回文数num:56原自然数能产生回文数num:57原自然数能产生回文数num:58原自然数能产生回文数num:59原自然数能产生回文数num:60原自然数能产生回文数num:61原自然数能产生回文数num:62原自然数能产生回文数num:63原自然数能产生回文数num:64原自然数能产生回文数num:65原自然数能产生回文数num:66原自然数能产生回文数num:67原自然数能产生回文数num:68原自然数能产生回文数num:69原自然数能产生回文数num:70原自然数能产生回文数num:71原自然数能产生回文数num:72原自然数能产生回文数num:73num:74原自然数能产生回文数num:75原自然数能产生回文数num:76原自然数能产生回文数num:77原自然数能产生回文数num:78原自然数能产生回文数num:79原自然数能产生回文数num:80原自然数能产生回文数num:81原自然数能产生回文数num:82原自然数能产生回文数num:83原自然数能产生回文数num:84原自然数能产生回文数num:85原自然数能产生回文数num:86原自然数能产生回文数num:87原自然数能产生回文数num:88原自然数能产生回文数num:89原自然数能产生回文数num:90原自然数能产生回文数num:91原自然数能产生回文数num:92原自然数能产生回文数num:93原自然数能产生回文数num:94原自然数能产生回文数num:95num:96原自然数能产生回文数num:97原自然数能产生回文数num:98原自然数能产生回文数num:99原自然数能产生回文数num:100原自然数能产生回文数num:101原自然数能产生回文数num:102原自然数能产生回文数num:103原自然数能产生回文数num:104原自然数能产生回文数num:105原自然数能产生回文数num:106原自然数能产生回文数num:107原自然数能产生回文数num:108原自然数能产生回文数num:109原自然数能产生回文数num:110原自然数能产生回文数num:111原自然数能产生回文数num:112原自然数能产生回文数num:113原自然数能产生回文数num:114原自然数能产生回文数num:115原自然数能产生回文数num:116原自然数能产生回文数num:117 num:118原自然数能产生回文数num:119原自然数能产生回文数num:120原自然数能产生回文数num:121原自然数能产生回文数num:122原自然数能产生回文数num:123原自然数能产生回文数num:124原自然数能产生回文数num:125原自然数能产生回文数num:126原自然数能产生回文数num:127原自然数能产生回文数num:128原自然数能产生回文数num:129原自然数能产生回文数num:130原自然数能产生回文数num:131原自然数能产生回文数num:132原自然数能产生回文数num:133原自然数能产生回文数num:134原自然数能产生回文数num:135原自然数能产生回文数num:136原自然数能产生回文数num:137原自然数能产生回文数num:138原自然数能产生回文数num:139num:140原自然数能产生回文数num:141原自然数能产生回文数num:142原自然数能产生回文数num:143原自然数能产生回文数num:144原自然数能产生回文数num:145原自然数能产生回文数num:146原自然数能产生回文数num:147原自然数能产生回文数num:148原自然数能产生回文数num:149原自然数能产生回文数num:150原自然数能产生回文数num:151原自然数能产生回文数num:152原自然数能产生回文数num:153原自然数能产生回文数num:154原自然数能产生回文数num:155原自然数能产生回文数num:156原自然数能产生回文数num:157原自然数能产生回文数num:158原自然数能产生回文数num:159原自然数能产生回文数num:160原自然数能产生回文数num:161原自然数能产生回文数num:162原自然数能产生回文数num:163原自然数能产生回文数num:164原自然数能产生回文数num:165原自然数能产生回文数num:166原自然数能产生回文数num:167原自然数能产生回文数num:168原自然数能产生回文数num:169原自然数能产生回文数num:170原自然数能产生回文数num:171原自然数能产生回文数num:172原自然数能产生回文数num:173原自然数能产生回文数num:174原自然数能产生回文数num:175原自然数能产生回文数num:176原自然数能产生回文数num:177原自然数能产生回文数num:178原自然数能产生回文数num:179原自然数能产生回文数num:180原自然数能产生回文数num:181原自然数能产生回文数num:182原自然数能产生回文数num:183原自然数能产生回文数num:184原自然数能产生回文数num:185原自然数能产生回文数num:186原自然数能产生回文数num:187原自然数能产生回文数num:188原自然数能产生回文数num:189原自然数能产生回文数num:190原自然数能产生回文数num:191原自然数能产生回文数num:192原自然数能产生回文数num:193原自然数能产生回文数num:194原自然数能产生回文数num:195原自然数能产生回文数num:196原自然数在一万步运算内不能产生回文数num:197原自然数能产生回文数num:198原自然数能产生回文数num:199原自然数能产生回文数num:200原自然数能产生回文数>>注:上述实验结果实际为一列现实,为使实验报告更加简洁,复制到word中后设置为分三栏显示。
判断字符串是否是回文字符串(JavaScript)

判断字符串是否是回文字符串(JavaScript)JavaScript是一种流行的编程语言,被广泛应用于Web开发和移动应用程序开发中。
在JavaScript中,判断一个字符串是否是回文字符串是一个常见的问题。
本文将介绍如何使用JavaScript编写代码来判断一个字符串是否是回文字符串,并对回文字符串的概念和应用进行深入探讨。
首先,让我们来了解一下什么是回文字符串。
回文字符串是指正着读和倒着读都一样的字符串。
比如"level"、"radar"、"deified"等都是回文字符串。
判断一个字符串是否是回文字符串的关键在于比较字符串的正序和逆序是否一致。
在JavaScript中,我们可以使用多种方法来判断一个字符串是否是回文字符串。
接下来我们将介绍两种常见的方法:使用循环和使用递归。
首先,我们来看看如何使用循环来判断一个字符串是否是回文字符串。
我们可以使用两个指针,一个指针指向字符串的开头,另一个指针指向字符串的末尾,逐个比较它们指向的字符是否相等。
```javascriptfunction isPalindrome(str) {let left = 0;let right = str.length - 1; while (left < right) {if (str[left] !== str[right]) { return false;}left++;right--;}return true;}//测试console.log(isPalindrome("level")); // trueconsole.log(isPalindrome("hello")); // false```上面的代码中,我们定义了一个isPalindrome函数来判断一个字符串是否是回文字符串。
在函数中,我们使用两个指针left和right 分别指向字符串的开头和末尾,并使用while循环来比较它们指向的字符是否相等。
太原理工大学程序设计技术实验报告

⑴设计函数:input(),输入 n 个无序的整数存储在一个数组中; ⑵设计函数:sort(),用起泡法对数组中的 n 各数据从大到小排序; ⑶设计函数:search(),用折半查找法在已排序的 n 个数种查找指定的数据,若存在, 返回其所处的位置,否则,将其插入适当位置使数据仍有序。 在主函数中调用上述函数,验证函数的功能。 6. 输入并运行第 6 章例 6-27 中的程序,根据输出结果总结局部静态变量的特点。
实验内容
1. 下载并安装 C,语言编译系统,设置编辑。
2. 输入并运行第 1 章例 1-1 和例 1-2 中程序,并记录遇到的问题和解决方法。
3. 输入并运行第 2 章例 2-2 和例 2-3 中程序,并记录遇到的问题和解决方法。
4. 求下面算术表达式的值(先自己分析,再试着用程序求解,比较得到的结果是否一致)。
课程名称:
本科实验报告
程序设计技术 B
实验地点:
明相校区软件学院机房 208
专业班级: 软件 1409 学号: 2014005763
学生姓名:
王璐
指导教师:
曹棣
实验名称
2014 年 12 月
实验一 C 语言的运行环境和运行过程
1
实验二 C 语言运算符和表达式
实验目的和要求
1. 学会安装 C 语言编译系统,如:Turbo C、Win-TC、Visual C++等; 2. 学会在上述某种编译系统中程序的编辑、编译、连接和运行; 3. 通过运行简单的 C 程序,初步了解 C 源程序的特点; 4. 理解 C 语言的数据类型,掌握各种常量的表示方法,变量的定义、初始化和赋值; 5. 学会使用 C 语言的算术运算符以及表达式的求值过程。
实验报告——栈和队列的应用

实验报告——栈和队列的应用第一篇:实验报告——栈和队列的应用实验5 栈和队列的应用目的和要求:(1)熟练栈和队列的基本操作;(2)能够利用栈与队列进行简单的应用。
一、题目题目1.利用顺序栈和队列,实现一个栈和一个队列,并利用其判断一个字符串是否是回文。
所谓回文,是指从前向后顺读和从后向前倒读都一样的字符串。
例如,a+b&b+a等等。
题目2.假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。
跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。
若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。
现要求写一算法模拟上述舞伴配对问题,并实现。
题目3.打印机提供的网络共享打印功能采用了缓冲池技术,队列就是实现这个缓冲技术的数据结构支持。
每台打印机具有一个队列(缓冲池),用户提交打印请求被写入到队列尾,当打印机空闲时,系统读取队列中第一个请求,打印并删除之。
请利用队列的先进先出特性,完成打印机网络共享的先来先服务功能。
题目4.假设以数组Q[m]存放循环队列中的元素, 同时设置一个标志tag,以tag == 0和tag == 1来区别在队头指针(front)和队尾指针(rear)相等时,队列状态为“空”还是“满”。
试编写与此结构相应的插入(enqueue)和删除(dlqueue)算法。
题目5.利用循环链队列求解约瑟夫环问题。
请大家从本组未讨论过的五道题中选择一道,参照清华邓俊辉老师MOOC视频及课本相关知识,编写相应程序。
选择题目3:打印机提供的网络共享打印功能采用了缓冲池技术,队列就是实现这个缓冲技术的数据结构支持。
二、程序清单//Ch3.cpp #include #include #include“ch3.h” template void LinkedQueue::makeEmpty()//makeEmpty//函数的实现{ LinkNode*p;while(front!=NULL)//逐个删除队列中的结点{p=front;front=front->link;delete p;} };template bool LinkedQueue::put_in(T&x){//提交命令函数if(front==NULL){//判断是否为空front=rear=new LinkNode;//如果为空,新结点为对头也为对尾front->data=rear->data=x;if(front==NULL)//分配结点失败return false;} else{rear->link=new LinkNode;//如不为空,在链尾加新的结点rear->link->data=x;if(rear->link==NULL)return false;rear=rear->link;} return true;};template bool LinkedQueue::carry_out()//执行命令函数 { if(IsEmpty()==true)//判断是否为空{return false;} cout<data<LinkNode*p=front;front=front->link;//删除以执行的命令,即对头修改delete p;//释放原结点return true;};void main()//主函数 { LinkedQueue q;//定义类对象char flag='Y';//标志是否输入了命令const int max=30;//一次获取输入命令的最大个数while(flag=='Y')//循环{ int i=0;char str[max];//定义存储屏幕输入的命令的数组gets(str);//获取屏幕输入的命令while(str[i]!=''){q.put_in(str[i]);//调用提交命令函数,将每个命令存入队列中i++;}for(int j=0;j<=i;j++){if(q.IsEmpty()==true)//判断是否为空,为空则说明没有可执行的命令{cout<cin>>flag;continue;//为空跳出for循环为下次输入命令做好准备}q.carry_out();//调用执行命令的函数,将命令打印并删除}三、程序调试过程中所出现的错误无。
scratch算法练习-检测回文数

scratch算法练习-检测回文数
回文数的概念:即是给定一个数,这个数顺读和逆读都是一样的。
例如:121,1221是回文数,123,1231不是回文数。
题目:让用户输入任意一个数字,判断这个数字是否是回文数。
思路:第一位和最后一位比较,第二位和倒数第二位比较……比到正中间结束,如果全都对应相等,那么就是回文数。
难点在于如何用数学的方法找到这样的对应关系,举个例子:123321这是一个6为回文数,第1位对应的就是第6为;第2位对应的就是第(6-1)位;第3位对应的是(6-2位)总结出规律,第n位对应的就是第【数字长度-(n-1)】位。
总共比多少次?因为回文数关于中心对称,只要比较对称的数即可,也就是数字长度除以2次的商次,例如6位就比3次,7位比3次,8位比4次……。
数据结构C语言版判断回文数实验报告

数据结构C语言版判断回文数实验报告实验目的:1. 了解回文数的定义和判断方法2. 掌握C语言中字符串的处理方法3. 学习如何使用栈来判断字符串是否为回文数实验原理:回文数是一个正整数,它的各位数字倒过来排列后仍然是同一个数。
比如121、12321就是回文数,而123、56789就不是回文数。
判断一个字符串是否为回文数,可以将字符串中的每一个字符逐个压入栈中,然后再依次将栈中的字符弹出,与原字符串中的字符逐个比较。
实验步骤:1. 定义一个栈结构体,其中包含一个整型数组和一个顶部指针变量。
顶部指针变量用于指向栈顶的位置。
```c#define MAXSIZE 100 // 定义栈中最大元素数量typedef struct {int data[MAXSIZE]; // 栈中元素数据int top; // 栈顶指针} Stack;```2. 定义一个函数用于判断字符串是否为回文数。
函数接收一个字符串指针作为参数。
首先计算字符串的长度,然后将字符串中的每一个字符压入栈中。
接着依次将栈中的字符弹出,与原字符串中的字符逐个比较。
如果两者不同,则说明该字符串不是回文数,函数返回0并退出。
如果所有字符都比较完成后没有发现不同,说明该字符串是回文数,函数返回1并退出。
// 将字符串中的每一个字符压入栈中for (int i = 0; i < len; i++) {s.data[++s.top] = str[i];}return 1;}```3. 在主函数中,首先要输入一个字符串,然后调用is_palindrome函数进行判断,最后输出判断结果。
实验结果:测试数据:输入:"12321"请输入一个字符串:12321该字符串是回文数"abcde""aabbabbaa"分析:实验结果验证了判断回文数的方法和字符串操作的正确性,同时掌握了使用栈来判断字符串是否为回文数的方法,有助于更好地理解栈的概念和应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
回文判断实验报告
一.实验题目:回文判断
二.实验目的:
对于一个从键盘输入的字符串,判断其是否为回文。
回文即正反序相同。
如“abba”是回文,而“abab”不是回文。
三.实验需求:
1.数据从键盘读入;
2.输出要判断的字符串;
3.利用栈的基本操作对给定的字符串判断其是否是回文,若是则输出“Yes”否则输出“No”
四.主要实现函数
(1)建立顺序栈存储结构
typedef struct { }
(2)初始化
int initstack(Sqstack &s,int maxsize)
(3)入栈
int enstack(Sqstack &s, char e)
(4)出栈
int popstack(Sqstack &s,char &e)
(5)判断是否为回文
int main()
{
int r; //用于判断是否为回文
Sqstack L,Q; //定义两个栈
initstack(L,20);
initstack(Q,20);
int l; //用于记录输入字符的长度cout<<"请输入字符串长度";
cin>>l;
if(l<=0)exit(1);
cout<<"输入字符"<<endl;
for(int i=1;i<=l;i++) //输入字符
{
char p;
cin>>p;
enstack(L,p); //入栈 L
}
cout<<endl;
for(int m=1;m<=l;m++)
{
char f;
f=getstack(L,m); //从栈 L中取元素,在入栈 Q enstack(Q,f);
}
for(int n=1;n<=l;n++)
{
char a,b; //从栈 L Q 出栈,比较
popstack(L,a);
popstack(Q,b);
if(a!=b)r=1;
else r=2;
}
if(r==1)cout<<"no"<<endl<<endl;
五.源程序
#include <iostream>
using namespace std;
typedef char SElemType;
typedef struct {
SElemType *base;
SElemType *top;
int stacksize;
}Sqstack;
int initstack(Sqstack &s,int maxsize) / {
=new SElemType[maxsize];
if(!exit(1);
=;
=maxsize;
return 0;
}
int enstack(Sqstack &s, char e) {
if 0;
}
int popstack(Sqstack &s,char &e) {
if==exit(1);
e=*;
return 0;
}
int getstack(Sqstack &s,int i) {
SElemType *p;
p=;
for(int j=1;j<=i;j++)
{p--;}
return *p;
}
int main()
{
int r; Sqstack L,Q; initstack(L,20);
initstack(Q,20);
int l; cout<<"请输入字符串长度";
cin>>l;
if(l<=0)exit(1);
cout<<"输入字符"<<endl;
for(int i=1;i<=l;i++) {
char p;
cin>>p;
enstack(L,p);
}
cout<<endl;
for(int m=1;m<=l;m++)
{
char f;
f=getstack(L,m); enstack(Q,f);
}
for(int n=1;n<=l;n++)
{
char a,b; popstack(L,a);
popstack(Q,b);
if(a!=b)r=1;
else r=2;
}
if(r==1)cout<<"no"<<endl<<endl;
else if(r==2)cout<<"yes"<<endl<<endl;
else cout<<"发生错误"<<endl;
cout<<"继续判断输入Y,退出输入N"<<endl; char d;cin>>d;
if(d=='y'||d=='Y')main(); else return 0;
}
五.各功能的运行界面:
(1)主界面:
(2)输入1,2,3,4四个字符判断是否是回文,运行界面如下:
(3)设置字符串长度为5,a,s,d,s,a,判断是否为回文,运行界面如下:。