字符串习题
字符串习题!9

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字符串及练习题

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其他操作。
python程序练习题(字符串)

minute =start%100
allminute =hour*60+minute+addminute
end_hour = allminute//60
end_minute = allminute%60
end = end_hour*100+end_minute
print("{:.0f}".format(end))
(1)
print('Hello World!')
(2)
print('Hello World')
print('HelloNew World')
(3)
#计算平均分
math,eng,comp = 87,72,93
aver=(87 +72+93) /3
print("math = 87, eng =72,comp= 93,average={:.0f}".format(aver))
h=hex(n)
print(b[2:],o[2:],h[2:])
(7)
#人名对话
Name =input()
print("{}同学".format(name))
print("{}".format(name[0]))
print("{}".format(name[1:]))
(8)
#求整数均值
a,b,c,d =input().split()
foot =int(ying)
inch =int((ying-foot)*12)
print("{:.0f} {:.0f}".format(foot,inch))
计算机二级C语言字符串习题答案

21 C
解析: char *s1=”abc”,即定义了一个指针变量s1,并且s1指向的是这个字符串的第一个元素,即指向了字符‘a’。同样的s2指向了字符‘1’。swap函数中的语句的功能是交换变量*x和*y两个变量的值,则最后输出的结果为s1所指的字符串的内容为:1bc,s2所指的字符串的内容为:a23。
2)j=2; p[i][j]!=’\0’,真值,(p[i][j]-‘0’)%2即:(‘9’-‘0’)%2为真值,num=10*3+9=39;j=j+2=5;
3) j=5; p[i][j]!=’\0’,假值。退出该循环语句。
7)i=6;i<7;p[i][0]==’T’为假值,n=2;i++。变量i的值为7;
8)i=7;i<7;假值。退出循环。
所以最后输出的是fun(str)即返回的就是n的值,即2.
23 A
解析:fun1函数中的(*q)++将指针q所指向的字符进行一次自加运算,所以输出结果为A.
p=&a[3],即变量p得到的是字符‘g’的首地址。
1) i=0,i<4真值,执行内循环。\
j=1;j<5真值,执行后的结果为p[0]=”aabdfg”,p[1]=”abc”.j++后,j=2;
j=2;j<5 真值,执行后的结果为p[0]= ”aabdfg”,p[2]=”abbd”, j++后,j=3;
(*q)++代表的是,先计算出*q的值,然后计算变量的自加。执行循环:
1)*q!=’\0’为真值,(*q)++得到的结果为h,q++,指向了字符‘r’.
C语言全国计算机二级等级考试教程第10章 字符串(章节带习题)

输出时直到遇第一 char str[ ]=“I love you!” , *p=str; 个‘\0‟结束输出。 字符指针变量 printf(“%s\n” , p); 字符数组名
输入项 字符指针变量
转去介绍
10.3 字符串的输入和输出
字符数组名
输入项
字符指针变量 当字符数组名作为输入项: char str[15]; scanf(“%s”,str); 在内存中的形式是: P R 输入形式为: PROGRAMMING<CR> O G R A M M I N Ga赋初值后的存储示意图
10.4 字符串数组
可以定义字符型指针数组并通过赋初值来构成一个类似的字符串数组。 例如:char *pa[3]={“a”, ”bb”, ”ccc”}; 定义了一个字符型指针数组,该数组中含有3个元素pa[0] 、pa[1]、 pa[2],且每一个 元素都是一个指向字符串的指针。
则在str中存入的只是字符串“APROGRAM”,而不是字符串“APROGRAM MING
10.3 字符串的输入和输出
10.3.3 调用gets、puts函数在终端输入或输出一行字符串
调用gets函数来输入字符串,例如: char str[15]; gets( str ); 在内存中的形式是: A P 若从键盘上依次输入: APROGRAM MING<CR> R O G R A M M I N G \0 \0
★ 两个字符串分别占有不同的存储空间。 ★ 指针变量pmark中的地址可以改变而指向另外一个长度 不同的字符串。
10.3 字符串的输入和输出
10.3.1 输入和输出字符串时的必要条件
输入和输出的格式说明符为 %s 对字符串输入输出时的必要条件: 字符串常量 输出项 字符数组名 printf(“%s\n” , ”I love you!”); char str[ ]=“I love you!”; printf(“%s\n” , str); I love you!
指针字符串练习题及答案

单项选择==================================================题号: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的初始化语句是_____。
第4章 字符串 习题参考答案

r=s;//r记住尾结点
L=L->next;//串中第一字符
while(L!=null)
{p=(char *)malloc(sizeof(char));
p->data=L->data;//赋值
p->next=r->next;//插入链表中
r->next=p;
r=p;//指向新的尾结点
L=L->next;}return s;}(3)判断两串相等
int StringEqual(LinkedString s, LinkedString q)
{//判断字符串的相等
LNode *p=s->next,*r=q->next;
while(p && r)
if(p->data==r->data)
{p=p->next; r=r->next;}
(4) Index(T,’a’)=3
(5) StringInsert(T,8,S)=’I︼am︼a︼goodstudent’
(6) Replace(T,SubString(T,8,7),’teacher’)=’I︼am︼a︼teacher’
4.3若串S1=‘ABCDEFG’,S2=‘98’,S3=‘###’,S4=‘012345’,执行concat(replace(S1,substr(S1,length(S2),length(S3)),S3),substr(S4,index(S2,‘8’),length(S2)))操作的结果是什么?
if(s==null)
{printf(“起始位置太大\n”); exit
(0);}
JAVA字符串及习题

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(\}}不。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
字符串习题
要求:独立完成。
做完这些题目以后,以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;
}。