| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 416 人关注过本帖
标题:怎么改>_<
只看楼主 加入收藏
LC。C
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2012-11-27
结帖率:50%
收藏
 问题点数:0 回复次数:9 
怎么改>_<
#include<stdio.h>
#include<ctype.h>
int main()
{
    char str[200];
    int a[41]={0},i=0;
    gets(str);
    while(str[i]!=10)//循环这里出错了,没有跳出循环,怎么改?
    {
        str[i]=tolower(str[i]);
        i++;
    }
    i=0;
    while(str[i]!=10)
    {
        a[str[i]-97]++;
        i++;
    }   
    for(i=0;i<=25;i++)
    {
        printf("%c:%d   ",65+i,a[i]);
        if(str[i]==10)break;
    }
    printf("\n");
    return 0;
}
搜索更多相关主题的帖子: include 
2012-12-07 14:36
daniel_
Rank: 5Rank: 5
等 级:职业侠客
帖 子:212
专家分:307
注 册:2012-11-13
收藏
得分:0 
tolower(str[i]);
这个自定义的么??
2012-12-07 14:40
daniel_
Rank: 5Rank: 5
等 级:职业侠客
帖 子:212
专家分:307
注 册:2012-11-13
收藏
得分:0 
明确一下你的需求
2012-12-07 14:41
LC。C
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2012-11-27
收藏
得分:0 
我后来用for就常,

#include<stdio.h>
#include<ctype.h>
int main()
{
    char str[200];
    int a[26]={0},i=0;
    gets(str);
    for(i=0;i<=200;i++)
    {
        str[i]=tolower(str[i]);
        if(str[i]==10)break;
    }
    for(i=0;i<=200;i++)
    {
        a[str[i]-97]++;
        if(str[i]==10)break;
    }
    for(i=0;i<=25;i++)
    {
        printf("%c:%d   ",65+i,a[i]);
        if(str[i]==10)break;
    }
    printf("\n");
    return 0;
}


就纠结开始为啥用while出错,那个程序怎么改啊?

原题  从键盘上输入一个字符串,假定字符串的长度小于200,试分别统计每一种英文字母(不区分大、小写)的个数并输出。


2012-12-07 14:44
daniel_
Rank: 5Rank: 5
等 级:职业侠客
帖 子:212
专家分:307
注 册:2012-11-13
收藏
得分:0 
str[i]==10?
10 是什么??
你是要判断  '\0'  么?
2012-12-07 14:50
allhas_com
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-12-7
收藏
得分:0 
都是高手啊!佩服!

www_3-my_com
2012-12-07 14:52
LC。C
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2012-11-27
收藏
得分:0 
回复 5楼 daniel_
回车的ASC值,用来判断输入结束
2012-12-07 14:55
daniel_
Rank: 5Rank: 5
等 级:职业侠客
帖 子:212
专家分:307
注 册:2012-11-13
收藏
得分:0 
#include<stdio.h>
#include<ctype.h>

int main()
{
    char str[200];
    int a[41] = {0};
    int i = 0;
    gets(str);
    while(str[i] != '\0')//循环这里出错了,没有跳出循环,怎么改?
    {
        str[i] = tolower(str[i]);
        i++;
    }
    i=0;
    while(str[i] != '\0')
    {
        a[str[i]-97]++;
        i++;
    }   
    for(i = 0;i <= 25;i++)
    {
        printf("%c : %d\n",65+i,a[i]);
        if(str[i] == '\0')
            break;
    }
    printf("\n");
    return 0;
}

------------
你判读字符串结束符 ‘\0’,是写错了  不是10,应该是'\0'
2012-12-07 14:56
LC。C
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2012-11-27
收藏
得分:0 
回复 8楼 daniel_
为啥for那里用10就可以?

[ 本帖最后由 LC。C 于 2012-12-7 15:02 编辑 ]
2012-12-07 15:00
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
瞎了我的眼,未赋值就判断,楼主好好想想i++放哪吧!


[fly]存在即是合理[/fly]
2012-12-07 16:08
快速回复:怎么改>_<
数据加载中...
 
   



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

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