(c语言)回文字符串的判断,gets和scanf

问题描述:

判断一个字符串是否是回文字符串。

程序分析:

回文字符串:

回文字符串是指一个字符中的最高位与最低位的字符是一样的,次高位和次低位上的字符是一样的,以此类推。同时,值得注意的是单个字符,或者多个重复的字符也是回文字符串。

(1)定义一个判断回文数的函数,按照上面给出的回文数的定义,我们进行判断。

(2)本程序在主函数传入字符串的过程中发现了用gets函数与用scanf函数的不一样之处。我想让这个程序在一个while循环的控制下可以判断多个字符串再结束。这时候如果用gets不断的读取str的内容则会出现错误。gets读取缓冲区中的内容,当我们每次敲下回车键德尔时候,gets就读取了‘\0‘。这就是为什么每次我们看到的除(第一次以外)每次还没输入值的时候就判断是回文字符串。

代码如下:

/*******************判断一个字符串是否是回文字符串********************/
#include<stdio.h>
#include<string.h>
#define	LENTH 100
int IS_palindromic_str(char arr[]) //定义判断回文字符串的函数
{
	char *left = arr;         //定义指针left指向数组的第一个元素
	char *right;			  //定义指针right

	while(*arr !='\0')	   //结束条件是访问到字符串中的'\0'
	{
		arr++;
	}
	right = arr - 1;
	while(left <= right)
	{
		if(*left == *right)		 //判断是否符合回文字符串的条件
		{
			left ++;
			right--;
		}
		else
			return 0;	 //注意这时候先返回0
	}
	return 1;
}
int main()
{
	char str[100] ;
	int i = 1;
	  while(i)
	  {
		printf("Please input a string:\n");
		gets(str);
		//scanf("%s",str);

		if((IS_palindromic_str(str)== 1))
			printf("str is a palindromic string\n");
		else
			printf("str is not a palindromic string\n");
		printf("continue:1,break:0\n");
		scanf("%d",&i);
		fflush(stdin);	 //如果用gets函数传入str则要使用一个输入内存清空函数
	  }

		return 0;
}

时间: 2024-11-03 20:51:10

(c语言)回文字符串的判断,gets和scanf的相关文章

(C语言)回文字符串的判断

问题描述: 判断一个字符串是否为回文字符串. 程序分析: 回文字符串: (1)是一种特殊的字符串,有着不一样的特点.整个字符串中的每个元素的首尾是相同的,并且内容关于中间"对称". (2)写程序的时候,写一个函数,并且用指针实现判断功能,最后再调用这个函数. (3)在写这个函数的时候,我在主函数里传入一个字符串可以用scanf也可以用gets函数.这个时候如果我想要连续判断字符串是否为回文字符串的时候,我写了一个while循环,这个时候,如果我运用gets这个函数来传入我要判断的字符串

【C语言】回文数与回文字符串的判断。

任意输入一个数,判断是否为回文数. 方法:将高低位互换之后如果仍然相等,则为回文数. #include <stdio.h> int huiwen(unsigned int value) { unsigned int n = value; unsigned int t = 0; while(n) { t = t*10 + n%10; n = n/10; } return (t == value); } int main () { int a,tmp; printf("please en

回文字符串的判断

#include<stdio.h> #include<stdlib.h> #include<string.h> int ishw(char*p) {  char *start=p;  char *end=p+strlen(p)-1;  while(start<end)  {   if(*start==*end)   {    start++;    end--;   }   else    return 0;  }  return 1; } int main()

【C语言】判断一个数是否为回文字符串

//判断一个数是否为回文字符串 #include <stdio.h> int fun(char *str) { int len=strlen(str); int i; for(i=0;i<len;i++) { if(str[i]==(str[len-1])) len--; else return -1; } return 1; } int main () { char p[]="abcwecba"; puts(p); printf("%d\n",f

【c语言】判断一个字符串是不是回文字符串

//判断一个字符串是不是回文字符串 #include <stdio.h> #include <assert.h> int panduan( char *p ) { char *q ; assert( *p != NULL ); q = p; while( *p != '\0') { p++; } p--; while(*q != '\0') { if( *p == *q) { p--; q++; } else return -1; } return 1; } int main()

用c语言实现 判断一个字符串是不是回文字符串

#include<stdio.h>; #include<string.h>; void huiwen( const char* str) { int i; int flag; int len=strlen(str); char *ch=str; while(*ch!='\0') { ch++; } ch--; for(i=1;i<=len/2;i++) { if(*ch==*str) { flag=1; ch--; str++; } else { printf("不

判断一个数是否为回文数,字符串是否为回文字符串

使用C语言编写程序 判断一个数是否为回文数.(ps:回文数也是一个数字,数字的特点是正反序是同一个数字,如12321,3443就是回文数). 要判断该数字是否为回文数,可以通过模除得到该数的反序数字,进行比较是否相等来判读. 具体实现如下: void Practice() { int num, value, flag, var; value = 0; flag = 1; scanf("%d", &num); var = num; while(num) {//value存储num

判断是否是回文字符串(Java实现)

1.回文的定义:“回文数”就是正读倒读都一样的整数.如奇数个数字:98789,这个数字正读是98789 倒读也是98789.偶数个数字3223也是回文数.字母 abcba 也是回文. 2. 判断一个字符串是否是回文字符串(Java实现) 1 public class Test4 { 2 public static boolean isHuiWen(String text) { 3 int length = text.length(); 4 for (int i = 0; i < length /

golang 递归判断回文字符串

判断回文字符串是个比较经典的问题. 思路就是拿第一个字符和最一个字符比较,如果不等退出,相同的话继续刚刚的过程,直到第一个字符和最后一个字符相遇或者他们的距离为1时.说明他们是回文字符串. 下面的代码会忽略空白字符 如"1   1  2 1"会让为是回文字符串. golang package main import (     "fmt"     "os"     "strings"     "unicode/utf