c语言怪事,已经3次没人解决到了,高手来

来源:百度知道 编辑:UC知道 时间:2024/05/09 08:53:36
#include <stdio.h>

int abc_num,num_num,kong_num,other_num;

void tongji(char str[]);

main ()
{
static char cstr[100]="";
printf("输入一个字符串:");scanf("%s",cstr);
tongji(cstr);
printf("有%d个字母\n",abc_num);
printf("有%d个数字\n",num_num);
printf("有%d个空格\n",kong_num);
printf("有%d个其它字符",other_num);
getch();
}

void tongji(char str[])
{
int str_len,i;
str_len=strlen(str);
for (i=0;i<str_len;i++)
{
/* 统计前三个项 */
if (str[i]>='0' && str[i]<='9') num_num+=1;
if ((str[i]>='A" && str[i]<='Z') || (str[i]>='a' && str[i]<='z')) abc_num+=1; /* 这一句说什么字符型常量太长是怎么回事 */
if (str[i]==' ') kong_num+=1;
}
/* 统计非字母非数字非空格的字符 */
other_num=str_len-abc_num-num_num-kong_num;
}
我用

不知道是不是你打字打错了:
if ((str[i]>='A" && str[i]<='Z')
改成:
if ((str[i]>='A' && str[i]<='Z')
注意那个引号!

这不挺正常的么

或许是编译程序不同造成的问题吧。

不同的编译器支持的语言都有细小的差别。而用不同编译器的人很难发现这些小错误。

参数传递问题
去掉定义CSTR时候的static

大哥
if (str[i]>='0' && str[i]<='9') num_num+=1;
if ((str[i]>='A" && str[i]<='Z') || 。。。。。。。。。。。
^


我感觉一般输入错误占绝大部分,呵呵

void tongji(char str[])
{
int str_len,i;
str_len=strlen(str);
for (i=0;i<str_len;i++)
{
/* 统计前三个项 */
if (str[i]>='0' && str[i]<='9') num_num+=1;
if ((str[i]>='A' && str[i]<='Z') || (str[i]>='a' && str[i]<='z')) abc_num+=1;
if (str[i]==' ') kong_num+=1;
}
/* 统计非字母非数字非空格的字符 */
other_num=str_len-abc_num-num_num-kong_num;
}