這裡蒐索程式師資訊,查找有用的技術資料
当前位置:首页 » 编程语言 » c语言字符串是回文吗
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言字符串是回文吗

发布时间: 2022-05-04 17:35:07

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>

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语言,判断一个字符串是不是回文,不知道错在哪里,求解。

str2 是数组名,指向数组的地址,是常量,不可更改。所以这里错了:str2 = strrev(str1);
你可以用循环把值一个个的赋给str2.

❹ C语言 判断一个字符串是不是回文

while是找到字符串的末尾,'\n'是所有字符串的最后一个字符,for循环是用来判断是不会回文的。j是从第一个字符开始,i是从最后一个字符开始,比较完一个字符后,j++,i--,一旦发现某个地方首位是不相等的,则不是回文退出

❺ C语言 字符回文

/*1.假设称正读和反读都相同的字符序列为"回文",例如,"abcddcba"、 "qwerewq"是回文,"ashgash"不是回文。
是写一个算法判断读入的一个以'@'为结束符的字符序列是否为回文。*/
#include<stdio.h>
#include<malloc.h>
#define MAXSIZE 100
typedef char DataType;
typedef struct{
DataType data[MAXSIZE];
int top;
}SeqStack,*PseqStack;//定义一个线性表栈。
typedef struct {
DataType data[MAXSIZE];
int front,rear;
}SeqQueue,*PseqQueue;//定义一个线性表队。
PseqQueue Init_SeqQueue()
{
PseqQueue Q;
Q=(PseqQueue)malloc(sizeof(SeqQueue));
if(Q)
{
Q->front=0;
Q->rear=0;
}
return Q;
}//队列初始化.
PseqStack Init_SeqStack(void)
{
PseqStack S;
S=(PseqStack)malloc(sizeof(SeqStack));
if(S)
S->top=-1;
return(S);
}//初始化栈。
int Push_SeqStack(PseqStack S,DataType x)
{
if(S->top==MAXSIZE-1)
return (0);
else
{
S->top++;
S->data[S->top]=x;
return (1);
}
}//入栈。
int Empty_SeqStack(PseqStack S)
{
if(S->top==-1)
return(1);
else return (0);
}//判断是否栈空。
int Pop_SeqStack(PseqStack S,DataType *x)
{
if(Empty_SeqStack(S))
return (0);
else
{
*x=S->data[S->top];
S->top--;
return (1);
}
}//出栈。

int In_SeqQueue(PseqQueue Q,DataType x)
{
if((Q->rear+1)%MAXSIZE==Q->front)
{
printf("队满");
return (-1);
}
else
{
Q->rear=(Q->rear+1)%MAXSIZE;
Q->data[Q->rear]=x;
return 1;
}
}//入队。
int Empty_SeqQueue(PseqQueue Q)
{
if(Q&&Q->front==Q->rear)
return 1;
else return 0;
}//判断队空。
int Out_SeqQueue(PseqQueue Q,DataType *x)
{
if(Empty_SeqQueue(Q))
{
printf("队空");
return (-1);
}
else
{
Q->front=(Q->front+1)%MAXSIZE;
*x=Q->data[Q->front];
return 1;
}
}//出队。
int huiwen(char *ch)
{
char x,y;
int count;
PseqStack S;
PseqQueue Q;
S=Init_SeqStack();
Q=Init_SeqQueue();
while(*ch!='\0')
{
Push_SeqStack(S,*ch);
In_SeqQueue(Q,*ch);
ch++;
}
count=1;
while(!Empty_SeqStack(S)&&!Empty_SeqQueue(Q))
{
Pop_SeqStack(S,&x);
Out_SeqQueue(Q,&y);
if(x!=y)
{
count=0;
break;
}
}
if(count)
{
printf("是回文。\n");
return 1;
}
else
{
printf("不是回文。\n");
return 0;
}
}//主算法。
void main()
{
char ch[MAXSIZE];
printf("输入一个符串:");
gets(ch);
huiwen(ch);
}//主函数。

❻ 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;

}

运行效果:

(6)c语言字符串是回文吗扩展阅读:

return 0代表程序正常退出。return是C++预定义的语句,它提供了终止函数执行的一种方式。当return语句提供了一个值时,这个值就成为函数的返回值。

return语句用来结束循环,或返回一个函数的值。

1、return 0,说明程序正常退出,返回到主程序继续往下执行。

2、return 1,说明程序异常退出,返回主调函数来处理,继续往下执行。return 0或return 1对程序执行的顺序没有影响,只是大家习惯于使用return(0)退出子程序而已。

❼ C语言怎么判断一个数是否是回文数

所谓回文数,就是说一个数字从左边读和从右边读的结果是一模一样的,比如12321。

以下是判断一个数是否为回文数的代码:

❽ 输入一个字符串,判断它是不是回文 C语言

用两头凑法,找到字符串的最后一个字符,与第一个字符比较。然后各自向中间移动,逐个比较。如果比较中出现不同,则不是回文。当二者相遇时,一直都相同,则字符串为回文。

参考代码如下:

inthuiwen(char*s)
{
char*p=s;
while(*p)p++;//找到结束符的位置。
p--;//的前一个字符,就是字符串的最后一个字符。
while(s<p)
{
if(*s!=*p)return0;//发现不同,不是回文。
s++;
p--;//二者向中间移动。
}
return1;//到相遇后一直相同,是回文。
}

intmain()
{
chars[100];
scanf("%s",s);//输入字符串。
if(huiwen(s))//判断是否回文并输出结果。
printf("%s是回文字符串 ",s);
else
printf("%s不是回文字符串 ",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;

}

总结:编程不容易,思考需谨慎。面向过程的的编程,任何情况都要考虑出来,这样你的程序才是正确的。