Ⅰ 使用c語言編程:從鍵盤輸入一個5的正整數,判斷它是不是迴文數。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
voidcheck(int*Hui)//這個函數用來檢測是否是5位數
{
inti;
intcount=0;//計數變數
charlenth[10];
for(i=0;i<strlen(itoa(*Hui,lenth,10));i++){
count++;
}//這里for循環可以換成count=strlen(itoa(*Hui,lenth,10))
printf("這是%d位數",count);
if(count==5){
puts("goon..");
}
else{
puts("yourinputiserror!");
exit(0);
}
}
intmain()
{
int*Huiwenshu=NULL; //也可以用intHuiwenshu[6];,推薦前一種
intLast_digit;//末位數字
intFirst_digit;//首位數字
intThou_digit;//千位數字
intTen_digit;//十位數字
Huiwenshu=(int*)malloc(sizeof(int*));//申請int*大小的連續空間
puts("請輸入一個5位數:");
scanf("%d",&*Huiwenshu);//獲取5位數
check(Huiwenshu);//將5位數導入檢查函數
/*將5位數分解,涉及"%"取余數的技巧*/
Last_digit=*Huiwenshu%10;//取末位
Ten_digit=((*Huiwenshu%100-(Last_digit))/10);//取十位
Thou_digit=((*Huiwenshu%10000-(*Huiwenshu%1000))/1000);//取千位
First_digit=((*Huiwenshu%100000-(*Huiwenshu%10000))/10000);//取首位
if(Last_digit==First_digit){ //判斷迴文數
if(Ten_digit==Thou_digit){
printf("%d是迴文數!",*Huiwenshu);
}
else{
printf("%d不是迴文數!",*Huiwenshu);
return0;
}
}
else{
}
free(Huiwenshu);//釋放內存
return0;
}
代碼里的注釋很清晰,如果不懂再問噢。其實還有另一種方法,就是直接定義一個int型數組,然後通過取對應的位數進行比較,然後得出結果,不過這種方法通用性較低,但是也行。
Ⅱ 一個5位數,用c語言來判斷它是不是迴文數。即12321是迴文數,個位與萬位相同,十位與千位相同
簡單的很,既然是迴文,就先把數字轉成字元串,指針p,q指向兩頭,
隨便一個數都行
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
int main()
{
int num;
cout<<"input a num:"<<endl;
cin>>num;
char numstr[128]={0};
itoa(num,numstr,10);
char* p=numstr,*q=numstr+strlen(numstr)-1;
bool flag =true;
while(p<q)
if(*p++!=*q-- ){
flag=false;
break;
}
cout<<"it is "<<boolalpha <<flag<<endl;
return 0;
}
Ⅲ C語言怎麼判斷一個數是否是迴文數
所謂迴文數,就是說一個數字從左邊讀和從右邊讀的結果是一模一樣的,比如12321。
以下是判斷一個數是否為迴文數的代碼:
Ⅳ c語言:判斷輸入的整數是否是五位數,如果是,判斷他是否是迴文數,如12321是個迴文數,即該數的個
#include<stdio.h>
intmain()
{
longintm;
inta,b,c,d,e;//代表個十百千萬
printf("pleaseintputanumber: ");
scanf("%d",&m);
if(9999<m<1000000)
{
a=m/10000;//萬位
b=m%10000/1000;//千位
c=m%10000%1000/100;//百位
d=m%10000%1000%100/10;//十位
e=m%10000%1000%100%10;//個位
}
elseprintf("你輸入的數不是五位數 ");
if(a==e&&b==d)
printf("%d為迴文 ",m);
return0;
}
Ⅳ 一個5位數,判斷它是不是迴文數。即12321是迴文數,個位與萬位相同,十位與千位相同。C語言編程
既然寫了
那就寫個通用一點的
給你一個可以隨意判斷各種位數的數是否為迴文數的程序,
當然前提是輸入不會超過int類型的表示範圍喲
可能不是最好的演算法
希望能夠拋磚引玉
#include<stdio.h>
#include<math.h>
int
main()
{
int
number
=
0;
int
t
=
0;
/*保存number的位數*/
int
temp
=
0;
/*臨時保存number的值*/
int
i;
/*循環變數*/
int
base;
/*臨時變數*/
int
s;
/*臨時變數*/
printf("請輸入一個整數:
");
scanf("%d",
&number);
/*先求出輸入整數的位數,一邊控制後面的循環的次數*/
temp
=
number;
while(
temp
)
{
t++;
temp
/=
10;
}
temp
=
number;
/*循環對輸入整數的各位進行首尾比較,
當確定為5位數時不需要前面的求位數部分,以及應該把t的值設為5*/
for(
i
=
0;
i
<
t;
i=i+2
)
/*這里因為每次都要比較首尾兩位,所以循環變數應該加2*/
{
base
=
(int)pow(10,
t-i-1);
/*用base保存與temp位數相同的最小數,比如10,100,1000等*/
s
=
temp
/
base;
/*求temp的最高位的值*/
if(
(
temp
%
10
)
!=
s
)
/*比較s的值是否跟temp的最低位相等,如果不相等則立即停止循環,如果相等則繼續循環比較其他位*/
{
break;
}
temp
-=
s
*
base;
/*去掉temp的最高位,因為前面已經比較過了*/
temp
/=
10;
/*去掉temp的最低位,因為前面已經比較過了*/
}
if(
temp
)
/*如果temp不為0,說明提前跳出了循環,因此不是迴文數*/
{
printf("%d不是迴文數\n",
number);
}
else
{
printf("%d是迴文數\n",
number);
}
}