所以我必须创建一个程序来读取用户输入,并显示每个字母出现在该字符串中的次数,以及有多少非字母,但我的字母代码显示随机数。
#include #include #define SIZE 100 void readInput (char string[]); void Calc(char string[], int letters[]); void readInput (char string[]) { printf ("Enter a String:n"); fgets (string, SIZE, stdin); string[strlen (string) - 1] = ' '; } void Calc(char string[], int letters[]) { int c = 0, x; while (string[c] != ' ') { if (string[c] >= 'a' && string[c] <= 'z') { x = string[c] - 'a'; letters[x]++; } c++; } for (c = 0; c < 26; c++) printf ("%c occurs %d times in the entered string.n", c + 'a', letters[c]); } int main () { char string[SIZE]; int letters[26]; readInput (string); Calc(string, letters); return 0; }
这是输出
我是新手中的字符串我用谷歌搜索过的例子,但似乎无法找到我的代码有什么问题,也不知道我将如何包含非字母部分。
letters
的内容未初始化 。 正式地,您的程序的行为是不确定的 。
通过写入int letters[26] = {0};
排序int letters[26] = {0};
这样做会将所有元素设置为零,这就是你想要的。
letters[]
是单面化的。 解决方案int letters[26]={0}
。
您正在读取未初始化的值,这是不确定的。 并且结果不符合您的预期。
在这里,您要初始化元素,表示您还没有看过任何charcaters。 (自动存储持续时间)。
覆盖'n'
更好方法是
string[strcspn(string, "n")] = 0;
你应该初始化所有0值的letters
以上就是c/c++开发分享为什么显示随机数? C程序读取字母相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/522149.html