Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
C语言中仅使用循环的回文_C_Loops_Palindrome - Fatal编程技术网

C语言中仅使用循环的回文

C语言中仅使用循环的回文,c,loops,palindrome,C,Loops,Palindrome,我使用了以下代码..但我正在寻找合适的条件来放置。请帮我解决一下 int main(){ int k = 0; char a[9] = {'\0'}, b[9] = {'\0'}; printf("enter string \n"); gets(a); int p = strlen(a); for(int i = p-1; i >= 0; i--){ b[k] = a[i]; k = k+1; }

我使用了以下代码..但我正在寻找合适的条件来放置。请帮我解决一下

int main(){
    int k = 0;
    char a[9] = {'\0'}, b[9] = {'\0'};

    printf("enter string \n");
    gets(a);
    int p = strlen(a);

    for(int i = p-1; i >= 0; i--){
        b[k] = a[i];
        k = k+1;
    }

    for(int j = 0; j < p; j++){
        if(a[j] == b[j]){
            continue;
        }else
            printf("not pal");

        break;
    }
    return 0;
}
intmain(){
int k=0;
字符a[9]={'\0'},b[9]={'\0'};
printf(“输入字符串\n”);
获得(a);
int p=斯特伦(a);
对于(int i=p-1;i>=0;i--){
b[k]=a[i];
k=k+1;
}
对于(int j=0;j
对于(int j=0;j这里是代码

 int main(){
 int k=0, flag;
 char a[9]={'\0'},b[9]={'\0'};
 printf("enter string \n");
 gets(a);
 int p = strlen(a);
 for(int i=p-1;i>=0;i--){
 b[k]=a[i];
 k=k+1;
 }
   for(int j=0;j<p;j++){
    if(a[j]==b[j]){
    flag=0;
        }else
         flag=1;
         break;
       }
   if(flag==0)
    printf("yes");
   else
    printf("no");
         return 0;
   }
intmain(){
int k=0,标志;
字符a[9]={'\0'},b[9]={'\0'};
printf(“输入字符串\n”);
获得(a);
int p=斯特伦(a);
对于(int i=p-1;i>=0;i--){
b[k]=a[i];
k=k+1;
}

对于(int j=0;j无需复制字符串。下面的代码使用整个字符串的大小来复制镜像字母并检查是否相等。复杂性为
O(N/2)
(如果存在此情况):-p

#include <stdbool.h>
#include <stddef.h>
#include <stdio.h>
#include <string.h>

bool is_palindrome(const char* s)
{
  const size_t len = strlen(s);
  size_t i=0;
  while(i<len/2-1)
  {
    if(s[i] != s[len-i-1])
      return false;

    ++i;
  }
  return true;
}

int main()
{
  const char* s1 = "palindrome";
  const char* s2 = "palindromemordnilap";

  if(is_palindrome(s1))
    printf("uhoh");
  if(is_palindrome(s2))
    printf("yay!");
}
#包括
#包括
#包括
#包括
bool是回文(const char*s)
{
const size_t len=strlen(s);
尺寸i=0;

while(我你所说的
适当条件是什么意思?
?我认为我做得对。但不知道当两个字符串匹配时该怎么办..你有一个严重的堆栈溢出问题(哦,讽刺的是)@user2980181在这种情况下,最好通过设置
标志
来跟踪,然后根据标志打印回文的是和否value@user2980181当前位置你可以用1个循环来做家庭作业,不需要复制。小建议,在写表达式时,不要吝啬于使用空格。替他做家庭作业对他没有帮助从长远来看,我很抱歉。我要删除这个答案吗?@claptrap:这里有“以身作则”是的,我认为解释是更合适的教学方法。@KaustavRay不。不需要删除答案。只需添加一些解释,说明您添加了什么以及为什么和答案是什么lacked@user2980181通常,当人们受到这种人为的约束时,是因为他们的老师“聪明”不管是不是家庭作业,这都不是重点,最好的学习方法是这样做,继续做好工作。我不太擅长指点,这就是为什么我没有这样做的原因。但是,谢谢buddy@user2980181这里没有真正的指针。这只是通过
[]以数组的形式访问字符串< C/> >,在C++中与一个正确的<代码> STD::String 和运算符[]/COD>相似。
#include <stdbool.h>
#include <stddef.h>
#include <stdio.h>
#include <string.h>

bool is_palindrome(const char* s)
{
  const size_t len = strlen(s);
  size_t i=0;
  while(i<len/2-1)
  {
    if(s[i] != s[len-i-1])
      return false;

    ++i;
  }
  return true;
}

int main()
{
  const char* s1 = "palindrome";
  const char* s2 = "palindromemordnilap";

  if(is_palindrome(s1))
    printf("uhoh");
  if(is_palindrome(s2))
    printf("yay!");
}