注册 登录
编程论坛 C语言论坛

回文数游戏求解

wuxiami 发布于 2022-07-17 20:10, 2206 次点击
先输入十位以上的数字 由用户设定输入数字的位数(比如用户输入11,则意味着要判断的数字是11位),再输入对应位数的数字,再判断是否是回文数。
          同时,把程序做成无限循环,可以不用退出重新运行,就可以不断做这个判断。
          在此基础上,用户输入的时候,如果输入大写字母Y,则退出游戏。
搞了好久了  一直搞不明白 有问题
求哪位大神帮忙解答
11 回复
#2
rjsp2022-07-18 10:21
由用户设定输入数字的位数(比如用户输入11,则意味着要判断的数字是11位),再输入对应位数的数字
这……,看不懂!为什么要别人先输入位数?如果输入的位数,与实际输入的维数不一致又怎么办?
相当于,说话之前必须先报“我接下来说的话共有xxx个字”,然后再巴啦巴啦

搞了好久了  一直搞不明白 有问题
有问题的话,难道不应该贴出有问题的代码吗?
你去医院,也不可能只说“我有病”却不让医生检查你的身体吧
#3
apull2022-07-18 12:15
这么长的数字用char数组保存,从两头往中间挨个对比,有一个不一样就不是回文。
#4
wuxiami2022-07-18 22:19
回复 2楼 rjsp
#include<stdio.h>

void main()
{
    int shuzi[13];
    int i;
   


    printf("请输入要判断的数字:");

    for (i = 0; i < 13; i++)
        shuzi[i] = getchar();
   
    for (i = 0; i<6;i++)
    {
        if (shuzi[i] != shuzi[12 - i])
            break;
    }
    if (i < 6)
    {
        printf("\n不是回文数");
    }
    else
    {
        printf("\n是回文数");
    }
}
这个是判断十三位回文数的  怎么改成题目要求的     xiexiedashenmen

[此贴子已经被作者于2022-7-18 22:26编辑过]

#5
wuxiami2022-07-18 22:21
回复 4楼 wuxiami
今天搞了好长时间   泪
#6
wp2319572022-07-19 09:20
回复 5楼 wuxiami
判断回文数还是不太难的,不过添加长度限制  就有些无聊了(要写很多没用的废代码,你自己添加吧)
程序代码:

#include <stdio.h>
#include <string.h>
typedef enum{false,true} bool;

bool hw(char *s )
{
    bool ret=true;
    char * beg=s;
    char * end=s+strlen(s)-1;
    while(end>=beg)
    {
        if (*beg!=*end)
        {
            return false;
        }
        beg++;
        end--;
    }
    return ret;
}

int main()
{
    char t[100]={"\0"};
    printf("请输入一个整数:");
    scanf("%s",t);
    if (hw(t))
    {
        printf("%s是一个回文数\n",t);
    }
    else
    {
        printf("%s不是一个回文数\n",t);
    }
    return 0;
}
#7
wuxiami2022-07-19 10:26
回复 6楼 wp231957
麻烦您了
#8
xuequansongmo2022-07-19 10:56
结构流程图怎么画
#9
wp2319572022-07-19 11:43
回复 8楼 xuequansongmo
这玩意还要流程图干嘛
#10
wuxiami2022-07-20 18:16
大佬们  问一个挺奇怪的问题    就是我的程序调试输出看起来不对  但可以正常运行  输出也正确
这是怎么回事

#include <stdio.h>

int main()
{
    // int n[13] = { 1,2,3,6,5,4,7,8,9,10,11,33,23 };
    int n[13], m;
    printf("输入一个数组,包含13个数字");
    for (m = 0; m < 13; m++)
        n[m] = getchar();
    getchar();
    int nums = sizeof(n) / sizeof(int), temp, i;

    for (i = 1; i < nums; i++)
    {
        for (int j = nums - 1; j >= i; j--)
        {
            if (n[j - 1] > n[j])
            {
                temp = n[j - 1];
                n[j - 1] = n[j];
                n[j] = temp;
            }
            for (int a = 0; a < nums; a++)
                printf("");
        }
    }

    for (int a = 0; a < nums; a++)
    {
        printf("%d  ", n[a]);
    }
    printf("\n");
    for (i = 1; i < nums; i++)
    {
        for (int j = nums - 1; j >= i; j--)
        {
            if (n[j - 1] < n[j])
            {
                temp = n[j - 1];
                n[j - 1] = n[j];
                n[j] = temp;
            }
            for (int a = 0; a < nums; a++)
                printf("");
        }
    }
    for (int a = 0; a < nums; a++)
    {
        printf("%d  ", n[a]);
    }

}
就像这题   完全正确  但调试 显示n的值为0*009bfe0c{49,50,51,52,53,54,55,56,57,48,49,50,51}
汗了

[此贴子已经被作者于2022-7-20 18:41编辑过]

#11
wp2319572022-07-21 09:03
回复 10楼 wuxiami
n[m] = getchar();   知道它是干啥的吗
这玩意能往int数组里接收数据吗    你居然说你的结果是正确的   我没看到哪里正确
#12
lin51616782022-07-22 07:26
以下是引用wp231957在2022-7-21 09:03:58的发言:

n[m] = getchar();   知道它是干啥的吗
这玩意能往int数组里接收数据吗    你居然说你的结果是正确的   我没看到哪里正确

还真能
getchar函数返回值类型本来就是int
1