<C语言>这个代码怎么编啊,大佬们帮帮忙

萌新一枚,求代码,有关于数组

题目是这样的

我们模拟了“寻找超级巨星”的投票。 观众可以从一定数量的歌手中呼叫并选择自己喜欢的歌手。 最后,在电视上以百分比的形式显示了每位歌手为他投票的观众人数。

编写一个程序,用户应在其中首先输入歌手的人数。

然后应为每个歌手输入通话数量。 将数据保存在合适的数组中。

然后,投票结果应以条形图的形式显示在屏幕上。 根据电话的百分比分布,应在屏幕上显示由*字符(100%对应于100 *字符)组成的条,然后显示电话的绝对值。

基本思路就是创建一个动态数组,然后逐个读取

#include <stdio.h>
#include <stdlib.h>

/**
 * Print out the call statistic of each singer.
 * @param index: the singer index
 * @param num: number of calls
 * @param total: total number of calls
 */
void printCall(int index, int num, int total) {
    printf("歌手%d ", index);
    int percent = num * 1.0 / total * 100;
    for (int i = 0; i < percent; i++) {
        printf("* ");
    }
    printf("%d\n", num);
}

int main() {
    printf("请输入歌手人数:");
    int num;
    scanf("%d", &num);
    // 动态生产一个数组
    int* call_num = (int *)malloc(num * sizeof(int));
    int total = 0, tmp;
    // 逐个读取歌手通话数量并计算总通话数量
    for (int i = 0; i < num; i++) {
        printf("请输入歌手%d的通话数量:", i);
        scanf("%d", &tmp);
        call_num[i] = tmp;
        total += tmp;
    }
    // 输出结果
    for (int i = 0; i < num; i++) {
        printCall(i, call_num[i], total);
    }
    // 记得释放动态申请的内存
    free(call_num);
    return 0;
}

运行结果如下:

效果图及代码如下,如有帮助,请采纳一下,谢谢。

 

#include <stdio.h>
#include <stdlib.h>
void main()
{
	int i = 0,j = 0,bfb = 0;
	int nmbSiner = 0;  //歌手的数量
	int* arr = 0;      //歌手投票数数组
	int totalps = 0;   //总票数
	printf("请输入歌手数量:");
	scanf("%d",&nmbSiner);
	arr = (int*)malloc(nmbSiner * sizeof(int));
	for (i = 0; i < nmbSiner; i++)
	{
		printf("请输入歌手%d的票数:",i+1);
		scanf("%d",&arr[i]);
		totalps += arr[i];
	}
	//显示歌手票数信息
	for (i = 0; i < nmbSiner; i++)
	{
		printf("歌手%d的票数信息:",i+1);
		bfb = arr[i] * 100 / totalps;
		for (j = 0; j < bfb; j++)
			printf("*");
		printf("  %d\n",arr[i]);
	}
    free(arr);
}