c语言统计字符串中大写字母出现的次数,[C语言]计算字符串中每个大写字母的出现次数时遇到的问题。...

CloudIDE位于Linux环境,利用数组统计每个字符的数量,存储字符串,最后输出大写字母的数量如:A(3),但是在输出过程中T和X的数量自动加一,遇到这种情况该如何修改?

问题代码:

#include int main()

{int cnt



34d1beddaf7a1d1327f643f9b2758a23.jpg

CloudIDE位于Linux环境中,使用数组对每个字符的数量进行计数,存储字符串,最后输出大写字母的数量,例如:A(3 ),但在输出过程T和X中,X的数量自动增加1。 在这种情况下如何修改?

问题代码:

#include

int main()

{

int cnt = {0 }; //用于计数数字。

char str [200]; //存储字符串。

int i;

printf(“请输入一个字符串:”);

gets(str);

/ * TODO:for遍历字符串并判断str [ i]大于或等于'A'且str [i]小于或等于'Z',则cnt [str [i]]对于(i = 0; i ='A'&& str [i] <='Z')

cnt [str [i]-'A'] + +;

其他;

}

/ * TODO:for循环遍历0到128之间的数字,判断cnt [i]大于或等于0,并输出字母和数字,例如A(3)* /

for(i = 0; i = 0)

printf(“%c(%d)”,'A'+ i,cnt [i]);

}

printf(“ \ n”);

返回0;

}

输出如下图所示。

5d7716da61e963ae1b8ef7aa29b54c25.png

2d28d1e4b901c28688b77aa595865efd.png

tcxu

strlen(char *)函数, 您想要的是字符串的实际长度。 主机的for循环数的上限不应为200(sizeof(str))循环,即不应循环200次,而应循环至字符串的末尾,即'\ 0 '。 因为在输入字符串(后面)未使用的内存中,主机运行时可能会输出带有大写字母的字符,例如主机输出的“ T”,“ X”。

循环数应为字符串的实际长度(strlen(str)):

for(i = 0; i

在循环体内 应该删除。

更正后的情况如下:

#include

#include

int main() {

int cnt [128] = {0}; //用于计数数字。

char str [200]; //存储字符串。

int i;

printf(“请输入字符串:”);

gets(str);

/ * TODO:for循环遍历字符串并判断str [i]较大 等于或等于'A'并且str [i]小于或等于'Z',cnt [str [i]]递增1 * /

for(i = 0; i ='A'&& str [i] <='Z')

cnt [str [i]-'A'] ++;

/ * TODO:for循环遍历0到128之间的数字,判断cnt [i]大于或等于 0,并输出字母和数字,例如对于(i = 0; i = 0)

printf(“%c(%d)”,'A'+ i,cnt [i]);

}

printf(“ \ n”);

返回0;

}

请输入字符串:AABcdefZZ

A(2)B(1)C( 0)D(0)E(0)F(0)G(0)H(0)(h)I(0)J(0)K(0)L(0)M(0)N(0)O (0)P(0)Q(0)(h)R(0)S(0)T(0)U(0)V(0)W(0)X(0)Y(0)Z(2)

CloudIDE位于Linux环境中,使用数组计算每个字符的数量,存储字符串,最后输出 大写字母的数量,例如:A(3),但在输出过程中T和X的数量自动增加1。 在这种情况下如何修改?

问题代码:

#include

int main()

{

int cnt [128] = {0 }; //用于计数数字。

char str [200]; //存储字符串。

int i;

printf(“请输入字符串:”);

gets(str);

/ * TODO:要使循环遍历字符串,请判断str [i]大于或等于'A'且str [i]小于或等于'Z',cnt [str [i]]对于(i = 0; i ='A'&& str [ i] <='Z')

cnt [str [i]-'A'] ++;

else;

}

/ * TODO:for循环遍历0到0之间的数字 128,并判断cnt [i]大于或等于0,输出字母和数字,例如对于(i = 0; i = 0)

printf(“%c(%d )“,'A'+ i,cnt [i]);

}

printf(“ \ n”);

返回0;

}

输出如下图所示。

5d7716da61e963ae1b8ef7aa29b54c25.png

2d28d1e4b901c28688b77aa595865efd.png

CharlesE

昨天19:48

谢谢,我明白了:+1:

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值