作业帮 > 作文素材 > 教育资讯

c语言回文数的编写

来源:学生作业帮助网 编辑:作业帮 时间:2024/09/24 11:27:46 作文素材
c语言回文数的编写作文素材

篇一: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 #include #define N 100

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;

}

作文素材