实验六字符及字符串处理
- 格式:doc
- 大小:41.50 KB
- 文档页数:3
字符串处理
创建时间:2016.5.26
四、源程序调试过程和(或)实验分析
1、一组测试数据及数据分析
全部组建后如下图:
组建结果为0error(s),0warning(s),组建成功。
一组测试数据如下:
调试程序过程为0error(s),0warning(s),程序本身没有问题。
根据这组测试数据,s1、s2有效字符个数正确,s2在s1出现的次数正确,删除s2后的s1(即s3)正确,连接s2后的s3正确,排序后的s1正确,故本程序编写正确。
2、遇到什么问题、学到什么、体会到什么
这次作为本学期最后一次实验作业也算是圆满了。
感觉起来实验5比实验3、4简单一些,刚开始编的时候也挺快就把大概写出来了,然后开始纠正一些小错误。
最难的一步应该算是删除s1中所有的s2吧,最开始编的时候应该是算法出错了,循环判断跟数组中指针的移动没怎么考虑到,所以根本达不到这个效果。
后来就翻翻书,多改几次,没几下就终于调试成功了,这个难题解决本实验其他部分就较为简单了。
总的来说,本实验不如前两次实验繁琐,但综合性较强,充分锻炼我们处理字符串的能力。
这个实验的比较顺的编写过程,算是我的完美收官了吧。
课程设计报告课程设计题目:研究生初试录取学生姓名:李俊专业:计算机应用技术班级: 1140302指导教师:宋文琳2012年 06 月 23日目录一)实验题目 (3)二)实验目的 (3)三)实验要求 (3)四)实验思路 (4)五)实验过程 (6)六)实验调试和结果 (9)七)实验小结 (13)实验题目字符串处理(1)不使用系统库函数,编写多个函数实现;(2)定义字符数组存放字符串,从键盘输入;(3)调用不同的函数,实现字符串的连接、拷贝、比较、求字符串长度、对字符串内字符进行排序、查找字符串中某个字符是否存在;(4)分别输出以上字符串处理的结果。
二)实验目的本次课程设计的主要目的是综合运用所学的C语言知识解决一个比较实际的简单问题,侧重对数组、函数、指针、结构体等相关内容的综合应用,使学生能进一步熟悉掌握C语言的基本语法,进一步提升编程能力并逐步培养编程思维,进而不断提高学生解决问题的能力,并为以后的语言学习打下良好的基础。
三)实验要求1. 学生独立完成课程设计的主要内容;2. 按照实验课表安排进行,不得无故旷课;3.按照选题规则确定课程设计题目,不可随意更换,但可在完成规定的任务之后,根据个人兴趣选做其它题目;4.严格按照报告格式撰写课程设计报告;5.程序实现方式可以自选,可采用指针、数组或其任意组合方式完成。
四)实验思路1)整体思路五)实验过程代码:#include<stdio.h>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){printf("要比较的字符串1:"); scanf("%s",str1);printf("要比较的字符串2:");scanf("%s",str2);bijiao(str1,str2);}else if(i==4){printf("要求长度的字符串1:"); scanf("%s",str1);printf("要求长度的字符串2:"); qiuchangdu(str1,str2);}else if(i==5){printf("要排序的字符串1:"); scanf("%s",str1);printf("要排序的字符串2:");scanf("%s",str2);paixu(str1,str2);}else if(i==6){printf("要查找的字符串1:"); scanf("%s",str1);printf("要查找的字符串2:");scanf("%s",str2);printf("输入要查找的字符:");t=getchar();printf("\n");chazhao(str1,str2,t);}elseprintf("没有此操作\n");}void lianjie(char a[],char b[]) {int i=0,j=0;while(a[i]!='\0')i++;while(b[j]!='\0')a[i++]=b[j++]; a[i]='\0';printf("连接结果为:%s\n",a); }void kaobei(char a[],char b[]) {int i=0;for(i=0;i<11;i++)a[i]=b[i];a[i]='\0';printf("拷贝结果为%s;\n",a);}void bijiao(char a[],char b[]) {int i=0;while(a[i]==b[i]&&a[i]!='\0') i++;if(a[i]==b[i])printf("两个字符串相等;\n");else if(a[i]>b[i])printf("第一个字符串大;\n");elseprintf("第二个字符串大;\n");}void qiuchangdu(char a[],char b[]){scanf("%s",b);int i=0,j=0;while(a[i]!='\0')i++;printf("第一个字符串的长度为:%d\n;",i); while(a[j]!='\0')j++;printf("第二个字符串的长度为:%d\n",j); }void paixu(char a[],char b[]){int i=0,j=0,n=0,m=0;char t;while(a[n]!='\0')n++;for(i=0;i<n-1;i++)for(j=0;j<n-1;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}printf("第一个字符串排序结果为:");for(i=0;i<n;i++)printf( "%c",a[i]);while(b[m]!='\0')m++;for(i=0;i<m-1;i++)for(j=0;j<m-1;j++)if(b[j]>b[j+1]){t=b[j];b[j]=b[j+1];b[j+1]=t;}printf("第二个字符串排序结果为:");for(i=0;i<m;i++)printf( "%c",b[i]);printf("\n");}void chazhao(char a[],char b[],char c){int i=0,j=0;while(a[i]!='\0')i++;for( j=0;j<i;j++){if(a[j]!=c) ;elsebreak;}if(j<i) printf("第一个字符串有字符 %c\n;",c); elseprintf("第一个字符没有字符%c;",c);i=0;j=0;while(b[i]!='\0')i++;for( j=0;j<i;j++){if(b[j]!=c) ;elsebreak;}if(j<i) printf("第二个字符串有字符 %c\n",c); elseprintf("第二个字符没有字符%c\n",c);}六)实验调试和结果输入界面:操作结果:调试中出现的错误和改正:定义过程中出现未将引用函数放入主程序中,定义的数组开始没有放在主程序里,而是在引用函数中,引用函数有少数不能自己写出来,在通过多次尝试之后终于得出正确的程序代码,在输入字符时未加取地址符,加入之后又遇到不能输入字符的情况。
Python中字符串的处理与操作1. 字符串的基本操作字符串是Python中最常用的数据类型之一,它可以表示文本信息并进行相关操作。
以下是一些字符串的基本操作:1.1. 字符串创建与赋值在Python中,可以使用单引号或双引号来创建一个字符串。
例如:```str1 = 'Hello, Python!'str2 = "Welcome to Python!"```在赋值操作中,可以将一个字符串赋值给另一个字符串变量,也可以使用加号(+)将两个字符串进行拼接。
1.2. 字符串的索引字符串中的每个字符都可以使用索引来访问,索引从0开始。
例如:```str = "Python"print(str[0]) # 输出 Pprint(str[2]) # 输出 t```1.3. 字符串的切片Python中可以通过切片的方式来获取字符串的子串。
切片的语法是str[start:end],其中start表示起始索引(包含),end表示结束索引(不包含)。
例如:```str = "Python"print(str[1:4]) # 输出 yth```1.4. 字符串的长度可以使用len()函数来获取字符串的长度。
例如:```str = "Python"print(len(str)) # 输出 6```2. 字符串的常用方法Python中字符串类提供了许多有用的方法来处理和操作字符串。
2.1. 大小写转换- lower(): 将字符串转换为小写形式- upper(): 将字符串转换为大写形式- capitalize(): 将字符串的第一个字母转换为大写,其他字母转换为小写2.2. 字符串的查找与替换- find(sub): 查找子字符串sub在原字符串中的第一个索引位置,如果不存在返回-1- replace(old, new): 将字符串中的所有old子串替换为new子串2.3. 字符串的切分与连接- split(delimiter): 将字符串按照指定的分隔符delimiter进行切分,并返回一个字符串列表- join(iterable): 将一个可迭代对象中的所有元素连接成一个字符串,原字符串通过指定的分隔符进行分隔2.4. 字符串的格式化Python提供了多种字符串格式化方法,其中最常见的是使用格式化字符串:- 使用占位符:%s代表字符串,%d代表整数,%f代表浮点数```name = "Tom"age = 18print("My name is %s, age is %d" % (name, age)) # 输出 My name is Tom, age is 18```- 使用format()方法:通过在字符串中使用{}作为占位符,并通过format()方法传入变量来格式化字符串```name = "Tom"age = 18print("My name is {}, age is {}".format(name, age)) # 输出 My name is Tom, age is 18```- 使用f-string:在字符串的前面加上f,在字符串中使用{}作为占位符,并直接在{}中使用变量名```name = "Tom"age = 18print(f"My name is {name}, age is {age}") # 输出 My name is Tom, age is 18```3. 字符串的编码与解码在Python中,字符串是以Unicode编码存储的。
字符串处理实验报告班级: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不能隐藏已知文件类型的扩展名单击工具文件夹选项,弹出文件夹选项对话框第七步、在文件夹选项对话框中选择查看选项卡取消那个复选框,然后单击确定按钮即可完成显示文件名的扩展名设置实验结果:1、实现字符串翻转功能页面test1.php运行结果如下所示,此页面实现了英文和中文的字符翻转功能。
2、实现中文字符串截取功能页面test2.php运行结果如下所示,功能已经实现。
3、实现中文字符比较功能页面test3.php运行结果如下所示,功能已经实现。
C语言中的字符串处理和字符操作在C语言中,字符串处理和字符操作是非常重要的技术之一。
本文将深入探讨C语言中关于字符串处理和字符操作的一些常用方法和技巧。
一、字符串处理1. 字符串的定义与初始化在C语言中,字符串是由字符组成的一维数组。
可以使用字符数组来定义和初始化字符串。
例如:```char str[20] = "Hello, World!"; // 使用字符数组来定义并初始化字符串```2. 字符串的输入和输出C语言提供了一些函数来进行字符串的输入和输出操作。
- printf函数用于将字符串输出到屏幕上。
- scanf函数用于从键盘上输入字符串。
3. 字符串的拷贝我们经常需要将一个字符串拷贝到另一个字符串中。
C语言提供了strcpy函数来实现字符串的拷贝操作。
例如:```char str1[20] = "Hello";char str2[20];strcpy(str2, str1); // 将str1拷贝到str2中```4. 字符串的长度在C语言中,可以使用strlen函数来获取字符串的长度。
例如:```char str[20] = "Hello";int length = strlen(str); // 获取字符串的长度```5. 字符串的连接C语言提供了strcat函数用于将两个字符串进行连接操作。
例如:```char str1[20] = "Hello";char str2[20] = "World!";strcat(str1, str2); // 将str2连接到str1的末尾```二、字符操作1. 字符的输入与输出C语言中,字符的输入与输出可以使用printf和scanf函数。
例如:```char ch = 'A';printf("字符为:%c\n", ch); // 输出字符scanf("%c", &ch); // 输入字符```2. 字符的转换C语言中,可以使用一些函数来进行字符类型的转换操作。
字符串的相关处理方法字符串是计算机编程中常用的数据类型之一,对字符串的处理是编程中的一项基本操作。
本文将介绍一些常用的字符串处理方法,包括字符串的拼接、查找、替换、分割以及大小写转换等。
一、字符串的拼接字符串的拼接是将多个字符串连接成一个较长的字符串的操作。
在Python中,可以使用"+"运算符来实现字符串的拼接。
例如:```pythonstr1 = "Hello"str2 = "World"result = str1 + str2print(result) # 输出结果为"HelloWorld"```二、字符串的查找字符串的查找是在一个字符串中寻找指定的字符或子串的操作。
在Python中,可以使用`find()`方法来查找子串在字符串中的位置。
如果找到了,则返回子串的起始位置;如果找不到,则返回-1。
例如:```pythonstr1 = "Hello, World!"position = str1.find("World")print(position) # 输出结果为7```三、字符串的替换字符串的替换是将一个字符串中的指定字符或子串替换为新的字符或子串的操作。
在Python中,可以使用`replace()`方法来实现字符串的替换。
例如:```pythonstr1 = "Hello, World!"new_str = str1.replace("World", "Python")print(new_str) # 输出结果为"Hello, Python!"```四、字符串的分割字符串的分割是将一个字符串按照指定的分隔符分成多个子串的操作。
在Python中,可以使用`split()`方法来实现字符串的分割。
实验六字符及字符串处理
一、实验目的
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.改错题
以下程序对一个由字母和数字字符组成的字符串从头至尾作如下变换:
①若原字符串的当前字符不是数字字符,则将该字符复制到新字符串中;
②若当前字符是一个数字字符(设该数字字符的面值为n),且有后继字符,则将它
的后继字符重复复制n次到新字符串中(若后继字符是大写字母,则复制为对应的小写字母),并且被复制的后继字符不再作为当前字符进行判断和变换;
③若当前字符为一个数字字符,且没有后继字符,则将该字符复制到新字符串中;
④以上述一次变换为一组,在不同组之间插入一个下划线字符‘_’用于分隔。
例如:对字符串26A3T2的变换结果为:66_A_ttt_2。
void encode(char *ip, char *op)
{ char *outstr,c;
int k,n;
outstr=op;
while(*ip)
{ if ('0'<=*ip<='9'&&*(ip+1))
{ n=*ip-'0';
c=*++ip;
c= c>='a'&&c<='z' ? c : c+32;
for(k=0;k<n;k++)
*op++=c;
}
else *op++=*ip;
*op++='_'; ip++;
}
if(op>outstr) op--; *op='\0';
}
void main()
{char p[n]="26A3T2",line[100],*q=line;
encode(p,q);
q=line;
while(*q) putchar(*q++);
putchar('\n');
}
2.改错题
下列程序中函数divfun的功能是:对于s指向的一个含有数字字符和非数字字符的字符串(串长不超过80),将其中连续的数字字符转换为一个整数,如果连续的数字字符个数超过4个,则以4个数字字符为一组进行转换。
将转换后的生成的整数依次存放到整型数组a中。
函数返回放入a数组中整数的个数。
例如,若输入的字符串为“c123yz45 ! 786* 56ab c 123456789”,则a数组中的数值分别为:(123,45,786,56,1234,5678,9)。
#include <stdio.h> /* 增加#include <ctype.h> */
void divfun(char *s,int a[]) /* 改为int divfun(char *s,int a[]) */
{ char *p=s;
int i=0,k,sum;
while(*p)
if(isdigit(*p))
{ sum=*p-'0'; p++; k=1;
while(isdigit(*p))
{k++;
if(k<=4) {sum=sum+*p-'0';p++;} /* 改为 sum=sum*10+*p-'0' */
else { a[i++]=sum;
k=1; sum=*p-'0'; p++;
}
}
a[i++]=sum;
}
else p++;
return i-1;
}
main()
{ char *str; int i,n,num[40]; /* 改为char str[80] */
gets(str); n=divfun(str,num);
puts(str);
for(i=0;i<=n;i++)
printf("%6d",num[i]);
printf("\n");
}
3.[题目]
程序功能:
将一字符串做压缩处理。
编程要求:
(1)编写一个函数int compress(char s[]),将s中连续出现的多个相同字符压缩为一个字符,统计被删除的字符个数,,返回被删除的字符个数。
(2)编写主函数main,从键盘读入一行字符数据放入一个字符型数组中,调用compress 函数对该字符数组中字符做压缩处理,将压缩后的字符串写入结果文件myf2.out中。
(3)用以下数据测试程序:
@@@@@@ I wwillll succesful &&&&&& and you too !!!!!!##########。