CloudIDE位于Linux环境,利用数组统计每个字符的数量,存储字符串,最后输出大写字母的数量如:A(3),但是在输出过程中T和X的数量自动加一,遇到这种情况该如何修改?
问题代码:
#include int main()
{int cnt
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;
}
输出如下图所示。
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;
}
输出如下图所示。
CharlesE
昨天19:48
谢谢,我明白了:+1: