用c语言编写一个程序计算字符串中值为x(x由键盘输入)的字符个数。

作者&投稿:镇纪 (若有异议请与网页底部的电邮联系)
求高手用C语言编写 计算某个字符串中子字符串的输入个数数,其中字符串由(scanf或gets函数输入)~

不多说了:
测试结果:
请输入母串:
xyxyxyzzzxyzzzxyxyxy
请输入要统计的子串:
xy
出现的个数为:7

正确代码:
#include"stdio.h"
#include "conio.h"
#include "stdio.h"
#include "math.h"
#include "string.h"


int result=0;
char pat[20];
char str[256];
int next[7];

void getNext(char pat[], int next[])
{
int j = 0;
int k = -1;
next[0] = -1;
while (pat[j])
{
if ( k == -1 || pat[j] == pat[k])
{
j++;
k++;
next[j] = k;
}
else
{
k = next[k];
}
}
}
int KMP(char *str, char*pat, int *next)
{
int i=0,j=0;
while(str[i])
{
if(pat[j]==0)
return i-j;
if(j==0 || str[i]==pat[j])
{
++i;
++j;
}else
j=next[j];
}
if(pat[j]==0)
return i-j;
return -1;
}

void strcopy(char a[],char b[],int k)
{
int count=0;
while(a[k]!='\0')
{
b[count]=a[k];
k++;
count++;
}
b[count]='\0';
}

