编程题:
判断一个数是否为回文数。
设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数
#include <stdio.h> #include <string.h> bool isPalindrome(char str[]) { int ks = 0; // 字符串的开始位置 int js = strlen(str) - 1; // 字符串的结束位置 while (ks < js) { // 从左往右依次比较,类似向中间靠齐查找 if (str[ks] != str[js]) { return false; // 如果有不相等的字符,则不是回文 } ks++; // 移动左指针 js--; // 移动右指针 } return true; // 所有字符都相等,是回文 } int main() { char str[100]; // 假设输入的字符串不超过99个字符 int n = 0; while (n != 1) { printf("请输入一个字符串(输入'1'退出):"); fflush(stdout); scanf("%10s", str); // 读取字符串,限制长度为10 if (strcmp(str, "1") == 0) { n = 1; // 如果用户输入'1',则退出循环 continue; } if (isPalindrome(str)) { printf("这是一个回文字符串。\n"); fflush(stdout); } else { printf("这不是一个回文字符串。\n"); fflush(stdout); } } return 0; }
include <stdio...
用户登录可进行刷题及查看答案
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; }
参考方法:
#include <stdio.h> #include<string.h>
int main() { int a=12021; char s[10]={'\0'},s1[10]={'\0'}; sprintf(s,"%d",a); // 将整数转换为字符串 int n=strlen(s); int j=0; for(int i=n-1;i>=0;i--) { s1[j++]=s[i]; } //s[j]='\0'; printf("%s %s\n",s,s1); if(!strcmp(s,s1)) printf("整数%d是回文串",a); else printf("整数%d不是回文串",a); return 0; }
登录后提交答案