任意输入一串字符串(字符串长度不超50),统计出在这个
字符串中有多少个U,P,R,E(分别统计大小写),并统
计出有多少个连续的大写的UPRE
定义U P R E u p r e 8个变量,循环字符串统计
统计连续的大写UPRE 循环用strstr()查找子串即可你题目的解答代码如下:
#include <stdio.h>
#include <string.h>
int main(){
char s[51];
int U=0, P=0, R=0, E=0, u=0, p=0, r=0, e=0, UPRE=0,i,len ;
gets(s);
len = strlen(s);
char *c = s;
while ((c=strstr(c,"UPRE")))
{
UPRE++;
c=c+4;
}
for (i = 0; i < len; i++)
{
if (s[i]=='U')
U++;
if (s[i]=='P')
P++;
if (s[i]=='R')
R++;
if (s[i]=='E')
E++;
if (s[i]=='u')
u++;
if (s[i]=='p')
p++;
if (s[i]=='r')
r++;
if (s[i]=='e')
e++;
}
printf("U=%d\n", U);
printf("P=%d\n", P);
printf("R=%d\n", R);
printf("E=%d\n", E);
printf("u=%d\n", u);
printf("p=%d\n", p);
printf("r=%d\n", r);
printf("e=%d\n", e);
printf("UPRE=%d\n", UPRE);
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
循环变量逐个比较字符。
#include <stdio.h>
int main()
{
char s[51] = {0},UPRE[5] = "UPRE";
gets(s);
int U=0,P=0,R=0,E=0;
int u=0,p=0,r=0,e=0;
int UPREs = 0;
int i=0,j=0;
while(s[i] != '\0')
{
switch(s[i])
{
case 'U':
{
U++;
j=1;
while(j<4 && s[i+j] != '\0')
{
if(s[i+j] != UPRE[j])
break;
j++;
}
if(j==4)
UPREs++;
}
break;
case 'u':
u++;
break;
case 'P':
P++;
break;
case 'p':
p++;
break;
case 'R':
R++;
break;
case 'r':
r++;
break;
case 'E':
E++;
break;
case 'e':
e++;
break;
}
i++;
}
printf("U=%d,P=%d,R=%d,E=%d\n",U,P,R,E);
printf("u=%d,p=%d,r=%d,e=%d\n",u,p,r,e);
printf("UPRE=%d\n",UPREs);
}
大小写字母分别统计,并统计UPRE连续出现的次数,遍历比较即可。
运行结果:
代码如下:
#include <stdio.h>
int main()
{
char buf[52];
char target[]={"UPRE"};
int i,j;
int nmbBu=0,nmbBp=0,nmbBr=0,nmbBe=0; //各个大写字母出现的次数
int nmbSu=0,nmbSp=0,nmbSr=0,nmbSe=0; //各个小写字母出现的次数
int nmbLx = 0; //连续的大写UPRE个数
gets(buf); //读取字符串
for (i=0;buf[i]!='\0';i++)
{
if(buf[i]=='u') nmbSu++;
else if(buf[i]=='U') nmbBu++;
else if(buf[i] == 'p') nmbSp++;
else if(buf[i]=='P') nmbBp++;
else if(buf[i] =='r') nmbSr++;
else if(buf[i] =='R') nmbBr++;
else if(buf[i] == 'e') nmbSe++;
else if(buf[i] == 'E') nmbBe++;
//查找连续的UPRE
for(j=0;j<4;j++)
{
if( buf[i+j]=='\0' || buf[i+j] != target[j])
break;
}
if(j==4)
nmbLx++;
}
printf("u:%d\n",nmbSu);
printf("U:%d\n",nmbBu);
printf("p:%d\n",nmbSp);
printf("P:%d\n",nmbBp);
printf("r:%d\n",nmbSr);
printf("R:%d\n",nmbBr);
printf("e:%d\n",nmbSe);
printf("E:%d\n",nmbBe);
printf("UPRE:%d\n",nmbLx);
return 0;
}
我推荐你了解一下正则校验,然后用正则校验去搜索统计,效率更高
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!