此程序可以实现在一个字符串中汉字出现的频数计算,目前想要输入一个字符串后判断其中各个汉字出现的频数之后,再循环输入另一个字符串判断各个汉字出现的频数,如何实现这种循环操作?
此程序不仅适用于中文字、句检索计数,同样适用于其他字符。
#include
#include
#include
int Chinesestrfind(char *A,char*B)//在B中检索A的出现次数//
{
int lA=strlen(A),lB=strlen(B),count=0,i,j,c;
char temp[lA+1];
for(i=0;i+lAfor(j=0;jif(strcmp(A,temp)==0)
{
count++;
}
}
return count;
}
int main ()
{
char A[]="点击",B[]="点击获得更多信息购买最新产品获得优惠优惠信息点击链接";//在B中检索A的出现次数//
int count=Chinesestrfind(A,B);
printf("\"%s\"在字符串中出现%d次。\n",A,count);
return 0;
}
这也不是检索汉字啊,这是检索一串汉字
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int Chinesestrfind(char *A,char*B)//在B中检索A的出现次数//
{
int lA=strlen(A),lB=strlen(B),count=0,i,j;
char *temp = (char*)malloc(lA+1);
temp[lA] = 0;
for(i=0;i+lA<lB;i+=lA)
{
for(j=0;j<lA;j++)
{
temp[j]=B[i+j];
}
if(strcmp(A,temp)==0)
{
count++;
}
}
free(temp);
return count;
}
int main ()
{
char a[] = "中";
int hs = strlen(a);
char s[1000];
char f[1000];
printf("输入主串:");
gets(f);
while(1)
{
printf("输入搜索串:");
gets(s);
int len = strlen(s);
if(len == 0)
break;
for(int i=0;i<len;i+=hs)
{
char *p = (char*)malloc(hs+1);
memcpy(p,s+i,hs);
p[hs] = 0;
int count=Chinesestrfind(p,f);
printf("\"%s\"在字符串中出现%d次。\n",p,count);
free(p);
}
}
system("pause");
return 0;
}
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
#include <locale.h>
int find_char_count(wchar_t *str, wchar_t *substr)
{
int count = 0;
int len = wcslen(substr);
wchar_t *p = str;
while (*p != L'\0')
{
if (memcmp(p, substr, len) == 0)
{
count++;
}
p++;
}
return count;
}
int main()
{
// 将编码设置为系统默认的宽字符编码
setlocale(LC_ALL, "");
wchar_t str[1000], substr[100],temp[1];
printf("请输入一串中文字符串:\n");
fgetws(str, sizeof(str)/sizeof(wchar_t), stdin);
while(1){
printf("请输入中文字符子串:\n");
fgetws(substr, sizeof(substr)/sizeof(wchar_t), stdin);
int len = wcslen(substr);
for(int i=0;i<len-1;i++){
temp[0] = substr[i];
int count = find_char_count(str,temp);
printf("子串中 %lc 中文字符在主串中出现的次数为:%d\n",substr[i], count);
}
}
return 0;
}
你的程序是找字符串子串。
你要的功能应该类似统计26个字母出现的频率
#include "stdio.h"
#include "string.h"
#define max 100
void main() {
char a[max]={"A123X456Y7A,302ATB567BC"};
// 二维数组num用来统计字符串中连续的数字组成的整数
char num[max][max];
// gets(a);
int i=0,m=0,n=0;
while(a[i]!='\0') {
// 如果当前字符,本身是数字,同时前一个或者后一个为数字,则构成连续数字的要求
if((a[i]>='0'&&a[i]<='9')&&((a[i+1]>='0'&&a[i+1]<='9')||(a[i-1]>='0'&&a[i-1]<='9')))
// 一直判断到非数字字符,开始新的一轮
while(a[i]!='\0') {
if(a[i]>='0'&&a[i]<='9') {
num[m][n++] = a[i];
i++;
} else { //不满足条件时,需要开始新的一轮,行标加一,列标为0
m++;
n=0;
break;
}
}
else i++;
}
for(i=0;i<m;i++)
puts(num[i]);
}