用C++编程一个函数实现一个字符串是否包含另一个字符串?

作者&投稿:冯蕊 (若有异议请与网页底部的电邮联系)
用C语言编写一个程序查找一个字符串在另一个字符串中出现的次数怎么写?~

实现代码如下:
#include #include int main(){ char S[100],T[20]; char ch1,ch2; printf("请输入主字符串:
"); ch1=getchar(); int i=0; while(ch1!='
') { S[i]=ch1; i++; ch1=getchar(); } printf("请输入要筛选的字符串:
"); ch2=getchar(); int j=0; while(ch2!='
') { T[j]=ch2; j++; ch2=getchar(); } int m,n;//m为S的下标,n为T的下标 m=0; n=0; int num=0;//num用于记录选定单词出现的次数 while(m<=i&&n<=j) { if(S[m]==T[n]) { m++; n++; } else { m=m-n+1; n=0; } if(n==j) { num++; } } if(m==i+1) { printf("出现的次数是%d",num); }}代码二:
int strstr_cnt(const char *string ,const char *substring){ int i,j,k,count=0; for(i=0;string[i];i++) for(j=i,k=0;string[j]==substring[k];j++,k++) if(!substring[k+1]) count++; return(count);}

思路:先遍历字符串,如果找到该字符后,把后面的所有字符复制到另一个字符串。
例如:
#include #include int main (){char ch1[]="123456789",ch2[20],a='4';int i=0,j=0;while(ch1[i++]!=a);while(ch1[i]){ch2[j++]=ch1[i++];}ch2[j]='\0';puts(ch2);return 0;}/*输出:56789 */

char* strstr( const char* str1, const char*str2)不是又现成的方法吗 <string.h> 返回STR2中第一次出现STR1的位置

bool Isincluded(const char *lpszRes, const char *lpszDst)
{
const char *p1 = lpszRes;
const char *p2 = lpszDst;
int nResLen = strlen(lpszRes);
int nDesLen = strlen(lpszDst);
if(nResLen < nDesLen) return false;
while (p1 != lpszRes+nResLen)
{
int nLen = strlen(p1);
if (nLen < nDesLen) return false;
const char *p3 = p1;
p2 = lpszDst;
while (p3 != p1+nDesLen)
{
if(*p3 == *p2)
{
++p3;
++p2;
continue;
}
else
break;
}
if(p3 == p1+nDesLen)
return true;
++p1;
}
return false;
}
strlen 还是能用不??

bool Isincluded(const char *lpszRes, const char *lpszDst)
{
 const char *p1 = lpszRes;
 const char *p2 = lpszDst;
 int nResLen = strlen(lpszRes);
 int nDesLen = strlen(lpszDst);
 if(nResLen < nDesLen) return false;
 while (p1 != lpszRes+nResLen)
 {
  int nLen = strlen(p1);
  if (nLen < nDesLen) return false;
  const char *p3 = p1;
  p2 = lpszDst;
  while (p3 != p1+nDesLen)
  {
   if(*p3 == *p2)
   {
    ++p3;
    ++p2;
    continue;
   }
   else 
    break;
  }
  if(p3 == p1+nDesLen)
   return true;
  ++p1;
 }
 return false;
}
strlen


最好用字符数组来存放字符串
这样字符数组名就是这个字符串的指针了,指定位置就可以直接用指针加偏移量来确定
例如 char a[100]="fjalsdjflasjfljasdljf";
char b[100]="djdfoaegksdalgslj";
假设将字符串b插入到字符串a的第十位之后(插入的位置超过字符串a的长度就没有意义了)
首先为字符串b腾出空位
int len=strlen(b);
for(int i=0;i<len;i++)
{
*(a+10+len+i) = *(a+10+i);
}
然后将b插入到腾出来的空位即可
for(int j=0;j<len;j++)
{
*(a+10+j) = b[j];
}
这个是最原理的东西,如果你能理解这个,那么后两个for循环其实可以合并为一个,全部代码为
char a[100]="fjalsdjflasjfljasdljf";
char b[100]="djdfoaegksdalgslj";
int len=strlen(b);
for(int i=0;i<len;i++)
{
*(a+10+len+i) = a[10+i];
*(a+10+i) = b[i];
}


