回 帖 发 新 帖 刷新版面

主题:各位大虾求助!!!急急急!!!!

各位大虾求助!!!
急急急!!!!
从键盘上输入一个正整数,判别它是否为回文数。要求用数组编程。
    回文数就是指正读和反读都一样的数,如1234321 是回文数。
    提示:将数字拆分放在一个数组中,数字没有规定大小,设有10位元素。 用两个变量记录数组元素最大值和最小值的下标。在循环中,比较这两个下标所对应的元素,并使两个下标同时向中间移动。只要发现一个不相等的元素,表示该数不是回文数。直至两个下标相等,如没有出现不相等元素,则该整数是回文数。

回复列表 (共7个回复)

沙发


[code=c]
请填写代码
#include <stdio.h>

int main()
{
    int i,j=0,a[10];
    for(i=0;i<10;i++)
        scanf("%1d",&a[i]);
    for(j=0;j<5;j++)
        if(a[j]!=a[9-j])
            break;
        if(j==5)
            printf("输入的数是回文数!\n");
        else
            printf("输入的数不是回文数!\n");
        return 0;
}[/code]

这里假定有10个数。。

板凳


不是啊题目中不是说这个数要是从键盘中输入的,应该是之前还不知道这个数是多少位的吧

3 楼


1L都给出代码了,你自己稍微改下不就ok了?!

4 楼


现在最主要的问题就是我不知道应该怎么样判断这个输入的数字的位数啊

5 楼

暂时有两个思路供lz作为参考:
1, 位数自己输入;
2, 定义ct = 0,输入一个数字ct++,得到输入数字的位数;

6 楼

[quote]
现在最主要的问题就是我不知道应该怎么样判断这个输入的数字的位数啊[/quote]
scanf函数有个格式是 %n.只要不输入前导0的话,下面的代码可以知道输入的数的位数。

int main (void)
{
  int start, end, num;
  scanf ("%n%d%n", &start, &num, &end);
  printf ("%d是%d位数", num, end-start);
  return 0;
}

7 楼

[quote][quote]
现在最主要的问题就是我不知道应该怎么样判断这个输入的数字的位数啊[/quote]
scanf函数有个格式是 %n.只要不输入前导0的话,下面的代码可以知道输入的数的位数。

int main (void)
{
  int start, end, num;
  scanf ("%n%d%n", &start, &num, &end);
  printf ("%d是%d位数", num, end-start);
  return 0;
}[/quote]

[em28][em28]

我来回复

您尚未登录,请登录后再回复。点此登录或注册