第8章 数组

练习题:

8.2.1  用rand函数生成[10, 20]之间的随机整数,表达式应该怎么写?

   答案: rand()%11 +10

8.3.1 补完本节直方图程序的main函数,以可视化的形式打印直方图。例如上一节统计20个随机数的结果是:

  code:

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

#define MAX_LEN 20
char randomData[MAX_LEN] = {0};
int data_num[10] = {0};
int max_num=0x00;

//产生0~9随机数
void gen_randon(void)
{
    int i;
    srand(time(NULL));
    for(i=0; i<MAX_LEN; i++){
        randomData[i] = rand() % 10;
    }
}

//打印产生的随机数数组
void print_random_data(void)
{
    int i;
    printf("the random data is:
");
    for(i=0x00; i<MAX_LEN; i++){
        if(i!=0 && i%10 ==0)
            printf("
");
        printf("%d ", randomData[i]);
    }
    printf("
");    
}

//计算0~9随机数出现的次数
void count_num(void)
{
    int i;
    for(i=0; i<MAX_LEN; i++){
        data_num[randomData[i]]++;
    }
    printf("the num count is:
");
    for(i=0x00; i<10; i++){
        printf("%d ", data_num[i]);
    }
    printf("
");
}

//求取0~9随机数出现的最大次数
void get_max_num(void)
{
    int i;
    for(i=0x00; i<10; i++){
        if(data_num[i] > max_num)
            max_num = data_num[i];
    }
    printf("the max_num = %d
", max_num);
}

//打印0~9随机数的次数显示柱状图
void print_histogram(void)
{
    int i, j;
    for(i=0x00; i<10; i++){
        printf("%d ", i);
    }
    printf("
");
    for(i=0x01; i<=max_num; i++){
        for(j=0x00; j<10; j++){
            if(data_num[j] >= i){
                printf("* ");
            }else{
                printf("  ");
            }
        }
        printf("
");
    }
}

int main(int argc, char *agrv[])
{
    gen_randon();
    print_random_data();
    count_num();
    get_max_num();
    print_histogram();
}

  运行结果:

例子:

例8.5 剪刀石头布游戏

code:

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

int main(int argc, char *argv[])
{
    char gesture[3][10] = {"scissor", "stone", "cloth"};
    int man, computer;
    int ret, result;
    while(1){
        printf("
game start, please input your gesture:
(0-scissor, 1-stone, 2-cloth)
");
        ret = scanf("%d", &man);
        if(ret==-1 || man > 2 || man<0){
            printf("Invalid input!
");
            return 1;
        }
        srand(time(NULL));
        computer = rand() % 3;
        printf("You: %s	computer: %s
", gesture[man], gesture[computer]);
        result = (man-computer+4) % 3 - 1;
        if(result > 0)
            printf("You win!
");
        else if(result == 0)
            printf("Draw!
");
        else
            printf("You lose!
");
    }
    return 0;
}

结果截图:

原文地址:https://www.cnblogs.com/shanyu20/p/10929639.html