soufal's Home.

LinuxC编程一站式学习中_以可视化形式打印菱形

Word count: 349 / Reading time: 2 min
2018/06/29 Share
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 20

int a[N];

void gen_random(int upper_bound)
{
srand(time(NULL)); //自行制定初值,time(2)表示当前系统时间距1970年1月1日00:00:00的秒数
int i;
for(i = 0;i < N;i++)
a[i] = rand() % upper_bound;
}

int howmany(int value)
{
int count = 0,i;
for(i = 0;i < N;i++)
if(a[i] == value)
++count;
return count;
}


int main(void)
{
int i,j,histogram[10]={0};

gen_random(10);
for(i = 0;i < N;i++){
histogram[a[i]]++;
// histogram[i] = howmany(i);
// printf("%d\n",histogram[i]);
}
// for(i = 0;i < 10;i++)
// printf("%d\n",histogram[i]);

//水平打印
printf("水平方向:\n");
for(i = 0;i < 10;i++){
printf("%d ",i);
for(j = 0;j < histogram[i];j++)
printf("* ");
printf("\n");
}
/*方法一
//垂直打印
printf("\n垂直方向:\n");
int max=0;
for(i = 0; i < 10;i++){
max = (max > histogram[i]) ? max : histogram[i];
printf("%d ",i);
}
printf("\n\n");
for(i = 0;i < max;i++){
for(j = 0;j < 10;j++){
if(histogram[j] > 0){
printf("* ");
--histogram[j];
} else
printf(" ");
}
printf("\n");
}
*/
//方法二
printf("\n垂直打印:\n");
int k,l;
for(j = 0;j< 10;j++)
printf("%d ",j);
printf("\n");
for(l = 0;l<N;l++){
for(k = 0;k < 10;k++){
if(histogram[k]>0){
printf("* ");
histogram[k]--;
}
else{
printf(" ");
}
}
printf("\n");
};
printf("\n");

return 0;

}

这里写图片描述

CATALOG