作业帮 > 字数作文 > 教育资讯

c语言判断回文数

来源:学生作业帮助网 编辑:作业帮 时间:2024/09/25 05:30:10 字数作文
c语言判断回文数字数作文

篇一:C语言判断回文数

题目6:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

#include

main()

{

int a,x,y,p,q;

printf("输入一个五位数:\n");

scanf("%d",&a);

for(;a<10000||a>99999;)

{

printf("输入错误再次输入:\n");

scanf("%d",&a);

}

x=a%10;

y=a/10000;

q=(a/10)%10;

p=(a/1000)%10;

if(x==y&&q==p)

printf("%d是回文数\n",a);

}

篇二:用c语言判断是否为回文数

输入一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

#include

voidpanduan(int a);

int main()

{

int x;

printf("输入一个五位数\n");

scanf("%d",&x);

/*

//运行一次,输入错误或者正确都结束 if (x > 99999 || x <10000) { printf("输入错误\n"); } else { panduan(x); } */ //循环输入知道正确为止结束 for (;x>99999 || x<10000;) {

printf("输入错误重新输入\n");

scanf("%d",&x);

}

panduan(x);

return 0;

}

voidpanduan(int a)

{

intb,c,d,e;

b = a / 10000;

c = (a / 1000) % 10;

d = (a % 100) / 10;

e = a % 10;

if (b == e && c == d )

}

{ printf("是回文数\n"); } else printf("不是回文数\n");

篇三:数据结构C语言版判断回文数实验报告

数据结构实验报告

班 级

班内序号

学生姓名

指导教师

时间

一、实验目的 判断回文数 : : : 2011年10月24日 : :

熟悉栈和队列的各项操作,区别栈和队列的操作原理。

二、实验内容

利用栈的操作完成读入的一个以*结尾的字符序列是否是回文序列的判断。

回文序列即正读与反读都一样的字符序列,例如:43211234*是回文序列,而789678*不是。

三、数据结构及算法思想

算法思想:从键盘上读取一个字符,同时存储在顺序栈与链队列之中,直到字符序列的最后一个字符为*停止插入。在程序中设置了一个标志位flag,将输入的序列分别做入栈、出栈、入队、出队操作,若出栈与出队的数据完全一致,则将flag标志为1,否则为零。Flag为1,则表示该序列是回文序列,否则,为非回文序列。

四、模块划分

1. 对各个模块进行功能的描述

(1)void InitStack(SeqStack *S):栈初始化模块,即初始化一个空栈,随后对该空栈进行数据的写入操作;

(2)int Push(SeqStack *S,char x,int cnt):入栈操作,即给空栈中写入数据,数据长度有宏定义给出;

(3)int Pop(SeqStack * S,char * x):出栈操作,即将栈中的数据输出,由于栈的操作是先进后出,因此,出栈的数据是原先输入数据的逆序;

c语言判断回文数

(4)void InitQuene(SeqQuene *Q):队列初始化,即初始化一个空队列,最后对该空队列进行数据的写入操作;

(5)int EnterQuene(SeqQuene *Q,char x,int cnt):入队操作,即给空队列中写入数据,数据长度一样有宏定义给出;

(6)int DeleteQuene(SeqQuene *Q,char *x,int cnt):出队操作,即将队列中的数据输出,由于队列的操作是先进先出,因此,出队的数据室原先输入数据的正序;

(7)void main():主函数,用于调用前面的模块,进行出队数据与出栈数据的比较,判断输入的序列是否是回文序列。

2. 模块之间关系及其相互调用的图示

五、详细设计及运行结果

(1)程序设计及编码

#include

#include

#define MAX 50

#define FALSE 0

#define TURE 1

//定义栈

typedef struct

{

char elem[MAX];

int top;

}SeqStack;

//定义循环队列

typedef struct

{

char element[MAX];

int front;

int rear;

}SeqQuene;

//初始化栈

void InitStack(SeqStack *S)

{

S->top = -1;//构造一个空栈

}

//入栈

int Push(SeqStack *S,char x,int cnt)

{

if(S->top == cnt-1)

return(FALSE);

S->top++;

S->elem[S->top] = x;

return(TURE);

}

//出栈

int Pop(SeqStack * S,char * x)

{

if(S->top == -1)

return(FALSE);

else

{

*x = S->elem[S->top];

S->top--;

return(TURE);

}

}

//初始化队列

void InitQuene(SeqQuene *Q)

{

Q->front = Q->rear = 0;

}

//入队

int EnterQuene(SeqQuene *Q,char x,int cnt)

{

if((Q->rear+1)%(cnt+1) == Q->front)

return(FALSE);

Q->element[Q->rear] = x;

Q->rear = (Q->rear+1)%(cnt+1);

return(TURE);

}

//出队

int DeleteQuene(SeqQuene *Q,char *x,int cnt)

{

if(Q->front == Q->rear)

return(FALSE);

*x = Q->element[Q->front];

Q->front = (Q->front+1)%(cnt+1);

return(TURE);

}

//主函数

void main()

{

int i,cnt,flag;

SeqStack s;

SeqQuene q;

char a[MAX],b[MAX],c[MAX];

flag=0;

printf("请输入由*结束且小于%d的回文序列:\n",MAX); for(i = 0;i

{

scanf("%c",&a[i]);

if(a[i] == '*')

break;

}

cnt = i;

printf("输入了有%d个字符。\n",cnt);

InitStack(&s);

InitQuene(&q);

for(i = 0;i

{

EnterQuene(&q,a[i],cnt);

Push(&s,a[i],cnt);

}

printf("正序字符串为:\n");

for(i = 0;i

篇四: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语言回文数猜想

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的解析:将输入的一个字符去掉

字数作文