铜锣烧学电子 2022-03-12 15:29 采纳率: 78.6%
浏览 20
已结题

为什么我在函数里面定义一下变量,结果输出就是0 0了

问题遇到的现象和发生背景

img


我在函数里面定义了一下num1和2;

问题相关代码,请勿粘贴截图

#include<stdio.h>
int num1,num2;
void cn(char s[])
{

int i=0;
int num1=0,num2=0;//为什么人这个地方int去掉就正确了,不去掉就是输出 0  0
while(s[i]!='\0')
i++;
for(;i>=0;i--)
{
if((s[i]>='A')&&(s[i]<='Z'))
   num1++;
if((s[i]>='a')&&(s[i]<='z'))
   num2++;
}

}
int main()
{
char s[101];
while(~scanf("%s",s))
{
cn(s);
printf("%d %d\n",num1,num2);
}
return 0;
}

运行结果及报错内容

img

我的解答思路和尝试过的方法

我吧int去掉就正确了

我想要达到的结果

给我讲一下为什么吧

  • 写回答

1条回答 默认 最新

  • qq_41851997 2022-03-12 16:30
    关注

    num 1 2作用域的问题
    上面的1 2是全局变量。而cn里面的num 1 2是局部变量,
    因为cn里面定义了num 1 2,所以你一开始写的num1 2在cn里面是不生效的,在cn里面改变的num1 2是改变他自己的值,不是全局变量的值。如果cn里面不去定义这两个变量,那么才会生效全局变量的那两个

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月20日
  • 已采纳回答 3月12日
  • 创建了问题 3月12日

悬赏问题

  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目