c语言回文数的编写
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/14 05:32:27 作文素材
篇一:C语言回文数猜想
2.7.1.1 练习1 回文数的猜想
1
2
3 输入一个数 一个数,加上是这个数的倒序数,得出结果 判断是否为回文数,是就退出,否则返回第2步骤
回文数:1336331、9559
典型:输入1735
1753+3571=5324
5324+4235=9559
9559就是一个回文数
程序解答过程:
1
2
设计出各函数功能,便于调用 编码,解答
各函数功能:
输入数据:int input(void)
对数据取逆序:int reverse(int data)
判断回文数:int ispalin(int data)
溢出判断: int isover(int data
//palin.c
#include
int input(void)
{
}
int data=-1;//防止赋值失败? for(;;) { } return data; scanf("%d",&data); if(data>=10)//使得输入的数字不小于10 break; scanf("%*[^\n]");//取得除了换行\n之外的所有字符,抛掉 scanf("%*c");//抛掉换行\n
int reverse(int data)
{
}
int ispalin(int data)
{
}
int isover(int data)
{
}
int main()
{
} int data=input(); int i; for(i=0;!isover(data);data+=reverse(data)) { } printf("Can not find Palin!\n"); return 0; if(!ispalin(data)) else { } printf("Palin:%d\n",data); return 0; printf("[%d]:%d+%d=%d\n",++i,data,reverse(data),data+reverse(data)); return data<=0||reverse(data)<=0;//当data大小越界,即超过2^31-1,变成负数 return data==reverse(data); int res=0; for(;data>0;data=data/10)//取得data的的逆序 res=res*10+data%10;//data%10取得data最后一位数字 return res;
知识:unsigned int:2^32-1
int : 2^31-1
超过了最大值会越界,越界的数会变成负数
知识盲点:
1) scanf(“%*c[^\n]”);
2) scanf(“%*c”);
%*c :读取出来,再扔掉,即是把缓冲区清除掉,c是格式控制符,控制把字符类型的输入清除
[^\n] 输入的字符除了换行\n之外的集合
1的解析:将所有不等于\n的字符扔掉
2的解析:将输入的一个字符去掉
篇二:C语言回文数的判断
C语言回文数的判断
#include
int main()
{
void A(char a[],int n); char b[N];
int m;
printf("请输入一个数:"); gets(b);
m = strlen(b);
A(b,m);
puts(b);
return 1;
}
void A(char a[],int n) {
int i;
for(i=0;i<=n/2;i++) {
if(a[i]!=a[n-i-1])
{
printf("No!\n");
return 0;
}
}
printf("yes!");
}
篇三:C语言【回文数】的求法
【回文数】的求法
by Minecig
首先用最简单的程序来显示这种算法:
#include
int ispal(int n)
{
int result=0;
while(n)
{
result=n%10+result*10;
n/=10; }
return result;
(转载于:www.smhaida.com 海 达 范 文网:c语言回文数的编写)}
void main()
{
int a=12345;
int b=ispal(a);
printf("%d %d",a,b);
}
下面的程序只是在上面的算法中加入一些“修饰”:
#include "stdio.h"
int ispal(int n)
{
int m=0;
int t=n;
while(t)
{
m=m*10+t%10;
t/=10;
}
return m==n; //<--<--<--<---<-----<---here 这种方法不错哟 }
void main()
{
int i;
int cnt=0;
for(i=10;i<10000;i++)
{
if(ispal(i))
{
cnt++;
printf("%d\t",i); }
}
printf("合计:%d个\n",cnt); }
篇四:100个经典C语言编程
101个经典C语言编程例子
篇五:c语言新判断回文数
#include
#include
#include
int main()
{int judge(char *p,int start,int n); int n,start=0;
char word[100];
gets(word);
n=strlen(word);
if(judge(word,start,n)==0) printf("Yes.\n"); else printf("No.\n");
}
int judge(char *p,int start,int n)
{
if((start==n/2)&&(*(p+start)==*(p+n-1-start))) return 0;
else if(*(p+start)==*(p+n-1-start))
return judge(p,start+1,n);
else return 1;
}
作文素材