搜索
查看: 851|回复: 6
打印 上一主题 下一主题

这个程序是用来计算输入的字母个数,可是为什么计算不正确?

[复制链接]
跳转到指定楼层
楼主
发表于 2014-4-16 00:04:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAXELS 81
int main()
{
        int countlets(char []);
    char string[MAXELS];
    printf("Enter 80 letters\n");
    gets(string);
    countlets(string);
    printf("There are %d letters\n",countlets(string));
        system("pause");
        return 0;
}
int countlets(char s[MAXELS])
{
        int i,k=0;
    for(i=0;i<MAXELS-1;i++)
    {
                if(isalpha(s[i]))
                k++;
    }
    return  (k);

}


最佳答案

沙发
发表于 2014-4-16 00:04:34 | 只看该作者
for(i=0;i<MAXELS-1;i++)
试试
for(i=0; i<MAXELS-1 && s[i]; i++)
板凳
发表于 2014-4-16 13:05:22 | 只看该作者
这个太复杂了,你是专业的???
地板
 楼主| 发表于 2014-4-16 15:27:47 | 只看该作者
18320012584 发表于 2014-4-16 13:05
这个太复杂了,你是专业的???

是课堂的作业!
5#
 楼主| 发表于 2014-4-16 15:28:35 | 只看该作者

嗯,可以了,不过为什么会这样?
6#
发表于 2014-4-16 15:36:48 | 只看该作者
忆中寻思 发表于 2014-4-16 15:28
嗯,可以了,不过为什么会这样?

string没有初始化

假设输入的字符串是Hello
那么string的情况就是

H e l l o \0 ? ? ? ? ? ? ……
注意?表示一个随机值

如果越过\0这里,就会把后面的随机值统计进去,如果后面有字母,那就会让统计结果变大
7#
 楼主| 发表于 2014-4-16 15:55:58 | 只看该作者
明白了,谢谢你!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表