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

大佬们 调试问题

wuxiami 发布于 2022-07-20 19:30, 1066 次点击
大佬们  问一个挺奇怪的问题    就是我的程序调试数组中存的数据看起来不对  但可以正常运行  输出也正确
这是怎么回事

#include <stdio.h>

int main()
{
   
    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 19:53编辑过]

9 回复
#2
rjsp2022-07-21 08:35
你用 getchar() 获得的是字符,比如 '1' 等,而非 1 等。
#3
wuxiami2022-07-21 10:39
回复 2楼 rjsp
但是我的这个代码
#include<stdio.h>

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

    printf("输入要判断的数字位数");
    scanf_s("%d", &weishu);
    //weishu = getchar();                 //
    printf("请输入要判断的数字:");

    for (i = 0; i < weishu; i++)
    {
        shuzi[i] = getchar();
    }
    for (i = 0; i < (weishu/2); i++)
    {
        if (shuzi[i] != shuzi[weishu - 1 - i])
        {
            break;
        }
    }
    if (i <weishu/2-1)
    {
        printf("\n不是回文数");
    }
    else
    {
        printf("\n是回文数");
    }
}
这个输入位数  用循环和getchar分解各位数字   我输入的13位数    不知道哪里错  一直提示不是回文数   调试的输出也不对 找不到哪里的问题

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

#4
rjsp2022-07-21 12:22
回复 3楼 wuxiami
程序代码:
#define _CRT_SECURE_NO_WARNINGS // 看你代码中用了scanf_s这个垃圾,那估计你用的是VC++,需要加此宏,以使之符合C/C++标准

#include <stdio.h>
#include <string.h>
#include <stdbool.h>

int main( void )
{
    char buf[1000];
    printf( "%s: ", "请输入要判断的数字" );
    scanf( "%999[0-9]", buf );

    bool b = true;
    const size_t len = strlen(buf);
    for( size_t i=0; i!=len/2 && b; ++i )
        b = buf[i]==buf[len-1-i];

    printf( "%s %s回文数\n", buf, (b?"":"不是") );
}
#5
wuxiami2022-07-21 16:11
回复 4楼 rjsp
我用的c
#6
rjsp2022-07-21 20:55
以下是引用wuxiami在2022-7-21 16:11:42的发言:

我用的c

巧了,我在4楼贴的代码也是纯正C语言编写,只要使用任意一款符合C语言标准的编译器都能编译通过。你甚至可以直接在网页上点击代码右上角的“运行”按钮,进行在线编译运行。
#7
op1232022-07-22 17:37
这段代码也能在C++编译器里运行
#8
wuxiami2022-07-22 23:30
醉了  我搞定了   对了问一句  getchar()算是什么数据类型
谢谢
#9
op1232022-07-23 15:50
getchar()与char有关,能理解为char类型
#10
wuxiami2022-07-23 19:50
回复 9楼 op123
好的谢谢
1