每日一题_____
从键盘输入一个可带空格的字符串,
判断该字符串是否是回文(回文指正向读与逆向读相同的字符串,如 abcddcba或abcba等)。如果字符串是回文,输出"Yes",否则输出"No"。
.
.
#include<stdio.h> #include<string.h> void judge(char str[]); int main(){ char str[50]; int size; printf("请输入一个可带空格的字符串,判断是否是回文:\n"); gets(str); //因为空格也要输进去,不能用scanf judge(str); return 0; } void judge(char str[]){ int i=0; int size=strlen(str); for(;i<size;i++){ if(str[i]!=str[size-i-1]) //例如:abc d cba str[i]和str[size-i-1]对应第一个和最后一个字符,如果不等就跳出。 break; } if(i==strlen(str)) //看是否i进行到了最后 printf("YES\n"); else printf("NO\n"); }
上面是会问字符,还有回文数的判断,即12321是回文数。
下面是回文数:(输入任意位数字)
.
感觉写的好麻烦,寻找好的方法是多么重要 ……
#include <stdio.h> void main(){ int num,yu,i=0,j=0,count=0; //num是输入的数, yu余数, i是store[i]下标, count是计数store有多少个元素 int store[10]; //用于存余数 printf("Please input numbers: "); scanf("%d", &num); //要判断的数据 while(num!=0){ //例如:如果是121,除以10余数为*1*,值为12......重复,余数为*2*,值为1,再重复,余数为*1* store里就是1 2 1 yu=num%10; store[i]=yu; //余数存入 num=num/10; i++; count++; //每次进行count加1,计数store有多少个元素 } for(j=0;j<count;j++){ //往下和字符回文一样了 if(store[j]!=store[count-j-1]) break; } if(j==count) printf("YES\n"); else printf("NO\n"); }
我们将原数倒置后与原数比较,判断是否相同,相同即为回文数,反之不是。
int judge(int num); void main(){ int num; printf("Please input numbers: "); scanf("%d", &num); if(judge(num)) //返回判断 printf("YES"); else printf("NO"); } int judge(int num){ int temp,sum=0,i; //temp是存原有的数 sum是最后倒置的数 temp=num; //先将原数存起来 while(num){ //当num不为0时 i=num%10; //比如121 num%10余数为*1*,值为12 再重复 余数为*2* 值为1,然后再..余数*1* 值为0 num=num/10; sum=sum*10+i; } if(sum==temp) return 1; else return 0; }