c語言 判斷一個字元串是不是迴文

你的思路沒錯,錯在
迴文

所有對應位置都匹配,有一個不匹配的就不是,改一下你的
if
語句就行了

㈡ C語言編寫一個程序,判斷輸入的一個字元串是否是迴文。

代碼如下:

#include <stdio.h>

int main()

{

int n, reversedInteger = 0, remainder, originalInteger;

printf("輸入一個整數: ");

scanf("%d", &n);

originalInteger = n;

// 翻轉

while( n!=0 )

{

remainder = n%10;

reversedInteger = reversedInteger*10 + remainder;

n /= 10;

}

// 判斷

if (originalInteger == reversedInteger)

printf("%d 是迴文數。", originalInteger);

else

printf("%d 不是迴文數。", originalInteger);

return 0;

}

(2)c語言字元串迴文判斷擴展閱讀

1、函數的專返回值是通屬過函數中的return語句獲取的。

2、函數值的類型。

3、如果函數值的類型和return語句中表達式的值不一樣,則以函數類型為准。

4、如果調用函數中沒有return語句,並不帶回一個確定的用戶需要的值,函數不是不帶回值,而只是不帶回有用的值,帶回一個不確定的值。

㈢ c語言編程:判定一個字元是否是迴文串(迴文串是指從開頭讀和從末尾讀均為相同字元的字元串,例如:abcba

1、首先,在C語言軟體中,定義多個整型變數,保存程序中所需操作的數值。

㈣ C語言判斷迴文字元串

//你的錯誤在於遞歸調用的時候,i每次都是0,所以要用static int i = 0
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int hui(char a[10000])
{
int n;
static int i=0; //這里改為static int i = 0就對了,因內為你遞歸調用i的時候每次都容把i置為0了,那肯定不行的,因為你的i是在變得,所以用static
n=strlen(a);

if(i>=n-i-1)
return 1;
else
{
if (a[i]==a[n-i-1])
{
i++;
hui(a);
}
else
return 0;
}
}
int main(int argc, char *argv[])
{
char a[10000];
gets(a);
if (strlen(a)==0) {printf("No\n");}
else
{
if(hui(a))
printf("Yes\n");
else
printf("No\n");
}
return 0;
}

㈤ c語言判斷一個字元串是否是迴文,並輸出判斷結果,這到題的代碼怎麼理解

#include<stdio.h>

intmain()
{
chars[81];
intn=0,i,k;
printf("pleaseinput: ");
gets(s);
while(s[n++]!='');//獲取字元串長度:n-1
n=n-1;//長度
printf("字元數量為:%個 ",n);
k=n/2;//字元串的中間位置保存在k中
for(i=0;i<k;i++)//從第一位跟最後一位開始內對比
{ 容 //再對比第二位和倒數第二位,以此類推
if(s[i]!=s[n-1-i])break;//只要任意一對不滿足都不是迴文數,不用再繼續
}
if(i==k)printf("yes ");//如果i==k,說明已經比較到最中間位置,也就表示是迴文
elseprintf("no ");
return0;
}

㈥ c語言,判斷字元串是否為迴文,需進行多組測試

#include"stdio.h"
intmain(intargv,char*argc[]){
版chars[100],i,k;
printf("Inputstring,Ctrl+Zend... ");
while(gets(s)){
權for(k=0;s[k];k++);
for(k--,i=0;i<k;i++,k--)
if(s[i]-s[k])
break;
if(i>=k)
printf(" '%s'isapalindromestring ",s);
else
printf(" '%s'isnotapalindromestring ",s);
}
return0;
}

運行樣例:

㈦ C語言 判斷給定字元串是否是迴文

我猜樓主的想法是:

讓數組的頭和尾比較,一樣了,就比較下一對,一直比較到最後,如果i=j,就說明是迴文。

但是題主卻沒有用循環語句,按照樓主的程序就能比較兩次,比較不完肯定錯;而且題主找到的i,並不指向數組最後一個元素,而是指向他的結尾符號。(詳情看圖)

改正意見:

1.使用循環語句,從頭判斷到尾。

那就要求我們給循環語句一個最長執行長度,這就要考慮兩種情況,一種,數組長度為奇數,另一種,數組長度尾偶數。不同的情況我們的判決情況也不一樣,必須選一個適合兩種情況的判決條件,這里使用n=i/2-1,讓n來作為標准。(原因看圖)。(其實除了要考慮這種情況之外,還要考慮特殊情況,比如長度為1,2這樣的,這種特殊情況,就是程序容易忽略,容易出錯的地方。)

2.在判斷前,i-1,讓i指向數組最後一個元素。

#include<stdio.h>
intmain()
{
chara[20];
gets(a);
inti,j,n;
j=i=0;
while(a[i]!='')i++; //此時i並不指向a的最後一個元素,而是指向它的結尾符號『、0』
n=i/2-1;
i--; //讓i指向a的最後一個元素
while(j<=n)
{
if(a[i]!=a[j])break;
else{
i--;
j++;
}
}
if(j>n)printf(" 迴文!");
elseprintf(" 不迴文!");
return0;

}

總結:編程不容易,思考需謹慎。面向過程的的編程,任何情況都要考慮出來,這樣你的程序才是正確的。

㈧ C語言 判斷迴文字元串

#include <stdio.h>

/*fun()函數:傳入一個字元數組,如果是迴文序列返回1,不是就返回0*/
int fun(char a[])
{
int i,j,n=0;
while(a[n]!='\0') n++; /*計算傳入字元串(數組)長度*/
n--; /*跳出while循環時 a[n]='\0',故n--*/
for(i=0,j=n;i<j;i++,j--)
if(a[i]!=a[j]) break;
if(i>=j) return 1;
return 0;
}

int main()
{
char str[20];
puts("輸入一個字元串:\n");
gets(str);
if(fun(str)) printf("%s 是迴文序列\n",str);
else printf("%s 不是迴文序列\n",str);
return 0;
}

㈨ c語言編程題 輸入一字元串,判斷該字元串是否為迴文。

#include <stdio.h>

#include<stdlib.h>

int main()

{

char a[100];

int i=0,j=0;

printf("請輸入字元串: ");

gets(a);

while(a[i]!='')

i++;

i--;

for(;j<=i;i--,j++)

{

if(a[i]!=a[j])

{

break;

}

}

if(j<=i)

{

printf("不是迴文串 ",a);

}

else

{

printf("是迴文串 ",a);

}

system("pause");

return 0;

}

運行效果:

(9)c語言字元串迴文判斷擴展閱讀:

return 0代表程序正常退出。return是C++預定義的語句,它提供了終止函數執行的一種方式。當return語句提供了一個值時,這個值就成為函數的返回值。

return語句用來結束循環,或返回一個函數的值。

1、return 0,說明程序正常退出,返回到主程序繼續往下執行。

2、return 1,說明程序異常退出,返回主調函數來處理,繼續往下執行。return 0或return 1對程序執行的順序沒有影響,只是大家習慣於使用return(0)退出子程序而已。

㈩ 用C語言寫一個程序判斷一個字元串是否是迴文

#include<stdio.h>
#include<string.h>
int main()
{
int a,b=0,i,j; //b用於計數,a用於讀取字元串長度,i,j表示字元數組下標
char c[1000];
printf("請輸入字元串:\n");
gets(c);
a=strlen(c);
if(a%2==0) //當長度(不包含結束符)為偶數時
{
for(i=0,j=a-1;i<j;i++,j--) //j移動到結束符之前的一個字元
{
if(c[i]==c[j])
{
b=b+2;
}
}
if(b==a) //當相等字元串個數=輸入字元串個數時
printf("yes\n");
else
printf("no\n");
}
else if(a%2!=0) //當長度(同上)為奇數時
{
if(a==1) //當字元串為1個時
{
printf("yes\n");
}
else
{
for(i=0,j=a-1;i<j;i++,j--) //j移動到結束符之前的一個字元,不比較中間字元
{
if(c[i]==c[j])
{
b+=2;
}
}
if(b==a-1) //當相等字元串個數=輸入字元串個數-1時
printf("yes\n");
else
printf("no\n");
}
}
return 0;
}