字符串习题
- 格式:doc
- 大小:21.00 KB
- 文档页数:4
1、笨小猴(08年提高组第1题)(word.pas/c/cpp)【问题描述】笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。
但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn 是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。
【输入】输入文件word.in只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。
【输出】输出文件word.out共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”;第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0。
【输入输出样例1】单词error中出现最多的字母r出现了3次,出现次数最少的字母出现了1次,3-1=2,2是质数。
【输入输出样例2】单词olympic中出现最多的字母i出现了2次,出现次数最少的字母出现了1次,2-1=1,1不是质数。
2.ISBN号码(08年普及组第1题)(isbn.pas/c/cpp)【问题描述】每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。
ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。
识别码的计算方法如下:首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。
Python字符串及练习题
1.字符串
1.1字符串概念
字符串是一个容器,包含若干个字符并按照一定的顺序组织成一个整体。
字符串支持索引操作。
1.2创建字符串基本语法
变量名 = "字符串信息"
变量名 = '字符串信息'
变量名 = """字符串信息"""
变量名 = '''字符串信息'''
1.3注意事项
字符串定义过程中如出现"匹配问题,使用\"进行转义
2.字符串切片
2.1字符串切片概念
字符串切片指获取字符串中的某一部分,形成新的字符串对象。
2.2字符串切片基本语法
字符串[开始索引:结束索引]
字符串[开始索引:结束索引:步长]
3.字符串操作
3.1基本操作
3.2状态获取操作
3.3字符转换操作
3.4格式转换操作
3.5拆分操作
3.6连接操作
3.7查询操作
3.8替换操作
3.9其他操作。
单项选择==================================================题号:4074若有定义语句:int a[4][10],*p,*q[4];且0<=i<4,则错误的赋值是().A、p=aB、p=&a[2][1]C、q[i]=a[i]D、p=a[i]答案:A题号:4333执行下列语句后的结果为().int x=3,y;int *px=&x;y=*px++;printf("x=%d,y=%d\n",x,y);A、x=3,y=3B、x=4,y=4C、x=3,y不知D、x=3,y=4答案:A题号:4876下列程序的运行结果是void fun(int *a,int *b) {int *k;k=a;a=b;b=k;}main(){int a=3,b=6,*x=&a,*y=&b; fun(x,y);printf("%d %d",a,b);}A、0 0B、3 6C、编译出错D、6 3答案:B题号:4116若说明int *p,n;则通过语句scanf能够正确读入数据的程序段是().A、scanf("%d",n);B、p=&n;scanf("%d",&p);C、p=&n;scanf("%d",*p);D、p=&n;scanf("%d",p);答案:D题号:4120下面程序:int aa[3][3]={{2},{4},{6}};main(){int i,*p=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf("%d",*p);}}的输出是().A、25B、30C、26D、23答案:D题号:4124若有说明:int i,j=2,*p=&i;,则能完成i=j赋值功能的语句是().A、i=*p;B、*p=*&j;C、i=**p;D、i=&j;答案:B题号:4165阅读下面程序,程序执行后的结果为().#include"stdio.h"main(){ char *str="abcdefghijklmnopq";while(*str++!='e');printf("%c\n",*str);}A、fB、qC、eD、a答案:A题号:4167关于指针概念说法不正确的是().A、指针变量可以由整数赋,不能用浮点赋B、只有同一类型变量的地址才能放到指向该类型变量的指针变量之中,C、一个指针变量只能指向同一类型变量D、一个变量的地址称为该变量的指针答案:A题号:4173设有以下定义:int w[2][3],(*pw)[3];pw=w;,则对w数组元素非法引用是().A、pw[0][0]B、*(pw[1]+2)C、*(pw+1)[2]D、*(w[0]+2)答案:C题号:4532若有定义:char s[3][10],*k[3],*p;,则以下赋值语句正确的是().A、k=s;B、p=k;C、p=s;D、p=s[0];答案:D题号:4174当运行以下程序时输入OPEN THE DOOR<CR>,则输出结果是#include<stdio.h>char fun(char *c){if(*c<='Z' && *c>='A')*c -='A' - 'a';return *c;}main(){char s[8],*p=s;gets(s);while(*p){*p=fun(p);putcahr(*p);p++;}putchar('\n');}A、Open The DoorB、OPEN THE DOORC、open the doorD、oPEN tHE dOOR答案:C题号:4175下列程序执行后的输出结果是().void func(int *a,int b[]){b[0]=*a+6;}main(){int a,b[5]={0};a=0; b[0]=3;func(&a,b); printf("%d\n",b[0]);}A、8B、9C、7D、6答案:D题号:4390已知有声明"char a[]="prongram",*p=a+1;",则执行以下语句不会输出字符a的是()oA、putchar(*p+4);B、putchar(*(p+4));C、putchar(a[sizeof(a)-3]);D、putchar(*(a+5));答案:A题号:4181定义语句int *swap();指的是A、其他说法都不对B、swap是一个返回指向整型值指针的函数C、swap是一个返回整型值的函数D、swap是一个指向函数的指针答案:B题号:4184有以下程序:#include<stdio.h>void swap(char *x,char *y){char t;t=*x;*x=*y;*y=t;}main(){char *s1="abc",*s2="123";swap(s1,s2);printf("%s,%s\n",s1,s2); }程序执行后的输出结果是().A、1bc,a23B、123,abcC、321,cbaD、abc,123答案:A题号:4211若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;,则输出结果不为5 的语句为().A、printf("%d",p[5]);B、printf("%d",*p[5]);C、printf("%d",*(a+5));D、printf("%d",*(p+5));答案:B题号:4215有以下程序:void fun(int *a,int i,int j){int t;if(i<j){t=a[i];a[i]=a[j];a[j]=t;fun(a,++i,--j);}}main(){int a[]={1,2,3,4,5,6},i;fun(a,0,5);for(i=0;i<6;i++)printf("%d",a[i]);}执行后输出结果是().A、6 5 4 3 2 1B、2 1 4 3 6 5C、3 2 4 1 5 6D、1 2 3 4 5 6答案:A题号:4113以下程序运行后的输出结果是(). main(){char ch[]="uvwxyz",*pc; pc=ch;printf("%c\n",*(pc+5));}A、字符y的地址B、0C、元素ch[5]地址D、z答案:D题号:4695有以下程序#include<stdio.h>main(){int a[]={1,2,3,4},y,*p=&a[3]; --p; y=*p; printf("y=%d\n",y); }程序的运行结果是().A、y=0B、y=2C、y=1D、y=3答案:D题号:4298若有语句:char *line[5];下列叙述中正确的是().A、定义line是一个指针数组,语句中的*号称为间址运算符B、定义line是一个数组,每个数组元素是一个基类型为char 的指针变量C、定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组D、定义line是一个指向字符型函数的指针答案:B题号:2457设有数组定义:char array[]="China";,则数组 array所占的空间为().A、5个字节B、4个字节C、6个字节D、7个字节答案:C题号:2468下述对C语言字符数组的描述中错误的是().A、字符数组中的字符串可以整体输入,输出.B、不可以用关系运算符对字符数组中的字符串进行比较.C、字符数组中可以存放字符串.D、可以通过赋值运算符"="对字符数组整体赋值.答案:D题号:2479以下程序:#include<stdio.h>#include<string.h>main(){ char str[]="abcd\n\123\xab";printf("%d",strlen(str));}运行后的输出结果是().A、10B、9C、14D、7答案:D题号:2485已知有声明"char s[20]="Hello";",在程序运行过程中若要想使数组s中的内容修改为"Good",则以下语句能够实现此功能的是().A、strcpy(s,"Good");B、strcat(s,"Good");C、s[20]="Good";D、s="Good";答案:A题号:2499以下程序段的输出结果是pritnf("%d\n",strlen("ATS\n012\1\\"));A、11B、8C、9D、10答案:C题号:2510char a1[]="abc",a2[80]="1234";将a1串连接到a2串后面的语句是().A、strcat(a2,a1);B、strcpy(a2,a1);C、strcpy(a1,a2);D、strcat(a1,a2);答案:A题号:2530设有以下语句,若0<k<4,下列选项中对字符串的非法引用是().char str[4][2]={"aaa","bbb","ccc","ddd"},*strp[4];int j;for(j=0;j<4;j++)strp[j]=str[j];A、*strpB、strpC、strp[k]D、str[k]答案:B题号:2543选择正确的输入语句().(其中:char string[10];)使得string的内容为"Hello".A、scanf("%s",&string);B、scanf("%c",string);C、scanf("%c",&string);D、scanf("%s",string);答案:D题号:2874下列数组说明中正确的是().A、static char str1[5],str2[]={"China"};str1=str2;B、static char str[];str="China";C、static char str1[],str2[];str2={"China"};strcpy(str1,str2);D、static char str[]="China";答案:D题号:2633已定义char string[20];使得string的内容为"You are student"的正确输入语句是().A、scanf("%c",&string);B、gets(string);C、scanf("%s",&string);D、scanf("%s",string);答案:B填空题==================================================题号:4875若有定义: char ch;定义指针p,并使其指向变量ch的初始化语句是_____。
JAVA字符串及习题1.字符串的比较字符串中提供的方法:equals()和equalsignorecase()它们与运算符“==”的实现不同。
运算符“==”比较两个对象是否引用同一实例,而equals()和equalsignorecase()比较两个字符串中每个字符的对应值是否相同。
2.字符串转换ng.object中提供了方法tostring()把对象转化为字符串。
3.字符串\操作运算符“+”可用于连接字符串:字符串=\其他类型的数据与字符串进行\运算时,将自动转换成字符串。
具体过程如下:strings=newstringbuffer(\注意:除了对运算符\进行了重载外,java不支持其它运算符的重载。
[课后练习]一、选择1.以下哪项是Java语言中的关键字?asizeofbabstractcnulldnative2.以下哪项陈述是正确的?achar='abc';blongl=oxfff;cfloatf=0.23;ddouble=0.7e-3;3.下面的程序测试string类的各种构造方法,并尝试选择其操作效果。
classstr{publicstaticvoidmain(stringargs[]){strings1=newstring();strings2=newstring(\charchars[]={'a'、''s'、't'、'r'、'i'、'n'、'g');strings3=newstring(chars);strings4=新闻字符串(chars,2,6);字节[]={0,1,2,3,4,5,6,7,8,9};stringbuffersb=newstringbuffer(s3);string5=新闻字符串(sb);system.out.println(\system.out.println(\system.out.println(\system.out.println (\system.out.println(\}}不。
string类练习题String类是Java中常用的字符串处理类之一,具有丰富的方法和功能,可以满足各种字符串处理需求。
下面将给出一些关于String类的练习题,帮助读者熟悉和掌握这个类的使用。
1. 字符串长度计算和比较编写一个程序,要求从控制台输入两个字符串,然后分别计算它们的长度并输出。
最后比较这两个字符串的长度,如果相等则输出相等,否则输出不相等。
示例输入:请输入字符串1:Hello请输入字符串2:World示例输出:字符串1的长度为:5字符串2的长度为:5两个字符串长度不相等2. 字符串拼接编写一个程序,要求从控制台输入两个字符串,然后使用String 类提供的方法将这两个字符串拼接在一起,并输出结果。
示例输入:请输入字符串1:Hello请输入字符串2:World示例输出:拼接后的字符串为:HelloWorld3. 字符串查找编写一个程序,要求从控制台输入一个字符串和一个目标子串,然后使用String类提供的方法在输入的字符串中查找目标子串,并输出查找结果(找到返回位置索引,找不到返回-1)。
示例输入:请输入字符串:Hello World请输入目标子串:World示例输出:目标子串在字符串中的位置索引为:64. 字符串切割编写一个程序,要求从控制台输入一个字符串和一个分隔符,然后使用String类提供的方法将输入的字符串按照分隔符进行切割,并输出切割结果。
示例输入:请输入字符串:Hello,World,Java请输入分隔符:,示例输出:切割结果:HelloWorldJava5. 字符串替换编写一个程序,要求从控制台输入一个字符串、一个目标子串和一个替换子串,然后使用String类提供的方法将目标子串在输入的字符串中全部替换为替换子串,并输出替换后的结果。
示例输入:请输入字符串:Hello Java请输入目标子串:Java请输入替换子串:World示例输出:替换后的字符串为:Hello World通过完成以上练习题,读者可以加深对String类的理解和应用,提高字符串处理的能力,为日后在编写Java程序时处理字符串问题提供帮助。
编程基础之字符串(30题)01:统计数字字符个数? ? ? ? 查看提交统计提问总时间限制: 1000ms 内存限制: 65536kB 描述输入一行字符,统计出其中数字字符的个数。
输入一行字符串,总长度不超过255。
输出输出为1行,输出字符串里面数字字符的个数。
样例输入Peking University is set up at 1898. 样例输出 4 来源习题(7-1) 医学部2010 期末试题樊波02:找第一个只出现一次的字符? ? ? ? 查看提交统计提问总时间限制: 1000ms 内存限制: 65536kB 描述给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。
如果没有,输出no。
输入一个字符串,长度小于100000。
输出输出第一个仅出现一次的字符,若没有则输出no。
样例输入abcabd 样例输出c03:基因相关性? ? ? ? 查看提交统计提问总时间限制: 1000ms 内存限制: 65536kB 描述为了获知基因序列在功能和结构上的相似性,经常需要将几条不同序列的DNA 进行比对,以判断该比对的DNA是否具有相关性。
现比对两条长度相同的DNA序列。
首先定义两条DNA序列相同位置的碱基为一个碱基对,如果一个碱基对中的两个碱基相同的话,则称为相同碱基对。
接着计算相同碱基对占总碱基对数量的比例,如果该比例大于等于给定阈值时则判定该两条DNA序列是相关的,否则不相关。
输入有三行,第一行是用来判定出两条DNA 序列是否相关的阈值,随后2行是两条DNA序列。
输出若两条DNA 序列相关,则输出“yes”,否则输出“no”。
样例输入ATCGCCGTAAGTAACGGTTTTAAATAGGCC ATCGCCGGAAGTAACGGTCTTAAAT AGGCC 样例输出yes 04:石头剪子布描述石头剪子布,是一种猜拳游戏。
起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。
字符串、列表相关习题#!/usr/bin/env python# -*- coding:utf-8 -*-'''day04作业''''''1. 简述解释性语⾔和编译型语⾔的区别?'''#解释型语⾔是把代码逐⾏解释成⼆进制⽂件,计算机逐⾏执⾏,类似于同声传译# 编译型语⾔是直接把代码编译成⼆进制⽂件,交给计算机⼀次性执⾏,类似于翻译'''2. 列举你了解的Python的数据类型?'''# int \ float \ bool \ string \ list \ tuple \ dic \ None \'''3. 写代码,有如下列表,按照要求实现每⼀个功能。
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]- 计算列表的长度并输出'''# li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]# print(len(li))'''- 请通过步长获取索引为偶数的所有值,并打印出获取后的列表'''li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]print(li[::2])'''- 列表中追加元素"seven",并输出添加后的列表'''# li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]# li.append('seven')# print(li)'''请在列表的第1个位置插⼊元素"Tony",并输出添加后的列表'''# li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]# li.insert(0,'Tony')# print(li)'''请修改列表第2个位置的元素为"Kelly",并输出修改后的列表'''# li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]# li[1]='Kelly'# print(li)'''- 请将列表的第3个位置的值改成 "太⽩",并输出修改后的列表'''# li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]# li[2]="太⽩"# print(li)'''- 请将列表 l2=[1,"a",3,4,"heart"] 的每⼀个元素追加到列表li中,并输出添加后的列表'''# li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]# l2=[1,"a",3,4,"heart"]# for x in l2:# li.append(x)# print(li)'''- 请将字符串 s = "qwert"的每⼀个元素添加到列表li中,⼀⾏代码实现,不允许循环添加。
1、下面关于串的叙述中,正确的是()。
A.串是一种特殊的线性表B.串中元素只能是字母C.空串就是空白串D.串的长度必须大于零正确答案:A解析:串是一种特殊的线性表,其元素为单个字符,长度可以为0。
2、两个字符串相等的条件是()。
A.串的长度相等B.含有相同的字符集C.都是非空串D.两个串的长度相等且对应位置的字符相同正确答案:D3、若串str=“Software”,其子串的个数是()。
A.8B.9C.36D.37正确答案:D解析:该串中所有字符不相同,长度为0的子串1个,长度为1的子串8个,长度为2的子串7个,…,长度为7的子串2个,长度为8的子串1个,总计子串数=1+8+7+…+2+1=1+8×9/2=37。
4、一个链串的节点类型定义为#define NodeSize 6typedef struct node{ char data[NodeSize];struct node *next;} LinkStrNode;如果每个字符占1个字节,指针占2个字节,该链串的存储密度为()。
A.1/3B.1/2C.2/3D.3/4正确答案:D解析:链串节点大小指每个节点存放的字符个数,本题节点大小为6,存储密度=(6*1)/(6*1+2)=3/4。
5、串采用节点大小为1的链表作为其存储结构,是指()。
A.链表的长度为1B.链表中只存放一个字符C.链表中每个节点的数据域中只存放一个字符D.以上都不对正确答案:C解析: C、链串节点大小指每个节点存放的字符个数。
6、对于一个链串s,查找第一个字符值为x的算法的时间复杂度为()。
A.O(1)B.O(n)C. O(n2)D.以上都不对正确答案:B解析:在链串查找第一个字符值为x的算法的时间复杂度为O(n)。
7、设有两个串p和q,其中q是p的子串,则求q在p中首次出现位置的算法称为()。
A.求子串B.串联接C.模式匹配D.求串长正确答案:C解析:模式匹配算法就是找子串在主串中的位置。
python3练习题100道,孰能⽣巧,之前要想⼀个下午的内容,马上就有了答案第1章字符串练习题1.1交换已知a的值为“hello”,b的值为“world”,如何交换a和b的值?得到a的值为“world”,b的值为“hello”a="hello"b="world"#⽅式1a,b=b,aprint("a的值:"+a+"; b的值:"+b)#⽅式2a="hello"b="world"c=aa=bb=cprint("a的值:{}; b的值{}".format(a,b))1.2回⽂回⽂的定义:“回⽂”就是正读倒读都是⼀样的如奇数个“98789”,这个数字正读是“98789”倒读也是“98789”。
偶数个数字“3223”也是回⽂数。
字母“abcba”也是回⽂。
判断⼀个字符串是否是回⽂字符串,是打印True,不是打印False。
a=input("请输⼊⼀个字符串:")print(a)flag=Truefor i in range(len(a)//2):if a[i]!=a[-i-1]:flag=Falseprint("{}不是⼀个回⽂字符串;".format(a))breakif flag:print("{}是⼀个回⽂字符串;".format(a))1.3字符串切割已知⼀个字符串为“hello_world_huihui”,如何得到⼀个队列["hello","world","huihui"]a="hello_world_huihui"print(a.split("_"))1.4拼接字符串有个列表['hello', 'world', 'huihui'] 如何把列表⾥的字符串串联起来得到字符串"hello_world_huihuia=['hello', 'world', 'huihui']aa=""for i in a:aa+=iaa += "_"print(aa[:-1]) 1.5 替换字符把字符串s中的每个空格替换成"%20"输⼊:s="We are happy."s="We are happy."ss=s.replace(" ","%20")print(ss)1.6 九九乘法表打印99乘法表for i in range(1,10):for j in range(1,i+1):print("{}*{}={}".format(j,i,i*j),end=" ")print()1.7字符下标找出单词"welcome" 在字符串"Hello,welcome." 中出现的位置,找不到返回-1从下标0开始索引a="welcome"b="Hello,welcme.welcome.."n=0if a in b:for i in b:if i!=a[0]:n+=1else:end=len(a)+n# print(end)if a==b[n:end]: #[6:14]print("单词{} 在{}的第{}位出现;".format(a,b,n))breakn+=1else:print("单词{} 未在{}中出现;".format(a,b)) 1.8 统计字符出现的次数统计字符串"Hello,welcome to my world." 中字母w出现的次数统计单词my出现的次数a="Hello, welcome to my world."b='w'# ⽅式⼀:# if b in a:# # count=0# # for i in a:# # if i==b:# # count+=1# # print("{}在字符串{}中,出现了{}次;".format(b, a,count))# # else:# # print("{}未出现在字符串{}中;".format(b,a))# ⽅式⼆:#直接将m替换为my即可count=0 while True: if b in a: a=a.replace(b,'',1) count+=1 else: break print("{}在字符串{}中,出现了【{}】次;".format(b, a,count))1.9 统计每个字符出现的次数题⽬:输⼊⼀个字符串str,输出第m个只出现过n次的字符, 如在字符串gbgkkdehh中,找出第2个只出现1次的字符,输出结果:d # a="gbgkkdehh"a=input('请输⼊⼀个字符串:')m=3n=2b={}count=0for i in a:if i not in b.keys():b[i]=1else:b[i]+=1print(b)for i in b.keys():if count==m:print(i)break1.10 判断字符a含b判断字符串a="welcome to my world" 是否包含单词b="world",包含返回True,不包含返回False a="welcome to my world"b="world"if b in a:print("True")else:print("False")1.11 查找字符⾸次出现位置输出指定字符串A在字符串B中第⼀次出现的位置,如果B中不包含A,则输出-1从0开始计数A="hello"B="hi how are you hello world,hello yoyo !"A = "hello"B = "hi how are you hello world, hello yoyo !"n=0if A in B:b=B.replace(A,'=',1)print(b)for i in b:if i!='=':n+=1else:print("{}在字符串{}中第⼀次出现的位置是 {}".format(A,B,n))else:print(-1)1.12 查找字符串最后⼀次出现位置输出指定字符串A在字符串B中最后出现的位置,如果B中不包含A,则输出-1从0开始计数A="hello"B = "hi how are you hello world, hello yoyo !" A = "hello"B = "hi how are you hello world,hello yoyo !"n=0count=0print(len(B))while A in B:n=B.index(A)B=B.replace(A,'',1)count+=1# print(n)print(n+(count-1)*len(A))1.13判断奇数偶数 给定⼀个数a,判断⼀个数字是否为奇数或偶数a=int(input("请输⼊任意⼀个整数:"))# print(a,type(a))if a%2==0:print("偶数")else:print("奇数")1.14判断⼀个姓名是否姓王 输⼊⼀个姓名,判断是否姓王a="王五"b="⽼王"a="⽼王五"if a[0]=="王":print("{} 姓‘王’".format(a))else:print("{} 不姓'王'".format(a))1.15 判断是不是数字如何判断⼀个字符串是不是纯数字组成a="123456"b="yoyo123"#⽅式1import rea="123456"b=re.findall('\d',a)if len(a)==len(b):print("{} 是纯数字;".format(a))else:print("{} 不是纯数字;".format(a))#⽅式2a="12345c6"if a.isdigit():print("数字字符串")else:print("⾮数字字符串")1.16 字符串⼤⼩写转换将字符串 a="This is string example....wow!" 全部转成⼤写字符串 b="Welcome To My World"全部转成⼩写a="This is string example....wow!"print(a.upper())print(a.lower())1.17 字符串去掉⾸尾空格将字符串a=" welcome to my world "⾸尾空格去掉 a=" welcome to my world "print(a.strip())print('abcab'.strip('a'))1.18字符串去掉左边指定空格或字符将字符串a = " welcome to my world !"左边的空格去掉a = " welcome to my world ! "print(a.lstrip())1.19字符串去掉右边指定空格或字符将字符串a = " welcome to my world ! "右边的空格去掉a = " welcome to my world!"print(a.rstrip())print(a.rstrip("!"))1.20 去除字符串⾥⾯所有的空格将字符串a = " welcome to my world ! "⾥⾯的所有空格都去掉a = " welcome to my world ! "print(a.replace(' ',''))1.21字符串去重后排序s = "ajldjlajfdljfddd",去重并从⼩到⼤排序输出"adfjl"s = "ajldjlajfdljfddd"rs=[]for i in s:if i not in rs:rs.append(i)# rs=sorted(rs) #列表排序⽅式1rs.sort()s="".join(rs)print(rs,s)1.22字符串去重保留顺序s = "ajldjlajfdljfddd",去重保留原来的顺序,输出"ajldf"s = "ajldjlajfdljfddd"rs=""for i in s:if i not in rs:rs+=iprint(rs)1.23画菱形题⽬打印出如下图案(菱形):n=7for i in range(n//2+1):print(' '*(n//2-i)+'*'*(2*i+1))#3,1; 2,3; 1,5;;0,7;;for i in range(n//2-1,-1,-1):print(' '*(n//2-i)+'*'*(2*i+1))1.24 输⼊⼀个正整数,判断是⼏位数题⽬给⼀个不多于5位的正整数,要求:⼀、求它是⼏位数,⼆、逆序打印出各位数字。
01:统计数字字符个数••提交•统计•提问总时间限制:1000ms存限制:65536kB描述输入一行字符,统计出其中数字字符的个数。
输入一行字符串,总长度不超过255。
输出输出为1行,输出字符串里面数字字符的个数。
样例输入样例输出来源习题(7-1) 医学部 2010 期末试题樊波02:找第一个只出现一次的字符••提交•统计•提问总时间限制:1000ms存限制:65536kB描述给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。
如果没有,输出no。
输入一个字符串,长度小于100000。
输出输出第一个仅出现一次的字符,若没有则输出no。
样例输入样例输出03:基因相关性••提交•统计•提问总时间限制:1000ms存限制:65536kB描述为了获知基因序列在功能和结构上的相似性,经常需要将几条不同序列的DNA进行比对,以判断该比对的DNA是否具有相关性。
现比对两条长度相同的DNA序列。
首先定义两条DNA序列相同位置的碱基为一个碱基对,如果一个碱基对中的两个碱基相同的话,则称为相同碱基对。
接着计算相同碱基对占总碱基对数量的比例,如果该比例大于等于给定阈值时则判定该两条DNA序列是相关的,否则不相关。
输入有三行,第一行是用来判定出两条DNA序列是否相关的阈值,随后2行是两条DNA序列(长度不大于500)。
输出若两条DNA序列相关,则输出“yes”,否则输出“no”。
样例输入样例输出04:石头剪子布描述石头剪子布,是一种猜拳游戏。
起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。
简单明了的规则,使得石头剪子布没有任何规则漏洞可钻,单次玩法比拼运气,多回合玩法比拼心理博弈,使得石头剪子布这个古老的游戏同时用于“意外”与“技术”两种特性,深受世界人民喜爱。
游戏规则:石头打剪刀,布包石头,剪刀剪布。
现在,需要你写一个程序来判断石头剪子布游戏的结果。
输入输入包括N+1行:第一行是一个整数N,表示一共进行了N次游戏。
第五章串一、名词解释(1)字符串(2)空白串(3) 空串(4)顺序串(5)链式串(6)模式匹配二、判断题(下列各题,正确的请在前面的括号内打“√”;错误的打“╳”)(╳)(1)串的长度是指串中不同字符的个数。
(╳)(2)串是N个字母的有限序列。
(√)(3)空串不等于空白串。
(╳)(4)如果两个串含相同的字符,则说明它们相等。
(╳)(5)如果一个串中相同的字符均在另一个串中出现,则说明前者是后者的子串。
(√)(6)串的堆分配存储是一种动态存储结构。
三.填空题1、设两个字符串分别为:s1=”Today is”,s2=”30 July,2003”,concatstr(s1,s2)的结果:“Today is30 July,2003”2、通常在程序中使用的字符串可分为串常量和串变量;而字符串按存储方式又可分为定长顺序存储、堆分配存储和块链存储等几种。
3、串的顺序存储非紧凑格式,一个存储单元只存放字符串中的一个字符,其缺点是浪费存储空间。
4、串的顺序存储紧凑格式优点是空间利用率高,缺点是对串中字符处理的效率低。
5、串链接存储优点是插入、删除运算方便,缺点是存储、检索效率低。
6、两个串相等的充分必要条件是长度相等,对应字符相同。
7、设S=“A:/Document/Mary.Doc”,则LenStr(s)= 20 ,”/”的字符定位的位置为 3 。
8、子串的定位运算称为串的模式匹配,主串称为目标串,子串称为模式。
9、设目标T=”abccdcdccbaa”,模式p=”cdcc”,则第6 次匹配成功。
四.选择题1.串是一种特殊的线性表,其特殊体现在(B)。
A.可以顺序存储B、数据元素是以一个字符C、可以链接存储D、数据元素可以是多个字符2.设有两个串p和q,求q在p中首次出现的位置的运算称作(B)A.链接B、模式匹配C、求子串D、求串长3.设两个字符串的串值分别为s1=”ABCDEFG”,S2=”PQRST”,则ConcatStr(SubStr(s1,2,LenStr(s2)),SubStr(s1,LenStr(s2),2))的结果串(D )A、BCDEFB、BCDEFGC、BDPQRSTD、BCDEFEF4、串是( D )A、不少于一个字母的序列B、任意个字符的序列C、不少与一个字符的序列D、有限个字符的序列5、设有两个串s1和s2,求s2在s1中首次出现的位置的运算是(C)A、串链接B、求子串C、模式匹配D、串比较6、以下论断正确的是(A)A、” ”是空串,””是空格串B、”beijing”是”bei jing”的子串C、”something”<” Something”D、”BIT”==”BITE”7、若字符串”ABCDEFG”采用链式存储,假设每个字符占用1个字节,每个指针占用2个字节。
第6章-数组和字符串-练习题一、选择题1.下面正确的初始化语句是___A. char str[]="hello";B. char str[100]="hello";C. char str[]={'h','e','l','l','o'};D. char str[]={'hello'};2.定义了一维int型数组a[10]后,下面错误的引用是___A. a[0]=1;B. a[10]=2;C. a[0]=5*2;D. a[1]=a[2]*a[0];3.下面的二维数组初始化语句中,正确的是____A. float b[2][2]={0.1,0.2,0.3,0.4};B. int a[][]={{1,2},{3,4}};C. int a[2][]= {{1,2},{3,4}};D. float a[2][2]={0};4.引用数组元素时,数组下标可以是____A. 整型常量B. 整型变量C. 整型表达式D. 以上均可5.定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为____A. 24B. 25C. 18D. 176.下列初始化字符数组的语句中,正确的是____A. char str[5]="hello";B. char str[]={'h','e','l','l','o','\0'};C. char str[5]={"hi"};D. char str[100]="";7.给出下列代码,则数组初始化中哪项是不正确的?byte[]array1,array2[];byte array3[][];byte [][]array4;A.array2 = array1 B.array2=array3C.array2=array4 D.array3=array48.下面程序的运行结果是____main() {int x=30;int[] numbers=new int[x];x=60;System.out.println(numbers.length);}A. 60B. 20C. 30D. 509.下面不是创建数组的正确语句A.float f[][]=new float[6][6];B.float f[]=new float[6];C.float f[][]=new float[][6];D.float[][]f=new float[6][];10.下列关于Java语言的数组描述中,错误的是()。
字符串例题
以下是一些与字符串相关字符串例题:
1.编写一个函数,将字符串中的所有字母转换为大写。
2.编写一个函数,将字符串中的所有字母转换为小写。
3.编写一个函数,判断字符串是否为回文字符串。
4.编写一个函数,将字符串中的所有单词首字母转换为大写。
5.编写一个函数,将字符串中的所有单词逆序排列。
6.编写一个函数,将字符串中的所有单词反转。
7.编写一个函数,统计字符串中出现的字符频率。
8.编写一个函数,统计字符串中出现的单词频率。
9.编写一个函数,将字符串中的所有连续重复字符替换为单个字符。
10.编写一个函数,将字符串中的所有连续空格替换为单个空格。
请注意,这些练习题只是示例,实际上还有很多其他的字符串相关的问题可以进行练习和探索。
【关键字】精品第四章串一、选择题1.下面关于串的的叙述中,哪一个是不正确的?()(2 分)A.串是字符的有限序列B.空串是由空格构成的串C.模式匹配是串的一种重要运算D.串既可以采用顺序保存,也可以采用链式保存2 若串S1=‘ABCDEFG’, S2=‘ ,S3=‘###’,S4=‘,执行concat(replace(S1,substr(S1,length(S2),length(S3)),S3),substr(S4,index(S2,‘),length(S2))) 其结果为()(7 分)A.ABC###G0123 B.ABCD###.ABC###G2345 D.ABC###2345E.ABC###G.ABCD###.ABC###012343.设有两个串p 和q,其中q 是p 的子串,求q 在p 中首次出现的位置的算法称为()A.求子串B.联接C.匹配D.求串长(2 分)4.已知串S=‘aaab’,其Next 数组值为()。
(2 分)A.0123 B..1231 D.12115.串‘ababaaababaa’ 的next 数组为()。
A.0 B..0 D.023456.字符串‘ababaabab’ 的nextval 为()A.(0,1,0,1,04,1,0,1) B.(0,1,0,1,0,2,1,0,1)C.(0,1,0,1,0,0,0,1,1) D.(0,1,0,1,0,1,0,1,1 )(2 分)7.模式串t=‘abcaabbcabcaabdab’,该模式串的next 数组的值为(),nextval 数组的值为()。
A.0 1 1 1 2 2 1 1 1 2 3 4 5 6 7 1 2 B.0 1 1 1 2 1 2 1 1 2 3 4 5 6 1 1 2C.0 1 1 1 0 0 1 3 1 0 1 1 0 0 7 0 1 D.0 1 1 1 2 2 3 1 1 2 3 4 5 6 7 1 2E.0 1 1 0 0 1 1 1 0 1 1 0 0 1 7 0 .0 1 1 0 2 1 3 1 0 1 1 0 2 1 7 0 1(2 分)8.若串S=’software’,其子串的数目是()。
班级学号姓名分数
实验九字符数组、字符串
实验目的:
1、掌握字符数组的定义及数组元素的引用方法。
2、掌握字符数组的赋值、输入输出方法。
3、掌握字符串数据的处理方法。
4、掌握与字符数组有关的基本算法的程序设计。
5、能够应用字符数组进行综合程序设计。
实验内容:
1、输入一行字符,统计其中有多少个单词,单词之间用空格分开。
P165
2、统计出一行字符串中各元音字母的个数(大小写不区分)。
提示:首先从键盘接收一行字符串存放在字符数组中,然后逐个字符判断是否是元音字母,如果是,则数量加1。
3、有一篇文章,共有3行文字,每行有80个字符。
要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。
提示:可以定义二维字符数组str,大小为3×80,每行存放一个字符串,可以把str[0]、str[1]、str[2]看作3个一维字符组,用gets函数分别读入3个字符串,赋给3个一维字符数组。
然后逐个字符判断是哪一类,相应数量值加1。
友情提示:部分文档来自网络整理,供您参考!文档可复制、编制,期待您的好评与关注!。
字符串的拼接练习题一、基础题1. 将字符串 "Hello" 和 "World" 拼接成 "HelloWorld"。
2. 将字符串 "Python" 和 "Java" 拼接成 "PythonJava"。
4. 将字符串 "编程" 和 "语言" 拼接成 "编程语言"。
5. 将字符串 "123" 和 "456" 拼接成 "56"。
二、进阶题1. 将字符串 "Hello" 和数字 123 拼接成 "Hello123"。
2. 将字符串 "Python" 和特殊字符 "" 拼接成 "Python"。
4. 将字符串 "编程" 和空格 " " 拼接成 "编程 "。
5. 将字符串 "abc" 和换行符 "\n" 拼接成 "abc\n"。
三、综合题1. 将字符串 "Today" 和日期 "20210815" 拼接成"Today20210815"。
2. 将字符串 "姓名:" 和 "" 拼接成 "姓名:"。
3. 将字符串 "总价:" 和数字 99.99 拼接成 "总价:99.99"。
5. 将字符串 "文件名:" 和 "document.txt" 拼接成 "文件名:document.txt"。
字符串习题
要求:独立完成。
做完这些题目以后,以word格式文件发到网站
改错题目在原题上直接改,并且用加粗加红字体方式明显标出
编程题目直接将代码粘贴在题目后面
注意排版格式,可用VC的Alt+F8功能格式化文本
发送文件名格式学号+姓名
在周日之前提交,若错过时间发至邮箱(*********************)
1.用调试程序的方法找出下列程序的错误:
输入一个以回车结束的字符串(少于80个字符),将它的内容逆序输出。
如“ABCD”输出为“DCBA”。
源程序如下:
#include <stdio.h>
int main( )
{
int i, k, temp;
char str[81];
printf("input a string: ");
i = 0;
while((str[i] = getchar( )) != '\n')
i++;
str[i] = '\0';
k = i - 1;
for(i = 0; i < =(k-1)/2; i++){ /* 调试时设置断点*/
temp = str[i];
str[i] = str[k-i];
str[k-i] = temp;
} /* 调试时设置断点*/
for(i = 0; str[i] != '\0'; i++)
putchar(str[i]);
return 0;
}
2.输入一个字符,再输入一个以回车结束的字符串(少于80个字符),在字符串中查找该字符。
如果找到,则输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出“Not
Found”。
#include <stdio.h>
int main( )
{
int i, k, temp;
char str[81],ch,ch1;
printf("输入一个字符:\n");
scanf("%c%c",&ch,&ch1); /*ch1在这里是吸收回车键*/
printf("input a string: ");
i = 0;
while((str[i] = getchar( )) != '\n')
i++;
for(i=0;str[i]!='\0';i++)
{if(str[i]==ch)
{k=i;temp=1;}
}
if(temp==1)
printf( "这个字符最大的下标是:%d",k);
else
printf("NOT FOUND");
}
3.输入一个以回车结束的字符串(少于80个字符),统计并输出其中大写辅音字母的个数(大写辅音字母:除A、E、I、O、U以外的大写字母)。
#include <stdio.h>
int main( )
{
int i, k=0;
char str[81];
printf("input a string: ");
i=0;
while((str[i] = getchar( )) != '\n')
i++;
for(i=0;str[i]!='\0';i++)
if(str[i]>='A'&&str[i]<='Z')
if(str[i]=='A'||str[i]=='E'||str[i]=='I'||str[i]=='O'||str[i]=='U')
continue;
else k++;
printf("字符串中的大写辅音字符有:%d个",k);
}
4. 输入一个以回车结束的字符串(少于80个字符),将其中的大写字母用下面列出的对应大写字母替换,其余字符不变,输出替换后的字符串。
原字符对应字母
A―――>Z
B―――>Y
C―――>X
D―――>W
…………
X―――>C
Y―――>B
Z―――>A
#include <stdio.h>
int main( )
{
int i, n;
char str[81];
printf("input a string: ");
i=0;
while((str[i] = getchar( )) != '\n')
i++;
for(i=0;str[i]!='\0';i++)
if(str[i]>='A'&&str[i]<='Z')
{n=str[i]-'A';
str[i]=(str[i]+25-n*2);}
printf("变换后的字符串是:%s\n",str);
}
5. 输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。
6. 用调试程序的方法找出下列程序的错误:
输入一个以回车结束的字符串(少于80个字符),把字符串中的所有数字字符(0~9)转换为整数,去掉其他字符。
例如,字符串“3a56bc”转换为整数后是356。
源程序如下:
#include <stdio.h>
#include <string.h>
int main(void)
{
int i,s=0;
char str[80];
i = 0;
while((str[i] = getchar( )) != '\n')
i++;
str[i] = '\0';
for(i = 0;str[i]!='\0'; i++)
if(str[i] >= '0' || str[i] <= '9')
s = s * 10 + str[i]-'0';
printf("%d",s);
return 0;
}。