Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';我不懂这个程序逻辑 #包括 无效页(字符s[]){ int i,strlen=0,j,k; 对于(i=0;s[i]!='\0';i++) strlen=i; 对于(j=0,(k=(strlen-1));j1) printf(“非回文”); else如果(k==j | |(k-j)==1) printf(“是回文”); } int main(){ 字符行[100]; printf(“输入字符串:”); scanf(“%s\n”,&line); palind(行); }_C - Fatal编程技术网

Can';我不懂这个程序逻辑 #包括 无效页(字符s[]){ int i,strlen=0,j,k; 对于(i=0;s[i]!='\0';i++) strlen=i; 对于(j=0,(k=(strlen-1));j1) printf(“非回文”); else如果(k==j | |(k-j)==1) printf(“是回文”); } int main(){ 字符行[100]; printf(“输入字符串:”); scanf(“%s\n”,&line); palind(行); }

Can';我不懂这个程序逻辑 #包括 无效页(字符s[]){ int i,strlen=0,j,k; 对于(i=0;s[i]!='\0';i++) strlen=i; 对于(j=0,(k=(strlen-1));j1) printf(“非回文”); else如果(k==j | |(k-j)==1) printf(“是回文”); } int main(){ 字符行[100]; printf(“输入字符串:”); scanf(“%s\n”,&line); palind(行); },c,C,嘿,我很难理解palind()函数的逻辑,比如在for循环的第一次迭代中strlen是0,所以k=-1n然后j回答关于第一个for循环的具体问题。守则: #include <stdio.h> void palind(char s[]){ int i,strlen=0,j,k; for(i=0;s[i]!='\0';i++) strlen=i; for(j=0,(k=(strlen-1));j<=k;j++,k--){

嘿,我很难理解
palind()
函数的逻辑,比如在for循环的第一次迭代中
strlen
是0,所以
k=-1
n然后
j回答关于第一个for循环的具体问题。守则:

#include <stdio.h>    
void palind(char s[]){    
  int i,strlen=0,j,k;   
  for(i=0;s[i]!='\0';i++)    
    strlen=i;    
  for(j=0,(k=(strlen-1));j<=k;j++,k--){   
    if(s[i]!=s[j])   
        break;   
  }   
  if((k-j)>1)   
    printf("not a palindrome");    
  else if(k==j||(k-j)==1)        
    printf("yeah a palindrome");        
}        
int main(){           
  char line[100];            
  printf("enter the string: ");          
  scanf("%s\n",&line);            
  palind(line);            
}         
计算字符串的长度。strlen在此循环之前设置为0,因为它可能是空字符串

所以第二个循环:

for (i = 0; s[i] != '\0'; i++)
    strlen = i;

for(j=0,(k=(strlen-1));j以下
for
循环不正确

for (j = 0, (k = (strlen - 1)); j <= k; j++, k--) {
    if (s[k] != s[j])
        break;
}
for(j=0,(k=(strlen-1));jLoop 1--

环路2--


for(j=0,(k=(strlen-1));jI's to Admin这是一个人类理解的糟糕代码。IMO
循环的第二个
感到困惑。是的,这就是我解释这两个的原因。我的第一个注释比它早了6分钟。没关系,现在答案很好。更正:循环计算字符串的长度-1。@juanchopanza真的吗?它会在空字符上停止,而空字符是字符串末尾的1。
for(j=0,(k=(strlen-1));j<=k;j++,k--){   
  if(s[i]!=s[j])   
     break;   
}
for(j=0,(k=(strlen-1));j<=k;j++,k--){   
  if(s[k]!=s[j])
    // ^^ k, not i   
     break;   
}
for(i=0;s[i]!='\0';i++)    
    strlen=i; 
for(j=0,(k=(strlen-1));j<=k;j++,k--){   
    if(s[i]!=s[j])   
       break;
    }