我们先用一个数组储存字符串,之后分别比较第i位与倒数第i位的值就可以知道是不是回文了。
代码如下:
#include<stdioh>#include<stringh>
#define size 1000
int main(){
char m[size];
int i,l;
gets(m);
l = strlen(m);//计算长度
printf("原字符串");
for(i = 0; i <= l/2;i++){
if(m[i] != m[-i]){
printf("不");//判断
break;
}
}
printf("是回文。");
return 0;
}
“构造栈;构造队列; 使用栈
和队列进行判断”这个我也不是太懂。
我在网上看到过回文,使用了好多复杂的函数,我都还没学过。
不过我自己写了一个,你看看,原理很简单。
用了substr函数 for循环 getlin(提取一句话,遇回车终止)
是在C++里写的,不知道在C里能不能用。
<这里在C++的getline(cin,stringname函数有个bug(第一次从键盘getlin输入两个回车才能getlin,但是第二个回车会保存到下一次的getlin)所以循环getline时会出错> 我把循环去掉了。
//
//Palindrome Judgment program 回文判断程序 U6ex4 page235
//cin a sentence,cout its characters in reverse order
//and judgment whether the input line is a palindrome
//
#include<iostream>
#include<string>
using namespace std;
string sen;
string pal;//palindrome回文
int len,i,j;//len=length字符串的长度,i是for循环变量,j判断倒序与正序相同字符的个数
//如果它等于字符串总的长度,即为回文。
void main()
{
cout<<"please input a sentence\
";
getline(cin,sen);
cout<<"the reverse order is:\
";
len=senlength();
j=0; //倒序与正序相同字符的个数,赋初值0
for(i=0;i<len;i++)
{
pal=sensubstr(len-i-1,1);
cout<<pal;
if(pal==sensubstr(i,1))
j++;
}
if(j==len)
cout<<endl<<"this sentence IS a palindrome\
";
else
cout<<endl<<"this sentence is NOT a palindrome\
";
}
#include<stdioh>
int main(void){
int i = 0, s = 0;
int n;
printf("输入要判断的数");
scanf("%d", &n);
int t = n;
while(n > 0){
s = 10;
i = n % 10;
s += i;
n -= i;
n /= 10;
}
if(n == t){
printf("%d是回文数", t);
}else{
printf("%d不是回文数", t);
}
return 0;
}
上面代码值适合判断12345这种前后没有0的数字
0122330 12300 这样的无法判断
#include <stdioh>
#include <stringh>
void main(){
char s[100];
scanf("%s",s);
int num=strlen(s);
for(int i=0;i<num/2;i++){
if(s[i]!=s[num-1-i]){
printf("不是回文");
return;
}
}
printf("是回文数");
}
#include<stdio.h>
#include<string.h>
intmain()
{
chara[100]={0};
inti=0;
intlen=0;
printf("pleaseinputcharacterstring:\n");
gets(a);
len=strlen(a);//计算输入字符串的长度;
for(i=0;i<(len/2);i++)//只需要判断前一半(len/2)长度就好了
{
if(a[i]!=a[len-1-i])//判断是否为回文数;
{
printf("不是回文数\n");
return0;
}
}
printf("是回文数\n");
return0;
}
扩展资料:
printf用法:
printf()函数的调用格式为:printf("<格式化字符串>",<参量表>)。
其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。
参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。
比如:
inta=6789;
printf("a=%d\n",a);
输出结果为a=6789。
#include
int
symmetry()
{
char
ch1,ch2;
scanf("%c",&ch1);
if(ch1=='-')//递归结束条件。
return
1;
else
if(symmetry())//自己调用自己。
{
scanf("%c",&ch2);
if(ch1==ch2)
return
1;
else
return
0;
}
return
0;
}
void
main()
{
printf("输入一组字符(形式为W-M):\n");
if(symmetry())
printf("是回文字符\n");
else
printf("不是回文字符\n");
}
int huiwen(char s)
{
char p = s;
while(p) p++;//找到结束符\0的位置。
p--;//\0的前一个字符,就是字符串的最后一个字符。
while(s<p)
{
if(s != p) return 0;//发现不同,不是回文。
s++;
p--;//二者向中间移动。
}
return 1;//到相遇后一直相同,是回文。
}
int main()
{
char s[100];
scanf("%s",s);//输入字符串。
if(huiwen(s))//判断是否回文并输出结果。
printf("%s是回文字符串\n",s);
else
printf("%s不是回文字符串\n",s);
return 0;
}
//新加了a[4]='\0';
#include <stdioh>
void huiwen(char x[],int len)
{
char q=x,p;
len=strlen(x);
p=q+len-1;
for(;p>=q;p--,q++)
if(q!=p)
{
printf("Not");
return;
}
printf("Yes");
}
void main()
{
char a[5];
int i;
/ gets(a); /
/ puts(a); /
for(i=0;i<4;i++)
{
fflush(stdin);
a[i]=getchar();
}
a[4]='\0';//新加的新加的新加的新加的新加的
puts(a);
huiwen(a,5);
getchar();
}
以上就是关于c语言编写程序:输入一个字符,如果该字符为回文输出“回文”,若该全部的内容,包括:c语言编写程序:输入一个字符,如果该字符为回文输出“回文”,若该、设计回文判断程序,对输入的字符串进行回文判断、编写程序,判断一字符串是否是回文。如果是则输出“该字符串是回文”若不是,则输出“该字符串不是回文”等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)