字符回文数判断
回文判断(函数)
编写一个函数int isPalindrome(char s[]),判断参数表示的字符串是否是回文,如果是返回1,否则返回0。在主函数中调用它,判断输入的字符串是否是回文,如果是,输出“yes”,如果不是,输出”No”。
输入
测试数据的个数 t
第一个字符串
第二个字符串
…….
输出
如果是,输出“yes”,如果不是,输出”No”
样例输入
3
abba
abcba
ab
样例输出
Yes
Yes
No
不同的思维是编写一个loop先分长度的奇偶数,偶数一次让前后数对比是否相等不想等跳出loop标记0;奇数中间的不理就好。
但高手的思维不是这样的,有更好的方法:
#include<stdio.h>
#include<string.h>
int isPalindrome(char s[]);
int main()
{
int t,i;
char str[100];
scanf("%d",&t);
getchar();
for(i=0;i<t;i++)
{
gets(str);
if(isPalindrome(str)==1) printf("Yes\n");
else printf("No\n");
}
return 0;
}
int isPalindrome(char s[])
{
int i,j;
char str[100];
/*先将这个字符串倒位赋值给一个新的数组*/
for(i=strlen(s)-1,j=0;i>=0;i--,j++)
str[i]=s[j];
/*记得要加字符串的尾巴*/
str[j]='\0';
/*神奇的调用了对比字符串的幻术strcmp str+compare*/
if(strcmp(str,s)!=0) return 0;
else return 1;
}
hint:注意一个数也是回文数的哦,但下面1就不是素数了,素数是指大于1的数
回文数的快速算法:
问题 L: 输出同时是素数与回文数的数据
题目描述
输出指定范围内的同时是素数与回文数的数据,如果没有,输出“Not found”
输入
测试数据的组数n
第一组指定数据范围的起始值与终止值
第二组指定数据范围的起始值与终止值
……….
第n组指定数据范围的起始值与终止值
输出
输出该范围内同时是素数与回文数的数据,如果没有,输出”Not found”
样例输入
2
100 200
20 50
样例输出
101
131
151
181
191
Not found
#include <stdio.h>
int main()
{
int o,a,b,i,n,k,sum=0,p=0;
scanf("%d", &n);
for (o = 0; o < n; o++)
{
scanf("%d%d", &a, &b);
for (i = a; i <= b; i++)
{
/*判断素数的快速算法*/
for (k = 2; k < i; k++)
{
if (i%k == 0)
break;
}
if (k == i)
{
/*重点重点*/
while (k)
{
sum = sum * 10 + k % 10;
k = k / 10;
}
/*纯利用数学方法的回文数字判断方法*/
if (sum == i)
{
printf("%d\n", i);
p = p + 1;
}
}
sum = 0;
}
if (p == 0)
printf("Not found\n");
p = 0;
}
return 0;
}