请问这两个函数有区别吗

来源:百度知道 编辑:UC知道 时间:2024/05/15 02:01:09
void fun(char *s,char t[])
{
int k=0,i,n;
n=strlen(s);
for(i=0;i<n;i++)
{
if(i%2==0&&s[i]%2==1)
continue;
else
t[k++]=s[i];
}
t[k]='\0';
}

void fun(char *s,char t[])
{
int k=0,i,n;
n=strlen(s);
for(i=0;i<n;i++)
{
if(i%2==1&&s[i]%2==0)
t[k++]=s[i];
}
t[k]='\0';
}

我是在假设这两个函数都没有算法问题或其他问题的情况下看他们的区别的:
很明显,其实就是看“i%2==0 && s[i]%2==1的反面”和“i%2==1 && s[i]%2==0”有什么区别了。
根据基本逻辑的理论,A并且B的反面 等于 A的反面或者B的反面
所以“i%2==0 && s[i]%2==1的反面” 等于 “i%2==1 || s[i]%2==0”
这样两者的区别就很清楚了,前者是 或 的关系,后者是 并 的关系。在这个具体问题中,前者比后者范围要大。

第一个 87=22% 的向量有算法问题

有区别
@_@
回答完毕