更多"【说明】 字符串在程序设计中扮演着重要角色。现需要设计字符串基类st"的相关试题:
[简答题]有n个字符的字符串,判断字符串是否对称。如xyzzyx和xyzyx都是中心对称的字符串。字符串放在单链、表中,并实现利用栈的入栈和出栈完成判断。
[简答题]【说明】StringEditor类的功能是:已知一个字符串,返回将字符串中的非字母字符都删除后的字符串。
public (1)
public static String removeNonLetters( (2) )
StringBuffer aBuffer= (3) ;
char aCharacter;
for(int i=0; i<original.length( );i++)
aCharacter= (4) ;
if(Character.isLetter(aCharacter))
aBuffer.append( (5) );
return new String(aBuffer);
public class StringEditorTester
public static void main(String args[])
String original="Hi!, My Name is Mark, 234I think you are my classmate!!";
System.out.println(StringEditor.removeNonLetters(original));
[简答题]常用字符串函数strcat(s1,s2)可将字符串s2添加到字符串s1的末端,但其使用必须保证字符串s1足够大,以便保存它自己的内容和字符串s2中的内容。请编写一个函数char*append(char*s1,char*s2),其可将字符串s2添加到字符串s1的末端,而且不受s1空间大小的限制。请利用常用字符串函数实现。
常用字符串函数说明:
strcpy(to,form):将form字符串复制到to字符串;
strcat(s1,s2):将字符串s2添加到字符串s1的末端,但必须保证字符串s1足够大;
strlen(s):返回字符串s的长度;
注意:部分源程序已存在文件test4_2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数append的花括号中填写若干语句。
输出结果如下:
this is a string.
文件test4_2.cpp的内容如下:
#include<iostream.h>
#include<string.h>
char *append(char *s1,char *s2)
void main( )
char *s,*s1,*s2;
s1="this is ";
s2=",a string.";
s=append(s1,s2);
cout<<s<<endl;
[简答题]有一个字符串,包含n个字符。写一个函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。要求在主函数中输入字符串及m值并输出复制结果。
[简答题]有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。
#include<iostream>
using namespace std;
void copystr(______)
int n=0;
while(n<m-1)
n++;
p1++;
while(*p1!=’/0’)
*p2=*p1;
p1++;
p2++;
*p2=’/0’;
void main( )
int m;
char str1[20],str2[20];
cout<<"输入字符串1:";
______
cout<<"从第m个字符开始复制,请输入m:";
cin>>m;
if(strlen(str1)<m)
cout<<"输入超过str1的长度"<<endl;
else
copystr(str1,str2,m);
cout<<"复制的字符串是:"<<str2<<endl;
[填空题]下列程序能将字符串s1中的所有与字符串str1相同的子串替换成字符串sb2,并将替换后的新串存于字符数组s2中。
#include<stdio. h>
void replace(s1,s2,str1,str2)
char *s1,*s2,*str1,*str2;
char *t0,*t1,*t2,*x,*y;
x=s1;y=s2;
while( 【8】 )
for(t0=s1,t1=str1; ((*t1!=’/O’&& 【9】 ;t0++,t1++);
if(*t1!=’/0’) *s2++= 【10】 ;
else
for(t1=str2;*t1!=’/0’;) *s2++= 【11】 ;
【12】 ;
*s2=’/0’;
main ( )
static char s1[]="abcdef ababcd abab.",s2125];
replace (s1, s2, "abc", "XYZ");
printf("%s/n",s2);
[简答题]编写一个函数,输入n个字符串,串与串之间以回车键分隔,找出最短字符串中第一个字符串,传回该串地址(用一个新串“*”作为结束输入的标志)。
注意:部分源程序已给出。
请勿改动主函数main和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#include<string.h>
#include<conio.h>
char*fun(char(*s)[100],int num)
main( )
char str[10][100],*min;
int n,i=0;
FILE*out:printf("input strings with’*’asend:");
gets(str[i]);
strcpy(str[3],"some");
strcpy(str[4],"tool!";
fprintf(out,"%s",fun(str,5));
puts(str[i]);
while(!strcmp(str[i],"*")==0)
i++;
gets(str[i]);
puts(str[i]);
n=1;
min=fun(str,n);
printf("/nmin=%s/n",min);
out=open("outfile.dat","w");
strepy(str[0],"just,");
strcpy(str[1],"a");
strcpy(str[2],"test");
fclose(out);
[简答题]【说明】
本程序可以将字符串s1中出现的所有s2子串替换成s3,形成一个新串,但不破坏字符串s1。
【代码】
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char*replace(char *s1, char *s2,char *s3)
{ char *p, *q, *r, *s; int |2,|3, i=0;
|2=strlen(s2);
|3=strlen(s3);
p=s1;
while((p=strstr(p,s2))!=NULL)
{ i++; /* 统计s2串出现的次数*/
(1) ;
}
i= (2) ;
s=r=(char*)malloc(i); /*分配动态内存存放新字符串*/
p=s1;
while(1)
{ q=strstr(p, s2); /* s2串是否在s1中出现,q是首次出现的位置*/
if(q!=NULL)
{ i=q-p;
(3) ;
r+=i;
(4) ;
r+=|3;
p=q+|2; /*将指向s1串的指针移到s2子串出现的位置后,
为下一次循环做好准备*/
}
else /*q为空,表示剩余的s1串中已经没有s2*/
{ (5) ;
break; /*终止循环*/
}
}
return(s); /*返回指向所形成的新串的指针*/
}
void main( )
{ char *a="sabcababde", *b="ab", *c="efg", *d;
d=replace(a, b, c); printf("result=%s/n", d); free(d);
}
[简答题]请编制程序,其功能为:将一个字符串中连续相同的字符仅用一个字符代替,生成一个新的字符串。字符串以00H结束,长度不超过20个字节。
例如:
原字符串为:4EH,4EH,4EH,42H,1AH,31H,31H,00H:
新字符串为:4EH,42H,1AH,31H,00H
部分程序已经给出,其中原始数据由LOAD过程从文件INPUT1. DAT中读入从SOURCE开始的内存单元,运算结果要求从RESULT开始存放,由SAVE过程保存到OUTPUT1.DAT文件中。请在BEGIN和END 之间补充一段源程序,完成要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终产生运行结果。
部分程序如下:
; PROG1. ASM
EXTRN LOAD:FAR,SAVE:FAR
LEN EQU 20
N EQU 10
DSEG SEGMENT
SOURCE DW N DUP ( )
RESULT DW N DUP (0)
NAME0 DB ’INPUT1.DAT’, 0
NAME1 DB ’OUTPUT1.DAT’,0
DSEG ENDS
SSEG SEGMENT STACK
DB 256 DUP ( )
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG;SS:SSEG
START PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DSEG
MOV DS,AX
MOV ES,AX
LEA DX,SOURCE
LEA SI,NAME0
MOV CX,N
CALL LOAD
; *** BEGIN ***
…………
…………
…………
; *** END ***
[简答题][说明]
这是一个修改字符串的题目,此题中将字符串“hello,I am not a student,I do not like computer!”中的"not"去掉,并在Web页中显示。当离开此Web页时,将自动启动收藏夹。
[HTMI 文本]
<html>
<!--省略部分为HTML 框-->
(1) //JavaScript 区域开始标识
<!-- //HTML 的注释符
vara="hello,I am not a student,I do not like computer!”;
//定义变量,并赋初值
var b=0
var C="";
if(docurment.all) // 如果是IE浏览器,则执行花括弧内的语句,否则弹出一个警告对
//话框,在对话框中显示“对不起,此Web页无法显示”
while( (2) ) //查找字符串a中是否有not,如果有则将字符串a中的not,去掉,
//然后赋给变量c。
(3) =a.substring(b,a.index Of("not",b))
b+=a.indexOf("not",b)+4:
c+=a.substring( (4) ,a.Length);
window.alen(“单击确定显示修改后的字符串”); //弹出一个警告对话框,在对话框中显示
//“单击确定显示修改后的字符串”
document.write("The final string is:<br>)": //在Web页内输出的字符串,“The final
//string is,并加回车符
document.write(c+"<br>"); //在Web页
[简答题][说明]
这是一个修改字符串的题目,此题中将字符串“hello,I am not a student,I do not likecomputer!”中的“not”去掉,并在Web页中显示。当离开此Web页时,将自动启动收藏夹。
[HTML 文本]
<html>
<!--省略部分为HTML框-->
(1) //JavaScript区域开始标识
<!-- //HTML的注释符
vay a="hello,I am not a student,I do not like computer!" ;
//定义变量,并赋初值
vay b=0;
vayc=" ";
if(docurment.all){ //如果是IE浏览器,则执行花括弧内的语句,否则弹出一个警告对
//话框,在对话框中显示“对不起,此Web页无法显示”
while( (2) ){ //查找字符串a中是否有not,如果有则将字符串a中的not,去掉,
//然后赋给变量c。
(3) =a.substring(b,a.indexOf("not",b))
b+=a.indexOf("not",b)+4;
}
c+=a.substring( (4) ),a.length);
window.alert(“单击确定显示修改后的字符串”); //弹出一个警告对话框,在对话框中显示
//“单击确定显示修改后的字符串”
document.write("The final string is:<br>)";//在Web页内输出的字符串,“The final
//string is,并加回车符
document.write(c+"<br>"); //在Web页内输出修改后的字符串,并加回车
}
else
window.alert(“对不起,此Web页无法显示”)
functio
[简答题]编制程序,输入一个字符串,其中只含有英文字母和数字字符,判断该字符串是否是回文,并将该字符串输入文件test5.txt中。
[填空题]以下函数将b字符串连接到a字符串的后面,并返回a中新字符串的长度。
strcen(char aC), char b[])
{ int num=0,n=0;
while(*(a+num)!= 【14】 ) num++;
while(b[n]){*(a+num)=b[n]; num++; 【15】 ;)
return(num);
}
[填空题]以下函数 sstrcat( )的功能是实现字符串的连接,即将 t 所指字符串复制到 s 所指 字符串的尾部。例如:s 所指字符串为 abcd,t 所指字符串为 efgh,函数调用后
s 所指字符串为 abcdefgh。请填空。
#include
void sstrcat(char *s,char *t)
{ int n;
n=strlen(s);
while(*(s+n)=_________){s++; t++;}
}