gpt4 book ai didi

c - 用for循环编程C打印一维数组

转载 作者:太空宇宙 更新时间:2023-11-04 03:50:22 25 4
gpt4 key购买 nike

我目前正在阅读关于 C 编程的 K&R 书,我在使用数组的 printf() 函数时遇到了问题。数组应该包含的所有内容都是正确的,因为我已经测试了在初始 while 循环中打印每个元素,但是当我尝试在 while 循环之外和 main() 函数内打印时,我没有得到所需的答案。这是代码。

for(i=0;i<10;++i){
ndigits[i]=0;
}
while((c=getchar())!=EOF){

if(c>='0'&&c<='9'){
++ndigits[c-'0'];
}
else if(c==' '||c=='\t'||c=='\n'){
++nblank;
}
else{
++nother;
}
}

for(i=0;i<10;++i){
printf("%d ", ndigits[i]);
}
printf(" blank space: %d other: %d\n", nblank, nother);

这个程序应该计算空格和其他字符的数量,并存储数组中每个数字的出现次数。当我注释掉用于打印数组的 for 循环时,计算空格和其他字符工作正常。但是,当我运行程序而不注释掉打印数组时,它只打印数组中的第一个元素,即零的数量,旁边有 ^C,甚至没有到达数字白色的最后一行打印空格和其他字符。

顺便说一句,这是用户通过键盘输入,我使用 Notepad++ 和 MinGW 作为我的编译器。

例如。

Input: 1353466113 udahkdakdjf
Output: 0 ^C

Input: 000000
Output: 6 ^C

我已经通过在 while 循环中放置一个 printf() 函数来测试我的程序,以检查数组是否包含正确的值,并且确实如此。非常感谢所有帮助。

最佳答案

  1. 使用 Ctrl C 表示输入结束的作用不止于此,它表示程序终止。根据您的控制台,Ctrl DCtrl Z 可能会起作用。

  2. 确保 chint 而不是 char

  3. 您的空白测试很好,但不完整。建议

    #include <ctype.h>
    ...
    // else if(c==' '||c=='\t'||c=='\n'){
    else if (isspace(c)) {

关于c - 用for循环编程C打印一维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21106789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com