int main(int argc, char* argv[])
{
int i,lenM,lenS,count=0,lastexit=0;
char strbak[256];
printf("请输入母串:
");
scanf("%s",str);
printf("请输入要统计的子串:
");
scanf("%s",pat);
lenM=strlen(str);
lenS=strlen(pat);

for(i=0;i<lenM;i++)
{
if(lastexit==1)
{
strcopy(str,strbak,i+lenS+result-1);
i=i+lenS+result-1;
}
else
{
strcopy(str,strbak,i);
}
getNext(pat,next);
result=KMP(strbak,pat,next);
if(result!=-1)
{
count++;
lastexit=1;
}
else
{
lastexit=0;
}
}
printf("出现的个数为:%d
",count);

getch();
return 0;
}

PS:不考虑
xxxxxxxxxxxx
与xx重复匹配的问题。要考虑的话,楼主可以把算法稍微改动一下。【字符串每次后移一个,取后面的全部进行匹配。】

匹配算法:KMP算法, 测试代码:Negamax原创!

楼主好运!

源程序代码如下:
#include "pch.h"
#define _CRT_SECURE_NO_WARNINGS//VS环境下需要,VC不需要
#include
int main()
{
char c = 0;//定义输入字符变量
int num_count = 0;//数字个数
int bigalp_count = 0;//大写字母个数
int littlealp_count = 0;//小写字母个数
int emp_count = 0;//空格个数
int els_count = 0;//其他字符个数
while((c = getchar()) != '
')//连续输入字符直到输入回车结束
{
if((c >= '0')&&(c <= '9'))//判断是否是数字
{
num_count ++ ;
}
else if ((c >= 'a') && (c <= 'z'))//判断是否是小写字母
{
littlealp_count++;
}
else if ((c >= 'A') && (c <= 'Z'))//判断是否是大写字母
{
bigalp_count++;
}
else if(c == ' ')//判断是否是空格
{
emp_count ++;
}
else //判断是否其他字符
{
els_count ++;
}
}
//输出个数统计值
printf("数字个数:%d
小写字母个数:%d
大写字母个数:%d
",num_count, littlealp_count, bigalp_count);
printf("空格个数:%d
其他字符个数:%d
", emp_count, els_count);
return 0;
}
程序运行结果如下:



扩展资料:
其他实现方法:
#include
#include //对空白字符的判断,调用了isspace()函数,所以要调用头文件
int main()
{
char str[20]; //这块对输入有所限制了
int num_count=0;
int space_count=0;
int other_count=0;
char *p=str;
gets(str); //接收字符串
while(*p)
{
if(*p>='0'&&*p<='9') {
num_count++;
}
else if(isspace(*p)) //用isspace函数来判断是不是空白字符
{
space_count++;
}
else
{
other_count++;
}
p++;
}
printf("num_count=%d
",num_count);
printf("space_count=%d
",space_count);
printf("other_count=%d
",other_count);
return 0;
}

#include <stdio.h>

int main(void)
{
char c[128];
int i = 0, sum = 0;

printf("请输入字符串\n");

do {
scanf("%c", &c[i]);
if (c[i] == 'x') sum++;
} while ('\n' != c[i++]);

printf("x的个数是%d\n", sum);

return 0;
}

运行结果:

请输入字符串
wo x ni de x
x的个数是2

#include "stdio.h"
void main()
{
int n=0, i;
char p[255],
x;
printf("Input string:"); //输入字符串
scanf("%s",&p);
printf("Find? ");
scanf("%s",&x);
for(i=0;p[i]!='\0';i++)
{
if(p[i]==x)
n++;
}
printf("%d",n);
}
Turbe C2.0调试通过
先输入一个字符串,回车,在输入要查找的字符,回车
希望能帮到你

C语言字符串的学习,输入指定字符串,并且计算字符串的位数




怎么用c语言编写一个小程序?
1、首先打开DEV C++软件,点击“新建源代码”,在编辑页面输入以下代码。2、因为题目要求我们先输入一个整数,所以在定义变量时,就应该将其定义为整数型,注意,在输入,输出函数中,整数型对应的是“%d”。3、接下来就要对输入的整数进行判断,在C语言中,if是判断语句,所以用它来对整数进行判断。if...

编写一个C语言程序?
include <stdio.h> int main() { int n, c = 0, num = 0;do { printf("请输入一个二位数n(80<=n<=99): ");scanf("%d", &n);}while (n < 80 || n > 99);int a[100];for (int i = 1; i <= n; i++)a[i] = 1;while (c < n - 1) { for (int i = ...

用C语言编写一个简单程序,有哪些步骤,可以举一个例子详细讲解下吗?_百 ...
\/\/接下来需要写一个main函数,这也是c语言程序里必不可少的一个函数,叫主函数,他是整个程序的入口函数,程序所有的功能实现都要在这个函数中体现。但是这个函数有且仅有一个 int main(){ \/\/这是main函数的函数体,要实现什么功能,就把实现功能的语句写到这里面 \/\/比如我要实现打印HelloWorld字符...

简述开发一个c语言程序的步骤
3链接。将目标文件链接成可执行文件。此步会对文件直接的关联进行检查。如果出错需要返回到1修改代码。直到没有错误。4运行。这个是最后一步,也是C语言的最终目的。5在运行结果与期望不符时,需要检查原因,修改代码,重新执行一二三直到程序没有问题。(1)语言简洁、紧凑灵活。二十八个关键字、九种控制...

编写一个程序,计算100+101+…+300的值
可以用C语言写:include<iostream> using namespace std;int main(){ int res = 0;for (int i = 100; i <= 300; i++){ res += i;} cout << "The sum from 100 to 300 is " << res << endl;return 0;} 结果为:

编写一个程序,输出1~1000之内所有的素数(注意:素数即质数)及个数(C语 ...
} printf("共有%d个素数\\n",m); getchar(); return 0;} snrbj1988 | 发布于2011-04-07 举报| 评论 6 5 为您推荐: 编写程序输出如下图形 编写一个程序输出菱形 请编写程序将 编写一个加密程序 输出下列图案 linux编写c语言程序 c编写程序界面 编写金字塔 小程序 中断服务程序怎么写 ...

C语言编写程序
Tpeople people[5]; \/\/ 赵钱孙李周 == 0 1 2 3 4 看电影、踢足球和去餐馆 == 0 1 2 int Tbool;initPeople(people); for(i = 0 ; i != 3; ++i ){ if(people[0].party == 1)people[0].footFlag = 1;else people[0].footFlag = 0;for( j = 0; j != 3;...

用C语言编写一个简单程序,有哪些步骤,可以举一个例子详细讲解下吗?_百 ...
include<stdio> \/\/这个是头文件 也是 C语言里面最常用的头文件之一 int main()\/\/这个是主函数 也就是程序的入口 你写的程序就是从这里开始的 { \/\/这个 { }表示里面的范围 是必须的 跟main 主函数是不可分的 int a=2; \/\/这里表示有一个 int型的数据a(int型就是整数...

求编写一下三个简单的C语言程序 ,新手求解
第一个:include <stdio.h>int main(int argc, char *argv[]){ char a; scanf("%c", &a); printf("大写字母为%c\\n", a-32); return 0;}第二个:include <stdio.h>int main(int argc, char *argv[]){ char A; scanf("%c", &A); printf("八进制:%o...

编写一个C语言小程序
程序一 include<stdio.h> void main(){ char c;int en = 0, space = 0, num = 0, other = 0;do { scanf("%c", &c);if (c >= '0' && c <= '9')num++;else if (c == ' ')space++;else if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')en++...

榆阳区18530275952: C语言.编写函数,实现对字符串的赋值运算,编写main函数 -
答贺妇良: 如果是赋值运算要用C++ 的运算符重载,如果只是实现赋值操作还是可以的,例如:#include <stdlib.h>#include <stdio.h> void main() { void mystrcpy(char *,char *); char res[20],obj[20]; mystrcpy(res,"abxc"); mystrcpy(obj,res); printf("%s\n%s",res,obj); } void mystrcpy(char *obj,char *res) { int i=0; while(res[i]) { obj[i]=res[i]; i++; } obj[i]=0; }

榆阳区18530275952: 急求C语言程序:求一个字符串中所有的数字字符对应的数值之和. -
答贺妇良: #include long numcharsum(const char *s)int main(void){ char s[100]; printf("input a string: "); scanf("%s"...

榆阳区18530275952: 输入一个字符串,计算其中所有数字字符所代表数字的和.(编C程序) -
答贺妇良: #include<stdio.h> #define SIZE 80int main() {char str[SIZE];int index, sum = 0;printf("Input a string:\n");scanf("%s", str); for( index = 0; str[index] != '\0'; ++index ){if ( str[index] >= '0' && str[index] <= '9' )sum += ( str[index] - '0' );} printf("The result is %d", sum);return 0; }

榆阳区18530275952: C语言编写程序从键盘上输入一个字符串,试统计出该字符串中所有数字字符的个数. -
答贺妇良: gets()函数输入,strlen()统计个数.

榆阳区18530275952: 关于C语言字符串中数字的运算 -
答贺妇良: #include char *reverse(char *s); char *add(char *a,char *b); int main(void) { char a[100+1]={0},b[100+1]={0},*c; memset(a,'3',sizeof(a)-1); memset(b,'6',sizeof(b)-1); c=add(a,b); printf("%s\n",c); free(c); return 0; } char *reverse(char *s) { char *p=s,*q=...

榆阳区18530275952: C语言编写:输入任意一串字符串,统计该字符串中出现的字符a的个数,并输出共统计的个数.
答贺妇良: 代码如下:/*编程从键盘输入一个字符串,统计该字符串中从'a'到'z'共26个小写字母各自出现的次数,将结果存入数组中,并输出*/#include<stdio.h>#include<string.h>#define N 100 main() { int i,j=0,c[26]={0}; char str[N]; printf("请输入一个字符...

榆阳区18530275952: (1)编写一个C语言程序,包含字符串值"Hello World".程序将字符串中每个字符与0进行异或运算并显示结果, -
答贺妇良: 第一题: #include "stdio.h" void main() {char String[13]="Hello World";char *pStr=String; printf("与0异或:");while(*pStr != '\0'){putchar((*pStr)^0);++pStr;} printf("\n与1异或:");pStr=String;while(*pStr != '\0'){putchar((...

榆阳区18530275952: C语言(简单的)编写程序输入任意一串字符统计其中大写字母,小写字母.数字及其他字符的个数 -
答贺妇良: #include <stdio.h> void count(char*); int main() { char ch[100]={0}; scanf("%s", ch); count(ch); return 0; } void count(char* ch) { //分别记录大写,小写,数字的个数. int big=0, small=0, character=0,qita = 0; while (*ch) { if ((*ch>='A')&&(*ch<='Z')) { +...

榆阳区18530275952: 输入一串字符编一程序统计该字符串中的字母和数字的个数,望C语言高手支招急用 -
答贺妇良: VC下可以测试通过 #include#includevoid main() { char ch;int ch_num=0,n_num=0; printf("Input a string:"); while((ch=getchar())!='\n') { if(isalpha(ch))ch_num++; if(isdigit(ch))n_num++; } printf("字母有个数是:%d\n数字个数是:%d\n",ch_num,n_num); }

榆阳区18530275952: 如何在c语言中计算字符串长度 -
答贺妇良: C语言计算字符串长度,可以手动计算也可以使用库函数或者sizeof()操作符.方法: 1. 自定义函数求长度 2. 使用strlen()函数 3. 使用sizeof()操作符 自定义函数: int cont_str(char *s) { int i = 0; while ( str[i++] != '\0') ; return i; } 使用...

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