统计n个随机数(随机0~10),每出现一次就用*号在数字下面写一次*【c语言实现】
大一学c,后面就一直荒废最基础的c了
题目来自书籍:一站式学习c编程

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

#include <stdio.h> #include <stdlib.h> #define N 20 int a[N]={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改成一个相对大的数字,造成计算时间的浪费),然后就一直绕圈子
浙公网安备 33010602011771号