利用字符串实现的方法:
#include <stdio.h> #include<string.h> int main() { char str[5]; printf("请输入五位数:"); scanf("%s",str); if(str[0]==str[4]&&str[1]==str[3]) printf("这是一个回文数。\n"); else printf("这不是回文数。\n"); return 0; }
其他参考解法:
#include <stdio.h> int main() { int n; printf("请输入 5 位数字:"); scanf("%d",&n); int x[1000]; int i=0; while(n!=0) { x[i]=n%10; n=n/10; i++; } int z=i; int flag=1; for(i=0;i<z;i++) { if(x[i]!=x[z-1-i]){ flag= 0; printf("这不是回文数\n"); break; } } if(flag==1) { printf("这是回文数\n"); } }
利用递归:
#include <stdio.h> int digits(int k); void reverseprintNum(int g); int main() { int num; printf("输入一个数:"); scanf("%d", &num); printf("位数:%d\n", digits(num)); printf("逆序输出:"); reverseprintNum(num); return 0; } int digits(int k) { if (k / 10 == 0) return 1; else return digits(k / 10) + 1; } void reverseprintNum(int g) { if (g / 10 == 0) printf("%d", g); else { printf("%d", g % 10); // 最后一个数字作为第一个数字输出 reverseprintNum(g / 10); // 删除最后一个数字 } }
参考方法:
#include <stdio.h> int main(){ int k,n,count=0; printf("请输入一个正整数:\n"); scanf("%d",&n); while(n){ k=n%10; printf("%d ",k); count++; n/=10; } printf("\n%d",count); return 0; }
#include<stdio.h> #include<string.h> int reverse(int num, char* buf) { int head = 0, tail = num - 1; int counter = num / 2; if(counter == 0) return 0; *(buf + head) ^= *(buf + tail); *(buf + tail) ^= *(buf + head); *(buf + head) ^= *(buf + tail); return reverse(num - 2, buf + 1); } int main() { char buf[6] = {0}; int length = 5; printf("请输入 5 位数字:"); fgets(buf, 6, stdin); if(buf[4] != '\n' && strlen(buf) == 5) { scanf("%*[^\n]"); scanf("%*c"); } else if(buf[4] == '\n' && strlen(buf) == 5) length = 4; else length = strlen(buf) - 1; reverse(strlen(buf), buf); printf("这个%d位数倒序输出为:%s\n",length, buf); return 0; }
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
1765c-exercise-example30
利用字符串实现的方法:
1764c-exercise-example30
其他参考解法:
1763c-exercise-example29
利用递归:
1762c-exercise-example29
参考方法:
1761c-exercise-example29
参考方法: