C++ 连接两个尾部不重复字符串
Posted LIVE_Windstorm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 连接两个尾部不重复字符串相关的知识,希望对你有一定的参考价值。
#include "iostream" #include "string" using namespace std; string delRepeat(string head,string tail) for (int j = 1; j < tail.size(); ++j) if(head.substr(head.size()-j).compare(tail.substr(0,j))==0) // 删除重复的部分 tail.erase(0,j); j=1; head=head+tail; return head; int main() // 两个字符串 string a="abababab"; string b="abababac"; // 删除a字符串以b字符串尾部重复的字符串 cout<<delRepeat(a,b); return 0;
c++的程序设计问题 选修课程根本不会啊
1.定义两个字符数组s1、s2,并用赋初值的方法把两个字符串”Computer”和”Language” 分别存放到s1、s2中,不用库函数strcat( ),把s2连接到s1的尾部,然后用%s格式输出连接后的字符串s1。
编程思路:用一重循环逐个判别s1中的元素在何处出现’\0’。再把s2连接到s1出现’\0’开始的位置,这需要用另一个一重循环。注意最后在s1尾部加’\0’。
2.用赋初值的方法把字符串” C is a general purpose, procedural, imperative computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system.” 存放到字符数组s中,编程统计其中的大写字母、小写字母、数字、空格、逗号的个数。
编程思路:用一重while循环,循环控制条件为while(s[i++]!= ’\0’)。在循环体内用5个变量upper、lower、digit、space、comma分别记录大写字母、小写字母、数字、空格、逗号的个数。进入循环前6个变量的初值都为0。
3.试从主函数输入10个数据到数组中,编写对偶数项求和的子函数,它将计算结果返回给主函数,由主函数输出。
注意应编写两个函数。主函数:完成数据输入,输入的数据采用数组来储存。调用求和子函数,并通过函数参数把数组的值传递给它。子函数:采用循环求出数组中偶数项的和,并将结果返回给主函数;该函数应定义成具有返回值的函数。
4.编写一个判断素数的程序,其中主函数用于完成输入一个整数并给出判断结果,单独编写一个函数用于判断其参数是否为素数,其返回值为1表示为素数,为0表示为非素数。
注意应编写两个函数。主函数:完成数据输入,并显示输入的数是否为素数。输入的数作为函数参数传递给子函数。子函数:采用循环判断其形参是否为一个素数,是则返回1给主函数,否则返回0。
编程思路:判断一个数n是否为素数的方法有多种:可以分别用n除以从2到n-1、n/2、sqrt(n),看是否能被整除。
5.输入三个整数,按由小到大的顺序输出。(要求使用指针来排序输出)
编程思路:先定义三个整型变量和三个指向整型数据的指针变量pi(i=1,2,3),然后用这三个指针分别指向三个整型变量,输入三个整型变量的值,采用*pi去比较大小和输出。
6.输入十个整数,放在数组list中,然后用指针法从后向前输出该数组中的整数。
编程思路:定义int *p,list[10];
令p指向数组的最后一个元素:p=list+9; 或者p=&list[0]+9;
采用循环10次,每次输出*p,然后p--,即前移一个元素。
9.编写一个函数,它能对一个字符串(“I am a student”)测出长度,要求函数的形参是一个指针变量,函数返回值是字符串的长度(长度不包含字符串的结束标志)。
编程思路:采用数组和循环来实现,用字符串结束标志‘\0’来控制结束。注意要自己编写一个函数,不能采用strlen( )函数。
10.编一个函数cstrcmp实现两个字符串的比较,具体为
int cstrcmp(char *p1, char *p2)
p1,p2分别指向字符串s1,s2;若s1=s2则函数返回0;若s1>s2,则函数返回1;若s1<s2,则函数返回-1。声明字符串s1,s2时对其进行初始化。
编程思路:从第一个字符开始,令指针p1,p2指向两个字符串的对应字符,逐个比较其大小:若两个字符串均已经结束,则返回0;
若相同,则两个指针同时后移,指向下一个字符;
若不同,则*p1>*p2返回1, *p1<*p2返回-1。
#include<string.h>
#define P printf
#define MIMA "111"
#define PBT P("%-10s%-12s%-6s%-6s%-13s%-20s\n\n","学号","姓名","性别","年龄"," 手机","住址")
/* 记录标题输出 */
#define PJL P("%-10s%-12s%-6c%-6d%-13s%-20s\n\n",s[i].XueHao,s[i].XingMing,s[i].XingBie,s[i].NianLing,s[i].ShouJi,s[i].ZhuZhi)
/* 记录输出 */
#define N 20
typedef struct
char XueHao[12]; /* 学号 */
char XingMing[15]; /* 姓名 */
char XingBie; /*性别*/
int NianLing; /* 年龄 */
char ShouJi[12]; /* 手机 */
char ZhuZhi[30]; /* 住址 */
NODE;
void ShuRu(NODE s[]);
void Chaxun(NODE s[]);
void Chaxun_QuanBu(NODE s[]);
void Chaxun_BianHao(NODE s[]);
void Chaxun_XueHao(NODE s[]);
void Chaxun_XingMing(NODE s[]);
void Chaxun_NianLing(NODE s[]);
void Chaxun_ShouJi(NODE s[]);
int daoru(NODE s[]);
void Cunchu(NODE s[]);
void Shanchu(NODE s[]);
void Mimashuru(char[],int);
char WenJian[10];
int t=0;
NODE s[N];
void main()
char c;
int i;
char MiMa[10];
for(i=1;i<=3;i++)
Mimashuru(MiMa,i);
if(strcmp(MiMa,MIMA)!=0)continue;
P("\n\n\t\t\t 密码输入正确,请输入文件名 : ");
gets(WenJian);
t=daoru(s)-1;
clrscr();
P("\n\n\t\t\t 欢迎进入我的个性化通讯录");
P("\n\n\t\t\t\t\t\t按任意键继续。。 ");
getch();
for(;;)
clrscr();
P("\n\n\n\n\n");
P("\t\t\t ****************************\n");
P("\t\t\t * *\n");
P("\t\t\t * 我的个性化通信录 *\n");
P("\t\t\t * *\n");
P("\t\t\t * 主菜单 *\n");
P("\t\t\t * *\n");
P("\t\t\t * 增加信息----1 *\n");
P("\t\t\t * 删除信息----2 *\n");
P("\t\t\t * 查询信息----3 *\n");
P("\t\t\t * 退出系统----0 *\n");
P("\t\t\t * 储 存----9 *\n");
P("\t\t\t * *\n");
P("\t\t\t ****************************\n\n");
P("\t\t\t 请选择你想要的操作---- ? ");
c=getch();
if (c=='0') break;
switch(c)
case '1':ShuRu(s);break;
case '2':Shanchu(s);break;
case '3':Chaxun(s);break;
case '9':Cunchu(s);break;
i=4;
Cunchu(s);
void Mimashuru(char a[],int n) /*****密码输入*****/
int j;
clrscr();
switch(n)
case 1:P("\n\n\n\n\t\t\t 密码(以“0”结束)=? ");
break;
case 2:P("\n\n\n\n\t 密码错误,请重新输入密码(以“0”结束)=? ");
break;
case 3:P("\n\n\n\n\t 密码错误,请最后一次输入密码(以“0”结束)=? ");
for(j=0;;j++)
a[j]=getch();
if(a[j]=='0') a[j]='\0';break;
else putchar('*');
int daoru(NODE s[]) /**** 导入 ****/
int i;
FILE *fp;
if((fp=fopen(WenJian,"rb"))==NULL)return 0;
for(i=0;!feof(fp);i++)
fread(&s[i],sizeof(NODE),1,fp);
fclose(fp);
return i;
void Cunchu(NODE s[]) /***** 存盘 *****/
int i;
FILE *fp;
if((fp=fopen(WenJian,"wb"))==NULL)P("Save Error!!!");getch();exit(1);
for(i=0;i<t;i++)
fwrite(&s[i],sizeof(NODE),1,fp);
fclose(fp);
void ShuRu(NODE s[]) /*****输入****/
float x;
char c;
int i,n;
for(;;)
clrscr();
P("\n\n\n\n\n\n");
P("\t\t\t **********************\n");
P("\t\t\t * *\n");
P("\t\t\t * *\n");
P("\t\t\t * 输入信息----1 *\n");
P("\t\t\t * 增加信息----2 *\n");
P("\t\t\t * 返 回----0 *\n");
P("\t\t\t * *\n");
P("\t\t\t **********************\n");
P("\n\t\t\t 请选择你想要的操作---- ? ");
c=getch();
if (c=='0') break;
if(c=='1')t=0;
clrscr();
for(i=t;;i++)
P("\n\n学号=? ");
scanf("%s",s[i].XueHao);
P(" 姓名=? "); scanf("%s",s[i].XingMing);
getchar();
P(" 性别=? "); scanf("%c",&s[i].XingBie);
P(" 年龄=? "); scanf("%d",&s[i].NianLing);
P(" 手机=? "); scanf("%s",s[i].ShouJi);
P(" 住址=? "); scanf("%s",s[i].ZhuZhi);
t++;
P("输入1继续,输入0返回!");
scanf("%d",&n);
if(n==0) break;
void Chaxun(NODE s[]) /* 查询 */
char c;
for(;;)
clrscr();
P("\n\n\n\n\n\n");
P("\t\t\t ***************************\n");
P("\t\t\t * *\n");
P("\t\t\t * *\n");
P("\t\t\t * 查询菜单 *\n");
P("\t\t\t * *\n");
P("\t\t\t * *\n");
P("\t\t\t * 按编号查询---------1 *\n");
P("\t\t\t * 按学号查询---------2 *\n");
P("\t\t\t * 按姓名查询---------3 *\n");
P("\t\t\t * 按年龄查询---------4 *\n");
P("\t\t\t * 按手机查询---------5 *\n");
P("\t\t\t * 信息全显示---------9 *\n");
P("\t\t\t * 返 回---------0 *\n");
P("\t\t\t * *\n");
P("\t\t\t * *\n");
P("\t\t\t * *************************\n");
P("\n\t\t\t 请选择你想要的操作---- ? ");
c=getch();
if(c=='0')break;
switch(c)
case '1':Chaxun_BianHao(s);break;
case '2':Chaxun_XueHao(s);break;
case '3':Chaxun_XingMing(s);break;
case '4':Chaxun_NianLing(s);break;
case '5':Chaxun_ShouJi(s);break;
case '9':Chaxun_QuanBu(s);break;
void Chaxun_BianHao(NODE s[])
int i,n1,n2;
clrscr();
P("\n\n\n\t\t\t 请输入起始记录号: ");
scanf("%d",&n1);
P("\n\n\n\t\t\t 请输入结束记录号: ");
scanf("%d",&n2);
clrscr();
PBT;
for(i=0;i<=t;i++)
if((i+1)>=n1&&(i+1)<=n2) PJL;
else
P("未能找到符合条件的记录");
P("\n\n 按任一键继续....");
getch();
void Chaxun_XueHao(NODE s[])
int i;
char nl1[20];
clrscr();
P("\n\n\n\n\t\t请输入学号:");
gets(nl1);
clrscr();
PBT;
for(i=0;i<t;i++)
if(strcmp(s[i].XueHao,nl1)==0) PJL;
P("\n\n按任一键继续...");
getch();
void Chaxun_XingMing(NODE s[])
int i;
char nl1[20];
clrscr();
P("\n\n\n\n\t\t请输入姓名:");
gets(nl1);
clrscr();
PBT;
for(i=0;i<t;i++)
if(strcmp(s[i].XingMing,nl1)==0) PJL;
P("\n\n按任一键继续...");
getch();
void Chaxun_NianLing(NODE s[])
int i;
int nl1,nl2;
clrscr();
P("\n\n\n\n\t\t 请输入最低年龄:");
scanf("%d",&nl1);
P("\n\t\t 请输入最高年龄:");
scanf("%d",&nl2);
clrscr();
PBT;
for(i=0;i<t;i++)
if(s[i].NianLing>=nl1&&s[i].NianLing<=nl2) PJL;
P("\n\n按任一键继续...");
getch();
void Chaxun_ShouJi(NODE s[])
int i;
char n1[15];
clrscr();
P("\n\n\n\n\t\t请输入电话:");
scanf("%s",&n1);
clrscr();
PBT;
for(i=0;i<t;i++)
if(strcmp(s[i].ShouJi,n1)==0) PJL;
P("\n\n按任一键继续...");
getch();
void Chaxun_QuanBu(NODE s[])
int i;
clrscr();
PBT;
for(i=0;i<t;i++)
PJL;
P("\n\n按任一键继续...");
getch();
void Shanchu() /***删除***/
int i;
char name[10],choice[2];
clrscr();
printf("\n");
printf("请正确输入你要删除的姓名:\n");
scanf("%s",name);
printf("确定删除?(Y/N)\n");
scanf("%s",choice);
if(strcmp(choice,"Y")==0 || strcmp(choice,"y")==0)
for(i=0;i<t;i++)
if(strcmp(s[i].XingMing,name)==0)
for(i=i;i<t;i++)
strcpy(s[i].XingMing,s[i+1].XingMing);
strcpy(s[i].XueHao,s[i+1].XueHao);
strcpy(s[i].ShouJi,s[i+1].ShouJi);
strcpy(s[i].ZhuZhi,s[i+1].ZhuZhi);
s[i].XingBie=s[i+1].XingBie;
s[i].NianLing=s[i+1].NianLing;
t=t-1;
else
printf("按任意键返回\n");
getch();
return;
参考技术A 每个功能都会对应有一个函数,在MAIN函数中,选择某项功能时,就调用该功能函数。
另外,站长团上有产品团购,便宜有保证 参考技术B 看看谭浩强的书,他的书比较容易懂 参考技术C 可以凭借百度Hi提示我们
有机会可以解决你的问题
更进一步的要求也可以提示我们
c++面向对象编程:学生选课**(学生模块)
ES:\\3772EA5B9FD4BD602FFF440F00F146C3
参考技术D 才8 0分啊……
以上是关于C++ 连接两个尾部不重复字符串的主要内容,如果未能解决你的问题,请参考以下文章