vaghxc 2024-01-01 12:53 采纳率: 88.2%
浏览 2
已结题

求答疑 调试栏的值固定不变但调试步骤已让值加1

题目是编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。
以下我编写的程序旁边的调试栏里,最后四行的zimu,shuzi,kongge,qita的值不会变,一直都是0。可是调试步骤又确实让它们加1了,值就是不变。想知道为什么以及怎么改
还有我想知道当返回值有多个时,return后怎么写?就是这里的字母,数字,空格,其他字符数的值返回主函数输出应该怎么操作呢

img

img

#include<stdio.h>
char tongji(char str[],int a)
{
    int zimu=0,shuzi=0,kongge=0,qita=0;
    for(int i=0;i<a;i++)
    {
        if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
        zimu++;
        else if(str[i]>='0'&&str[i]<='9')
        shuzi++;
        else if(str[i]==' ')
        kongge++;
        else
        qita++;
    }
}
int main()
{
    char str[20];
    int zimu=0,shuzi=0,kongge=0,qita=0;
    printf("请输入字符串"); 
    gets(str);
    tongji(str,20);
    printf("%d,%d,%d,%d",zimu,shuzi,kongge,qita);
    return 0;
}

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-01 14:05
    关注

    【以下回答由 GPT 生成】

    问题的原因是函数tongji中的计数变量(zimu、shuzi、kongge、qita)是局部变量,函数结束后内存会自动释放,所以在主函数中无法获取到函数中的计数结果。

    要解决这个问题,可以使用指针作为函数参数,通过指针修改主函数中的计数变量值。

    以下是修改后的代码:

    #include<stdio.h>
    
    void tongji(char str[], int a, int *zimu, int *shuzi, int *kongge, int *qita)
    {
        for(int i=0; i<a; i++)
        {
            if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
                (*zimu)++;
            else if(str[i]>='0'&&str[i]<='9')
                (*shuzi)++;
            else if(str[i]==' ')
                (*kongge)++;
            else
                (*qita)++;
        }
    }
    
    int main()
    {
        char str[20];
        int zimu=0, shuzi=0, kongge=0, qita=0;
        printf("请输入字符串: "); 
        gets(str);
        tongji(str, 20, &zimu, &shuzi, &kongge, &qita);
        printf("字母个数:%d,数字个数:%d,空格个数:%d,其他字符个数:%d\n", zimu, shuzi, kongge, qita);
        return 0;
    }
    

    在这个修改后的代码中,增加了指针参数,并在函数内部使用指针来修改主函数中的计数变量的值。修改后,在主函数中可以正确输出计数的结果。

    请尝试下方的代码,并在调试栏中查看结果。如果还有其他问题,请告诉我。



    【相关推荐】


    • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/741233
    • 除此之外, 这篇博客: 纸牌游戏(C语言实现)中的 星期天小哼和小哈约在一起玩桌游,他们正在玩一个非常古怪的扑克游戏——“小猫钓鱼”。游戏的规则是这样的:将一副扑克牌平均分成两份,每人拿一份。小哼先拿出手中的第一张扑克牌放在桌上,然后小哈也拿出手中的第一张扑克牌,并放在小哼刚打出的扑克牌的上面,就像这样两人交替出牌。出牌时,如果某人打出的牌与桌上某张牌的牌面相同,即可将两张相同的牌及其中间所夹的牌全部取走,并依次放到自己手中牌的末尾。当任意一人 手中的牌全部出完时,游戏结束,对手获胜。 部分也许能够解决你的问题。

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月9日
  • 已采纳回答 1月1日
  • 创建了问题 1月1日

悬赏问题

  • ¥100 求懂行的大ge给小di解答下!
  • ¥15 pcl运行在qt msvc2019环境运行效率低于visual studio 2019
  • ¥15 MAUI,Zxing扫码,华为手机没反应。可提高悬赏
  • ¥15 python运行报错 ModuleNotFoundError: No module named 'torch'
  • ¥100 华为手机私有App后台保活
  • ¥15 sqlserver中加密的密码字段查询问题
  • ¥20 有谁能看看我coe文件到底哪儿有问题吗?
  • ¥20 我的这个coe文件到底哪儿出问题了
  • ¥15 matlab使用自定义函数时一直报错输入参数过多
  • ¥15 设计一个温度闭环控制系统