为什么没有返回数值
这是我写的一个程序,但不知道为什么没有返回数值,结果都是0,请帮我看看,谢谢#include "stdio.h"
int z,s,k,q;
tongji(char str[])
{int i;
for(i=0;str[i]!='\0';i++)
{
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))z++;
else if(str[i]>='0'&&str[i]<='9')s++;
else if(str[i]==' ')k++;
else q++;
}
}
main()
{char str[100];
int z=0,s=0,k=0,q=0;
printf("请输入一个字符串:\n");
gets(str);
tongji(str);
printf("统计的个数分别是:\n");
printf("字母数是:%d\n数字的个数是:%d\n空格的个数是:%d\n其他字符数是:%d\n",z,s,k,q);
}
搜索更多相关的解决方案:
数值
----------------解决方案--------------------------------------------------------
把主函数中定义的变量 z s k q 去掉。可能覆盖了全局变量了吧
----------------解决方案--------------------------------------------------------
main()
{char str[100];
int z=0,s=0,k=0,q=0;//改为:z=0,s=0,k=0,q=0;
printf("请输入一个字符串:\n");
----------------解决方案--------------------------------------------------------
嗯
谢谢
这个方法确实不错
但就是不知道为什么要这么改?
----------------解决方案--------------------------------------------------------
你在调用tongji(char str[])时,改变的是全局变量int z,s,k,q;
的值,而输出的是main函数中局部变量int z=0,s=0,k=0,q=0;的值,所以输出的永远为零
更改后没有局部变量了,输出的全局变量int z,s,k,q;的值
----------------解决方案--------------------------------------------------------
这种写法最好少用 形参和实参最好不要一样
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]yunsuoyan[/un] 在 2008-4-8 15:48 的发言:[/bo]
你在调用tongji(char str[])时,改变的是全局变量int z,s,k,q;
的值,而输出的是main函数中局部变量int z=0,s=0,k=0,q=0;的值,所以输出的永远为零
更改后没有局部变量了,输出的全局变量int z,s,k,q;的值 ...
你在调用tongji(char str[])时,改变的是全局变量int z,s,k,q;
的值,而输出的是main函数中局部变量int z=0,s=0,k=0,q=0;的值,所以输出的永远为零
更改后没有局部变量了,输出的全局变量int z,s,k,q;的值 ...
5#正解.呵呵~~~
这样写不太好.
----------------解决方案--------------------------------------------------------