萌新一枚,求代码,有关于数组
题目是这样的
我们模拟了“寻找超级巨星”的投票。 观众可以从一定数量的歌手中呼叫并选择自己喜欢的歌手。 最后,在电视上以百分比的形式显示了每位歌手为他投票的观众人数。
编写一个程序,用户应在其中首先输入歌手的人数。
然后应为每个歌手输入通话数量。 将数据保存在合适的数组中。
然后,投票结果应以条形图的形式显示在屏幕上。 根据电话的百分比分布,应在屏幕上显示由*字符(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);
}