猿问

数字回文程序

  • 问题描述

  • “回文”是一种特殊的数或者文字短语。他们无论是顺读还是倒读,结果都一样。例如:12321, 55555,45554。读入一个5位整数,判断它是否是回文数。
  • 输入

  • 多组测试数据,每组一行,一个五位整数,数据以0结尾。
  • 输出

  • 对每组输入数据输出一行,如果输入数是回文数,输出“Yes.” ,否则输出 “No.” 。
  • 输入样列

  • 12345
    12321
    11111
    0
  • 输出样例

  • No.
    Yes.
    Yes.

自己做的总是不对的,所以想问问大家,谢谢!!

Chihiro咩咩
浏览 2592回答 3
3回答

望远

#include<stdio.h> void main() { int i,j,k,n,flag; char arr[50][5]; printf("请输入你想要测试的数据组数:"); scanf("%d",&n); for(i=0;i<n;i++) { flag=1; getchar(); printf("请输入第%d个数据:",i+1); for(j=0;j<5;j++) { scanf("%c",&arr[i][j]); } for(j=0,k=4;j<k;j++,k--) { if(arr[i][j]!=arr[i][k]) { flag=0; break; } } if(flag) { printf("%c%c%c%c%c是回文数\n",arr[i][0],arr[i][1],arr[i][2],arr[i][3],arr[i][4]); } else { printf("%c%c%c%c%c不是回文数\n",arr[i][0],arr[i][1],arr[i][2],arr[i][3],arr[i][4]); } } }运行结果:

Coolman

从首尾开始分别取一个字符比较,如果不同就停止循环。注意比较次数 start < end,最多比较 长度/2 次。

Coolman

// Java public class Test {     public static void main(String[] args) {         String i = "12345";                  // 0         char[] a = i.toCharArray();         for (int start = 0, end = a.length - 1; start < end; start++, end--) {             if (a[start] != a[end]) {                 System.out.println(false);                 return;             }         }                  // 1         for (int start = 0, end = i.length() - 1; start < end; start++, end--) {             if (i.charAt(start) != i.charAt(end)) {                 System.out.println(false);                 return;             }         }                  System.out.println(true);     } }
随时随地看视频慕课网APP
我要回答