gpt4 book ai didi

c - 打印数组中特定数量频率的星星

转载 作者:行者123 更新时间:2023-11-30 14:46:04 25 4
gpt4 key购买 nike

我对 C 还很陌生,我需要找到一种方法来打印与频率数量相同数量的星星。

这是我的代码:

int arrayHistogram(int array[]){
int i;
int j;
int count=0;
int freq[SIZE];
char stars[SIZE];
for(i = 0; i < SIZE; i++){
count =1;
for(j = i+1; j < SIZE; j++){
if(array[i]==array[j]){
count++;
freq[j]=0;
}
}
if(freq[i] != 0){
freq[i] = count;
}
}
//for ( i = 0; i < SIZE; i++){
//int num = freq[i];
//stars[i]= '*'*num;
}
printf("Value ");
printf("Frequency ");
printf("Histogram\n");
for(i = 0; i < SIZE; i++){
if(freq[i] != 0){
printf("%5d%10d%10d\n", array[i], freq[i], stars[i]);
}
}
}

我知道我不能在这里将 char 乘以 int 来打印星星,但我放在这里只是为了显示我需要在哪里打印这些星星(即直方图)。

My Output:

Value Frequency Histogram
7 4 -46
8 3 126
4 6 84

Expected output:

Value Frequency Histogram
7 4 ****
8 3 ***
4 6 ******

最佳答案

好吧,你已经知道了所有要做的事情,即循环。

简单地,循环到一个频率并打印那么多星星。

类似这样的东西(伪代码):

loop until freq[i]
print '*'
end loop

这只是一个想法。你知道循环是如何工作的。只需在需要打印星星的地方放置一个嵌套循环(即 for 循环)即可。注意换行符。打印星星后,您需要在每行末尾添加一个换行符。

<小时/>

更新:

据观察,您的频率最多为 10,即您已知的固定大小。您可以简单地使用一串星星,然后使用 printf() 打印它。带有带有字段宽度和字符串长度的 %.*s 格式说明符。

这是一个示例( live code ):

#include <stdio.h>

#define SIZE 10

int main(void)
{
const char* stars = "**********";

const int freqs[ SIZE ] = { 3, 5, 6, 2, 0, 7, 10, 9, 4, 8 };

for ( int i = 0; i < SIZE; i++ )
{
printf("%5d \t %10.*s\n", freqs[i], freqs[i], stars);
}

return 0;
}

输出:

    3           ***
5 *****
6 ******
2 **
0
7 *******
10 **********
9 *********
4 ****
8 ********

关于c - 打印数组中特定数量频率的星星,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52570161/

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