C语言 定义一个函数,可以求得一个int型数据32位中1的个数
include <stdio.h>int func(unsigned long x){ int countx = 0; while(x) { countx++; x = x&(x-1); } return countx;} int main(void) {unsigned long x;scanf("%lu",&x);printf("%d\\n",func(x));return 0;} ...

C语言编程:写一个函数,输入一行字符,将此字符串中最长的单词输出...
include <stdio.h> void main(){ int a,b,c;printf("请输入3个整数:");scanf("%d%d%d",&a,&b,&c);if((a>b)&& (a<c)|| (ac))printf("\\n d 为位于中间的数\\n",a);if((b>a)&& (b<c)|| (bc))printf("\\n d 为位于中间的数\\n",b);if((c>b)&& (c<a)|| ...

写一个函数修改数组中的数据,在主函数中调用它。(C语言)?
include<stdio.h> \/\/ 用于修改数组的函数 int change_array(int *num, int count){ int i,t;for(i = 0; i < count; i++){ t = num[i];num[i] = t + 1;} } int main(){ int i, b[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };\/\/ 调用函数 change_array(b...

C语言编程,写一个函数,使输入的一个字符串按反序存放,在主函数中输入和...
strcpy(string ,string )---把后1个复制后放入前一个字符串,空间要够 strcat(string ,string ) ---把后1个剪切后放入前一个字符串,空间要够 strcmp(string ,string )---比较2个字符串,0为相同,>0前1个大,<0后1个大 strlen(string )---字符串长度 ...

C语言编程,写一个函数,使输入的一个字符串按反序存放,在主函数中输入和...
reverse(s);\/\/调用反序函数 printf("New string: %s\\n", s);\/\/输出反序后的字符串 return 0;} void input(char st[]){ printf("Please enter string: ");gets(st);} \/\/反序函数 void reverse(char st[]){ int n=strlen(st);for (int i=0, j=n-1, t; i<(n\/2); t=st...

用C语言编程从键盘上输入10个数,写一个函数(主函数调用该函数),求出...
思路:定义一个函数int fun(int a[]),该函数通过传递的参数数组依次遍历,寻找最大值,最后返回最大值,主函数输入数组,调用该函数输出最大值。参考代码:include<stdio.h>#define n 10int fun(int a[]){\/\/求数组a的最大值函数int i,max=a[0];for(i=1;i<n;i++)if(max<a[i]) ...

C语言编程:写一个函数,输入一个16进制数,输出相应的10进制数。_百度知...
include<stdio.h> include<conio.h> include<string.h> define N 1000 char str[N];int a[N],b[N];int main(void){ void zsh();long ycl();int i,n;do{ printf("请输入一个十六进制数:\\n");scanf("%s",str);for(i=0,n=0;str[i]!='\\0';i++)if(str[i]<'0'||(str[...

c语言中函数是什么意思
在C语言中,函数是一段封装了特定功能的代码块,它可以进行独立的调用。函数通常会带有一定的输入参数,经过函数内部的处理和计算,最终返回一个结果。函数具有封装性,可以隐藏实现细节,而只向外部提供接口,从而可以更好地完成模块化编程。函数的使用不仅可以使代码更具可读性和可维护性,还可以提高代码...

c++编程题 编写一个函数max,用于比较三个整数大小,输出最大值,然后在...
include <iostream>using namespace std;int max(int a, int b, int c){ if(b>a) a=b; if(c>a) a=c; return a;}void main(void){ int a, b, c; cin>>a>>b>>c; cout<<"最大值为: "<<max(a, b, c)<<endl;} ...

c语言中一个函数由函数首部和什么两部分
c语言中一个函数由函数首部和函数体组成,函数体是编程语言中定义一个函数功能的所有代码组成的整体;函数头是指函数体之前的所有部分,应用于数学、程序设计领域,作用是给出了该函数的返回类型。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级...

嘉定区18578093235: c++编写函数实现一个字符串的逆序.在主函数中输入字符串,调用函数将字符串逆序,而后输出. -
望柿破伤: #include using namespace std; void rev(char s[]) {char *p,*q,c;for(p=s;*p;p++);for(q=s,--p;q<p;){c=*p;*p--=*q;*q++=c;} } int main() { char s[100];cin.getline(s,100);rev(s);cout<<s<<endl;return 0; }

嘉定区18578093235: 用c++编写个函数实现字符串的逆向输出… -
望柿破伤: #include <iostream.h> #include <string.h> #define LENGTH 80//反序一个字符串 void reverse(char s[]) {char c;int i,j;j = strlen(s) - 1;for(i = 0;i < j;i ++){c = s[i];s[i] = s[j];s[j] = c;j --;} } void output(char s[]) { cout<<"The string is reversed:"<<s...

嘉定区18578093235: c++中怎样编写一个函数把整型数字转换成字符串?? -
望柿破伤: #include<stdio.h>int main() {char str[100];char str1[100];memset(str,0,100);memset(str1,0,100);int a = 12345;int c = 0;int i;while(1) {str[c] = (a % 10) + '0'; // 模10得到最低位,+'0'变成字符c++;a = a / 10; // 除以10去掉已求出的最...

嘉定区18578093235: c++:编写一个函数,用于生成一个空字符串,其原形为:char *mystrspc(char *string,int n) -
望柿破伤: 在c++中空字符串的意思是,全部都是'\0'的串;'\0'这是一个转义字符,'\0'是C++中字符串的结尾标志,'\0'的ASCII是0; 我举个例子比如有个char型的一维字符数组它的每一个元素都是'\0',就是一个空字符串;

嘉定区18578093235: c++中如何自定义一个函数实现字符串链接?? -
望柿破伤: char *cat(char *a,char *b) { int x,i; x=strlen(a)+strlen(b); char *c=new char[x+1]; for(i=0;ic[i]=a[i]; for(i=strlen(a);ic[i]=b[i]; return c; } 如果长度有不用系统函数,可以定义长度为足够长 遇到'\0'时,结束

嘉定区18578093235: C++编程题:编写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度. -
望柿破伤: #include<stdio.h> #include<stdlib.h> #define N 1024 int Strlen(char* str) { int count = 0; while (*str != '\0') { count += 1; ++str; } return count; } void main() { char str[N]; char* p = str; printf("请输入str\n"); for (int i = 0, ch = '\0';ch != '\n'; ++i) { ch = ...

嘉定区18578093235: C++中创建一个函数,想让这个函数的返回值是一串字符. -
望柿破伤: 返回的时候要注意在函数里面要么动态分配内存(否则字符串局部变量返回是没有意义的,因为其生存周期已过就销毁),或者更简单的就是在代码前面就定义一个全局变量,然后返回的时候先给全局变量赋值再返回 另外就是根据一个日期判断星期几(实在是觉得蛋疼),windows的API函数不是用time(获取当前到距离1900年1月1日的秒数)以及localtime(将这个秒数转化为具体的一个时间结构体tm),还用enum完全没有意义,API函数里面星期定义是0代表星期天,0到6代表星期天到星期六,楼主可以用enum自己定义一个(意义不大),然后判断返回

嘉定区18578093235: 用c++设计一个函数,以参数方式输入一个字符串,返回该字符串的长度 -
望柿破伤: #include <string.h>#include <iostream.h>/* 将字符串倒置 输入为字符串str; 返回字符串的地址*/ char* reverse(char *str) { char tmp; int i,n; if (str == NULL) { return 0; } n=strlen(str)-1; for(i=0;i<n;i++,n--) { tmp = str[i]; str[i] = str[n]; str[n] = tmp; } return ...

嘉定区18578093235: c++题目,编写一个字符串整理函数void squeeze(char*s1,char*s2) -
望柿破伤: #includevoid squeeze(char *s1,char *s2); main() { char a[20],b[3]; printf("input a:\n"); gets(a); printf("input b:\n"); gets(b); squeeze(a,b); printf("output:\n"); puts(a); getch(); } void squeeze(char *s1, char *s2) { int i,j,k; char temp;k=0; while(s2[k]...

嘉定区18578093235: 用C++编写一个函数,求一个字符串的长度.要求使用指针变量实现. -
望柿破伤: 源程序如下: #include <iostream> using namespace std; size_t mystrlen(char *s)//求字符串长度函数 { int len = 0; char *p = s; while(*p++) len++; return len; } int main() { char s[1024]; printf("请输入字符串 : "); gets(s); printf("该字符串的长度为 : %d\n",mystrlen(s)); return 0; } VC++测试如下:

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网