您的位置:首页 > 编程语言 > C语言/C++

统计n个随机数(随机0~10),每出现一次就用*号在数字下面写一次*【c语言实现】

2014-01-18 16:50 369 查看
大一学c,后面就一直荒废最基础的c了

题目来自书籍:一站式学习c编程



要求实现以下效果(随机数随机生成)



#include <stdio.h>
#include <stdlib.h>
#define N 20
int a
={0};
int histogram[10]={0};

int print_star(void){
int i;
int tag=0;
while(tag<N){
if(histogram[i%10]>0){
histogram[i%10]--;
printf("*\t");
tag++;
}
else{
printf("\t");
}

if(i%10==9){
printf("\n");
}
i++;
}
}

int gen_random(void){
int i;
srand(time(NULL));
for(i=0;i<N;i++){
a[i]=rand()%10;
}
}

int main(void){
printf("0\t1\t2\t3\t4\t5\t6\t7\t8\t9\t\n");
int i;
gen_random();
for(i=0;i<N;i++){
histogram[a[i]]++;
}
print_star();
}


解决思路:先一行一行的pirnt *,到9换行

本来是用循环体for(i=0;i<N;i++)来实现print_star(后来发现循环的上界不能是n,因为计数器+1,并不代表print的*也加1,所以如果用for循环只能N改成一个相对大的数字,造成计算时间的浪费),然后就一直绕圈子
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: