求教编写一个C语言函数求出两个字符串包含的相同的单词 如何用C语言编写一个程序,统计输入字符串的相同单词个数 ?
c\u8bed\u8a00\u7edf\u8ba1\u4e24\u4e2a\u5b57\u7b26\u4e32\u4e2d\u76f8\u540c\u7684\u5355\u8bcd\u7684\u6570\u91cf
\u5982\u56fe\uff0c\u53ea\u6709\u4e00\u4e2a\u76f8\u540c\u5355\u8bcd
\u5f88\u7b80\u5355\u4e86\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a#include <stdio.hvoid main(){char a[100];int i,count=0,flag=1,n=0;gets(a);//\u4ece\u952e\u76d8\u8f93\u5165\u5b57\u7b26\u4e32for(i=0;a[i];i++){if((a[i]='a' && a[i]<='z') || (a[i]='A' && a[i]<='Z'))//\u5224\u65ad\u662f\u4e0d\u662f\u5b57\u7b26{flag=0;//\u8bbe\u7f6e\u5b57\u7b26\u6807\u5fd7continue;//\u8fd4\u56de\u4e0b\u4e00\u4e2a\u5faa\u73af}if(!flag)//\u524d\u9762\u4e00\u4f4d\u662f\u5b57\u7b26\uff0c\u5373\u5f53\u524d\u662f\u67d0\u4e2a\u5355\u8bcd\u5b57\u7b26\u7ed3\u675f{count++;//\u7edf\u8ba1\u5355\u8bcd\u4e2a\u6570flag=1;//\u8bbe\u7f6e\u975e\u5b57\u7b26\u6807\u5fd7}}i--;if((a[i]='a' && a[i]<='z') || (a[i]='A' && a[i]<='Z'))count++;//\u589e\u52a0\u5b57\u7b26\u4e32\u7ed3\u675f\u7684\u5355\u8bcd
#include <stdio.h>
char *maxword(char*s, char*t)
{
int wordlen=0,maxlen = 0;
char *pt = t, *ps = s, *res = s;
while (*s != '\0')
{
while (*s == ' ')s++;
ps = s;
while (*s != ' '&&*s != '\0')//找到一个单词
s++;
wordlen = s - ps;//获取单词长度
while (*pt != '\0')//在t中找到s中当前单词相同的首字母
{
while (*pt == ' ')pt++;
if (*ps == *pt)
{
//找到首字母
s = ps;
while (*pt == *s&&*s != ' '&&*s!='\0')//找t中与当前单词相同的单词
{
s++; pt++;
}
if (*s != ' '&&*s != '\0') //没有找到对应的单词,t中不是一个完整的单词也不算找到,s长了
continue;
else if (*pt != ' '&&*pt != '\0')
{
while (*pt != ' ')pt++;
continue;//跳转找t的下一个单词的首字母
}
else if (wordlen > maxlen)//找到对应的单词了,与之前找到的单词对比长度,大于则记录,小于则过;
{
res = ps;
maxlen = wordlen;
pt = t;
break;
}
else
pt = t;
break;
}
while (*pt != ' '&&*pt!='\0')
pt++;
}
continue;
}
if (maxlen == 0)
return 0;
else
{
res[maxlen] = '\0';
return res;
}
}
int main()
{
char s[] = "text This is C Programmingg";
char t[] = "This is a Programmin text for C Programming ";
char *word = maxword(s, t);
printf("%s", word);
getchar();
return 0;
}
因为你的p,q两个指针数组的成员都没有申请内存,却在下面进行了访问(如p[m][j]=0; q[n][k]=0;)
修正方式,给p,q成员申请内存,将char *p[81],*q[81];语句修改为如下:
#define MAX_SIZE 81
#define BUF_SIZE 64
char *p[MAX_SIZE],*q[MAX_SIZE];
int temp = 0;
for (temp = 0; temp < MAX_SIZE; ++temp)
{
p[temp] = malloc(BUF_SIZE);
q[temp] = malloc(BUF_SIZE);
}
函数末尾记得进行遍历释放它们成员的堆内存。
#include<stdio.h>
#include<string.h>
void maxword(char *s,char *t)
{
int i,j=0,m=0;
char p[20][30]= {0};
for(i=0; s[i]!='\0'; i++)
{
if(s[i]!=' ')
p[m][j++]=s[i];
else
{ p[m][j]='\0';
m++;
j=0;
}}
for(i=0; i<m; i++) {
if(strstr(t,p[i])!=NULL) {
printf("the same word:%s\n",p[i]);
}}}
void main()
{
char s[]="This is C programming text ";
char t[]="This is a text for C programming";
maxword(s,t);
}
这个我运行出来是对的 你那个好像strstr函数参数用反了
绛旓細include <stdio.h>char *maxword(char*s, char*t){int wordlen=0,maxlen = 0;char *pt = t, *ps = s, *res = s;while (*s != '\0'){while (*s == ' ')s++;ps = s;while (*s != ' '&&*s != '\0')//鎵惧埌涓涓崟璇峴++;wordlen = s - ps;//鑾峰彇鍗曡瘝闀垮害whi...
绛旓細// 鑷畾涔鍑芥暟锛岀敤浜姹備袱鏁颁箣宸 int difference(int a, int b) { return a - b;} int main() { int num1, num2;// 浠庣敤鎴烽偅閲岃幏鍙涓や釜鏁 printf("璇疯緭鍏ョ涓涓暟: ");scanf("%d", &num1);printf("璇疯緭鍏ョ浜屼釜鏁: ");scanf("%d", &num2);// 璋冪敤鑷畾涔夊嚱鏁板苟鎵撳嵃缁撴灉 p...
绛旓細printf("鏈灏忔暟鏄細%d\n", m); //杈撳嚭鏈灏忔暟 double s = sqrt(m); //璋冪敤sqrt鍑芥暟锛岃绠楁渶灏忔暟鐨勫钩鏂规牴锛屽苟璧嬪肩粰s printf("鏈灏忔暟鐨勫钩鏂规牴鏄細%f\n", s); //杈撳嚭骞虫柟鏍 return 0;}
绛旓細void add_mul(int x,int y,int *sum,int *product){ sum=x+y;produnct=x*y;}
绛旓細include<stdio.h>int fMaxMin(int a,int b,int *c){int r; *c=a*b; while(r=a%b) {a=b; b=r; } *c/=b; return a;}int main(){int a,b,c; scanf("%d%d",&a,&b); printf("鏈澶у叕鍥犳暟=%d\n",fMaxMin(a,b,&c)); printf("鏈灏忓叕鍊嶆暟=%d\n",c); return...
绛旓細c璇█缂栫▼鍒╃敤鑷畾涔鍑芥暟姹備袱涓鏁扮殑鍜岀殑鏂规硶濡備笅锛氶鍏堥渶瑕佸畾涔変竴涓嚜瀹氫箟鍑芥暟锛屽懡鍚嶄负sum锛屽弬鏁颁负涓や釜鏁存暟a鍜宐锛岃繑鍥炲间负鏁存暟绫诲瀷銆傚湪鑷畾涔夊嚱鏁颁腑锛屼娇鐢╮eturn璇彞杩斿洖a鍜宐鐨勭浉鍔犵粨鏋溿傚湪涓诲嚱鏁颁腑锛屽畾涔変袱涓暣鏁板彉閲弜鍜寉锛屼娇鐢╯canf()鍑芥暟浠庨敭鐩樿緭鍏ュ畠浠殑鍊笺傚湪涓诲嚱鏁颁腑锛岃皟鐢╯um(x,y)鍑芥暟锛屽苟灏...
绛旓細鍙傝冧唬鐮佸涓:include<stdio.h> double add(double x, double y){ return x+y;} double sub(double x, double y){ return x-y;} int main(){ double a,b;scanf("%lf%lf",&a,&b);printf("%.2lf\n",add(a,b));printf("%.2lf\n",sub(a,b));return 0;} ...
绛旓細include<stdio.h> float add(float a,float b){ return a+b;} int main(){ float add(float a,float b);float num1,num2;printf("璇疯緭鍏涓や釜鏁帮細");scanf("%f %f",&num1,&num2);printf("涓ゆ暟鐨勫拰鏄細%f\n",add(num1,num2));return 0;} ...
绛旓細include<stdio.h> int gcd(int a,int b){ return b==0?a:gcd(b,a%b);} int main(){ int a,b;while((scanf("%d%d",&a,&b))!=EOF){ if(a==0||b==0){ printf("Error\n");continue;} printf("%d鍜%d鐨勬渶澶у叕绾︽暟涓%d\n",a,b,gcd(a,b));} return 0;} ...
绛旓細C璇█涓緭鍑涓や釜鍙橀噺鐨勬柟娉曞涓嬶細1.棣栧厛闇瑕佸厛瀹氫箟涓や釜鍙橀噺銆傝繖閲屾紨绀轰互瀹氫箟涓や釜鏁村舰鍙橀噺A锛孊涓轰緥銆2.瀹氫箟瀹屾垚鍚庯紝闇瑕佷负A锛孊璧嬪硷紝杩欐牱鎵嶈兘鍦ㄥ悗闈㈢殑杈撳嚭璇彞涓杈撳嚭鍒板睆骞曟樉绀鍑烘潵銆3.鏈鍚庡氨鍙互浣跨敤printf璇彞鏉ヨ緭鍑哄彉閲忎簡锛屼互杈撳嚭A锛孊鍙橀噺涓轰緥锛屾牸寮忎负pirntf("%d %d",A,B);鍏朵腑涓涓%d浠h〃涓...