c语言两组字符串 数组相同的字符串和不同的字符串分别输出 20
#include<stdio.h>intmain(){charabc[][10]={"void","main","int","define","char"};charde...
#include<stdio.h>
int main(){
char abc[][10]={"void","main","int","define","char"};
char def[][20]={"adfa","eweg","int","sadf","char"};
int m,n,p=0;
for(m=0;m<5;m++){
for(n=0;n<5;n++){
if(strcmp(abc[m],def[n])==0){printf("(1,%s)",abc[n]);}
else if(strcmp(abc[m],def[n])!=0)
{
p++;
if(p==5){printf("(2,%s)",def[m]);p=0;}
}
}
}
return 0;
}
最后的char(1,char)和(2,char)都输出了?为什么,怎么解决? 展开
int main(){
char abc[][10]={"void","main","int","define","char"};
char def[][20]={"adfa","eweg","int","sadf","char"};
int m,n,p=0;
for(m=0;m<5;m++){
for(n=0;n<5;n++){
if(strcmp(abc[m],def[n])==0){printf("(1,%s)",abc[n]);}
else if(strcmp(abc[m],def[n])!=0)
{
p++;
if(p==5){printf("(2,%s)",def[m]);p=0;}
}
}
}
return 0;
}
最后的char(1,char)和(2,char)都输出了?为什么,怎么解决? 展开
展开全部
#包括中
#包括中
无效的主要()
{字符CH1 [100],CH 2 [100];
整数LEN1,长度二;
printf(“请输入文字:\ n”);
得到(CH1);
的printf(“\ n”);
得到(CH 2);
> LEN1 = strlen的(CH1);
长度二长度= strlen的(CH 2);
如果(LEN1 ==长度二)
{printf(“请两个字符串为\ n”);
看跌期权(CH1);
看跌期权(CH 2);
}
如果(LEN1>长度二)
{
的printf(“%S”,strcat的(CH1, CH2));/ /连接两个
}
如果连接功能(LEN1 <长度二){
的printf(“%S”,strcat的(CH2,CH1));
}
}
#包括中
无效的主要()
{字符CH1 [100],CH 2 [100];
整数LEN1,长度二;
printf(“请输入文字:\ n”);
得到(CH1);
的printf(“\ n”);
得到(CH 2);
> LEN1 = strlen的(CH1);
长度二长度= strlen的(CH 2);
如果(LEN1 ==长度二)
{printf(“请两个字符串为\ n”);
看跌期权(CH1);
看跌期权(CH 2);
}
如果(LEN1>长度二)
{
的printf(“%S”,strcat的(CH1, CH2));/ /连接两个
}
如果连接功能(LEN1 <长度二){
的printf(“%S”,strcat的(CH2,CH1));
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没看懂你问题说的和你代码想要实现的功能。。但是你代码跑出来,对于char,这一个字符串
确实是会出来(1,char),(2,char)
单独用它举例,当你那个m循环到4的时候,跟n=4的时候匹配,abc【4】跟def【4】相等,那就输出(1,char)
别的情况,就是输出(2,char)了
你是不是没搞懂两层循环啊。你那个m和n不是同时循环的
m是最外层循环,从0到4
n是里层循环,外层循环执行一次你就循环了一圈,就是,m=0的时候,你n从0循环到4,m=1的时候,你的n也是从0循环到4、、、、
我估计你要的效果是
for(m = 0,n = 0; m < 5,n < 5; m++,n++)
{
if......你循环体里面那段
}
你看看是不是这个意思
确实是会出来(1,char),(2,char)
单独用它举例,当你那个m循环到4的时候,跟n=4的时候匹配,abc【4】跟def【4】相等,那就输出(1,char)
别的情况,就是输出(2,char)了
你是不是没搞懂两层循环啊。你那个m和n不是同时循环的
m是最外层循环,从0到4
n是里层循环,外层循环执行一次你就循环了一圈,就是,m=0的时候,你n从0循环到4,m=1的时候,你的n也是从0循环到4、、、、
我估计你要的效果是
for(m = 0,n = 0; m < 5,n < 5; m++,n++)
{
if......你循环体里面那段
}
你看看是不是这个意思
追问
不是这个意思。我想要的是将一个字符串数组里的关键字和别的字符串区分出来,abc那里全是关键字,int和char位置一样只是恰巧,可以是乱的。这个问题我已经解决了,在if后边加个break就好了。谢谢你的回答。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用strcmp阿,不管长度是否相等都能用。
原型:extern
int
strcmp(const
char
*s1,const
char
*
s2);
用法:#include
功能:比较字符串s1和s2。
一般形式:strcmp(字符串1,字符串2)
说明:
当s1
s2时,返回值>0
即:两个字符串自左向右逐个字符相比(按ascii值大小相比较),直到出现不同的字符或遇'\0'为止。
原型:extern
int
strcmp(const
char
*s1,const
char
*
s2);
用法:#include
功能:比较字符串s1和s2。
一般形式:strcmp(字符串1,字符串2)
说明:
当s1
s2时,返回值>0
即:两个字符串自左向右逐个字符相比(按ascii值大小相比较),直到出现不同的字符或遇'\0'为止。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为abc[4]=def[4]="char",两层循环当m=4,n=4时,该情况下输出if,其他情况下输出else if
追问
当m=4,n=4时 abc[n]和def[m]相等,输出(1,char),此时p=4,怎么输出的(2,char)?你说的和我问的不一样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询