标题:望大佬们解答下 此段代码理解不透彻 谢谢
只看楼主
风流泰
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2018-9-29
结帖率:87.88%
已结贴  问题点数:18 回复次数:3 
望大佬们解答下 此段代码理解不透彻 谢谢
#include<stdio.h>
void str_dcount(const char s[],int cnt[]);
int main(int argc,const char*argv[]){
    int i;
    int dcnt[10]={0};
    char str[128];
    printf("请输入字符串:");
    scanf("%s",str);
    str_dcount(str,dcnt);
    puts("数字字符的出现的次数");
    for(i=0;i<10;i++){
        printf("'%d':%d\n",i,dcnt[i]);
    }
    return 0;
}
void str_dcount(const char s[],int cnt[]){
    int i;
    while(s[i]){
        if(s[i]>='0'&&s[i]<='9'){
            cnt[s[i]-'0']++;
        }
        i++;
    }
}

/* str_dcount函数中循环语句 :
     while(s[i]){
        if(s[i]>='0'&&s[i]<='9'){
            cnt[s[i]-'0']++;
    这段代码是怎么计算出字符的出现次数的   不是很理解*/
搜索更多相关主题的帖子: 代码 str const char int 
2018-12-24 23:20
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:3 
关键是这句统计 cnt[s[i]-'0']++;
2018-12-25 06:46
rohalloway
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:97
专家分:405
注 册:2018-9-28
得分:15 
cnt[s[i]-'0']++;

while循环遍历s

s[i]是数组s的第i个元素,比如其元素值为1,那么ASCII码=49

s[i]-'0' 就是 49-48 = 1,  因为数字0的ASCII码=48

cnt[s[i]-'0'] 也就等于 cnt[1]

++不用说了吧
2018-12-25 11:36
风流泰
Rank: 1
等 级:新手上路
帖 子:78
专家分:0
注 册:2018-9-29
得分:0 
回复 3楼 rohalloway
解答的非常详细  谢谢
2018-12-26 23:23



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




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

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