代码以错误的格式打印错误的符号

时间:2018-03-23 07:18:20

标签: c

我需要打印出代码

Input the number of values: Input the values between 0 and 9 (separated by space): 
your histogram:
0-3
1-2
2-0
etc.

但它看起来不像那样?帮助

#include<stdio.h>

void printStars(int n){
   int i;
   for(i = 0;i<n;i++){
       printf("*");
   }
   printf("\n");
}

int main() {
    int i,n = 10;
    int input[100];
    int hist[10] = {0};
    printf("Input the amount of values: ");
    scanf("%d",&n);
    printf("Input the values between 0 and 9 (separated by space): ");
    for(i = 0;i<n;i++){
        scanf("%d",&input[i]);
   }
   for(i = 0;i<n;i++){
       hist[input[i]]++;
   }
   printf("\n\nYour histogram: ");
   for(i = 0;i<10;i++){
       printf("%d - %d\n",i,hist[i]);
   }

   return 0;
}

2 个答案:

答案 0 :(得分:0)

我假设printStars(int n)方法应该替换每个数字的计数,

e.g。而不是0 - 3,您会看到0 - * * *

如果是这种情况,您需要将第25行的for循环更改为:

for(i = 0; i < 10; i++){
    printf("%d - ",i);
    printStars(hist[i]);
}

另外,在第24行,你需要在printf的末尾添加一个额外的\ n来将直方图的0计数放在它自己的行上:printf("\n\nYour Histogram: \n");

不要忘记确保您的输入也在范围内,因为您永远不会检查int n是否在input[]的范围内。说到这个,为什么n被实例化为10,然后立即扫描输入而不使用n = 10

如果您在运行时未看到任何输出,请尝试立即输入输入。请求输入可能正在清除打印到的当前行。

printf("Input the amount of values: ");
scanf("%d",&n);

在这种情况下,由于printf末尾没有\ n并且立即调用scanf,输入请求可能正在清除输出行并请求输入。如果是您遇到的问题,在printf末尾添加\ n可能会更正此问题。

除此之外,似乎没有任何重大问题。

答案 1 :(得分:0)

您的代码正在运行。你得到什么格式,你期望什么格式?就个人而言,我有

0-3
1-2
2-0

格式