ddjmvp

导航

统计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改成一个相对大的数字,造成计算时间的浪费),然后就一直绕圈子

posted on 2014-01-18 16:50  ddjmvp  阅读(539)  评论(0)    收藏  举报