| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 908 人关注过本帖
标题:大佬们 调试问题
只看楼主 加入收藏
wuxiami
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2022-7-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
大佬们 调试问题
大佬们  问一个挺奇怪的问题    就是我的程序调试数组中存的数据看起来不对  但可以正常运行  输出也正确
这是怎么回事

#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编辑过]

搜索更多相关主题的帖子: 调试 printf for int temp 
2022-07-20 19:30
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:10 
你用 getchar() 获得的是字符,比如 '1' 等,而非 1 等。
2022-07-21 08:35
wuxiami
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2022-7-17
收藏
得分:0 
回复 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编辑过]

2022-07-21 10:39
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
回复 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?"":"不是") );
}
2022-07-21 12:22
wuxiami
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2022-7-17
收藏
得分:0 
回复 4楼 rjsp
我用的c
2022-07-21 16:11
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
以下是引用wuxiami在2022-7-21 16:11:42的发言:

我用的c

巧了,我在4楼贴的代码也是纯正C语言编写,只要使用任意一款符合C语言标准的编译器都能编译通过。你甚至可以直接在网页上点击代码右上角的“运行”按钮,进行在线编译运行。
2022-07-21 20:55
op123
Rank: 6Rank: 6
等 级:贵宾
威 望:21
帖 子:170
专家分:461
注 册:2022-6-4
收藏
得分:10 
这段代码也能在C++编译器里运行
2022-07-22 17:37
wuxiami
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2022-7-17
收藏
得分:0 
醉了  我搞定了   对了问一句  getchar()算是什么数据类型
谢谢
2022-07-22 23:30
op123
Rank: 6Rank: 6
等 级:贵宾
威 望:21
帖 子:170
专家分:461
注 册:2022-6-4
收藏
得分:0 
getchar()与char有关,能理解为char类型
收到的鲜花
  • wuxiami2022-07-23 19:51 送鲜花  1朵  
2022-07-23 15:50
wuxiami
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2022-7-17
收藏
得分:0 
回复 9楼 op123
好的谢谢
2022-07-23 19:50
快速回复:大佬们 调试问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018674 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved