标题:求各位帮忙修改,求字母个数
只看楼主
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
结帖率:95.45%
已结贴  问题点数:20 回复次数:6 
求各位帮忙修改,求字母个数
请大神帮忙修改这个程序求出一串英文中指定字母的个数,不区分大小写
程序代码:
#include "stdafx.h"
#include<stdio.h>
int count(char str[],char c)
{
    int i,count;
    count=0;
    for(i=0;str[i]!='\0';i++)
    {
        while((str[i]=='c')||(str[i]=='c'+32))
            count++;
    }
    printf("%d",count);
    return 0;
}

int main()
{
    char str[50];
    char c;
    printf("请输入一串英文");
    scanf("%s",str);
    printf("请输入要找的字母");
    scanf("%c",&c);
    count(str,c);
    return 0;
}
搜索更多相关主题的帖子: 区分大小写 count 英文 字母 
2014-11-14 15:52
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:8 
while((str[i]=='c')||(str[i]=='c'+32))
            count++;
错误1
== 'c'?只是判断是否是c 字母而已,不是算输入的字母

错误2
而且 (str[i]=='c')||(str[i]=='c'+32) 如果有一个为‘c’ 不就是死循环了?应该是if把

错误3
(str[i]=='c')||(str[i]=='c'+32) 部分大小写也不是这样判断的,如果输入的c 是大写字母,这样判断没有问题,如果输入的是小写字母尼?比如 c 输入是字母'a',那么'a'+32 可不是A 哦。

我行我乐
我的博客:
http://blog.yuccn. net
2014-11-14 18:37
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
得分:1 
改正楼上版主说的前两个错误

第三个,我想还是需要先判断用户输入的c是大写还是小写,然后不同处理,应该这样吧
2014-11-14 21:01
jsxzshd
Rank: 1
等 级:新手上路
帖 子:1
专家分:2
注 册:2012-11-29
得分:2 
char str[50]最好初始化;
2014-11-14 22:48
lex_ovber
Rank: 1
等 级:新手上路
帖 子:3
专家分:7
注 册:2014-11-15
得分:6 
#include<stdio.h>
#include<string.h>
int count(char str[],char c)
{
    int i,count;
    count=0;
    for(i=0;str[i]!='\0';i++)
    {
        if(str[i]==c||str[i]==(c-32))
            count++;
    }
    printf("%d",count);
    return 0;
}

int main()
{
    char str[50];
    char c;
    printf("请输入一串英文:");
    scanf("%s",str);
    getchar();
    printf("请输入要找的字母:");
    scanf("%c",&c);
    count(str,c);
    return 0;
}
这样就可以了 你仔细看看和你原来的有什么不同
2014-11-15 00:20
fogmaple
Rank: 4
来 自:江西省赣州市于都县
等 级:业余侠客
威 望:1
帖 子:119
专家分:233
注 册:2014-7-28
得分:2 
以下是引用yuccn在2014-11-14 18:37:50的发言:

while((str=='c')||(str=='c'+32))
            count++;
错误1
== 'c'?只是判断是否是c 字母而已,不是算输入的字母

错误2
而且 (str=='c')||(str=='c'+32) 如果有一个为‘c’ 不就是死循环了?应该是if把

错误3
(str=='c')||(str=='c'+32) 部分大小写也不是这样判断的,如果输入的c 是大写字母,这样判断没有问题,如果输入的是小写字母尼?比如 c 输入是字母'a',那么'a'+32 可不是A 哦。

嗯,赞同
2014-11-15 09:50
statichaha
Rank: 2
等 级:论坛游民
帖 子:5
专家分:14
注 册:2014-11-10
得分:1 
但是主函数中如果只是用scanf输入并不能识别空格,建议用gets好点是以换行作为结束标志。。
2014-11-15 10:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-438587-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.741790 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved