#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;
}
我吧int去掉就正确了
给我讲一下为什么吧
num 1 2作用域的问题
上面的1 2是全局变量。而cn里面的num 1 2是局部变量,
因为cn里面定义了num 1 2,所以你一开始写的num1 2在cn里面是不生效的,在cn里面改变的num1 2是改变他自己的值,不是全局变量的值。如果cn里面不去定义这两个变量,那么才会生效全局变量的那两个