第一章:打印直方图

第一章2019.3.5

本章未开始实质内容学习,未涉及函数,仅使用getchar().

课后题:练习1-13

=》水平直方

 1 #include<stdio.h>
 2 
 3 main(){
 4 #define MAXSIZE 100
 5 int nc=0;//统计字符数
 6 int arr[MAXSIZE];
 7 int i;//临时,赋值统计
 8 int arrSub=0;//数组下标
 9 int ncSize;//统计单词字符数
10 int c;
11 
12 for(i=0;i<MAXSIZE;i++){arr[i]=0;}
13 
14 while((c=getchar())!=EOF){
15     if(c=='
'){
16       break;         
17     }
18     else{
19       if(c==' '){arr[arrSub]=nc;++arrSub;nc=0;}
20       else{
21          ++nc;
22       }
23       
24     }
25 }
26 printf("===========show vertical about word ============
");
27 printf("MAXValue:[%d]
",arrSub);//统计单词数
28 printf("^
");
29 for(i=0;i<arrSub;i++){
30   printf("|
");
31   if(arr[i]>0){
32   for(ncSize=0;ncSize<arr[i];ncSize++){if(ncSize==0){printf("|");}printf("%s","*");if(ncSize==arr[i]-1){printf("[%d]
",arr[i]);}}
33   }
34   if(i==(arrSub-1)){printf("|----------------------------------------------------------------------------->
");}
35 }
36 }

结果如下:

第一章:打印直方图

 =》垂直直方

 1 #include<stdio.h>
 2 
 3 main(){
 4 #define MAXSIZE 100
 5 #define EXPORT "****"
 6 int nc=0;//统计字符数
 7 int arr[MAXSIZE];
 8 int i;//临时,赋值统计
 9 int arrSub=0;//数组下标
10 int ncSize;//统计单词字符数
11 int c;
12 
13 for(i=0;i<MAXSIZE;i++){arr[i]=0;}
14 printf("输入的字符如下:
");
15 while((c=getchar())!=EOF){
16     if(c=='
'){
17       break;         
18     }
19     else{
20       if(c==' '){arr[arrSub]=nc;++arrSub;nc=0;}
21       else{
22          ++nc;
23       }
24       
25     }
26 }
27 //数组排序从大到小
28 int nw,nwNext,nwMax;
29 int arrDiff[arrSub];//差值数组
30 
31 for(nw=0;nw<arrSub;nw++){
32   for(nwNext=nw+1;nwNext<arrSub;nwNext++){  
33     if(arr[nw]<arr[nwNext])
34     {
35       nwMax=arr[nwNext];
36       arr[nwNext]=arr[nw];
37       arr[nw]=nwMax;
38     }
39    }
40 }
41 
42 printf("
===========show vertical about word ============
");
43 //printf("%d
",arrSub);
44 printf("|
|
|
|
");
45 for(nc=0;nc<arr[0];nc++){
46   //printf("|");
47   if(nc==0){printf("|	[%d]
",arr[0]);}
48   printf("|	%s",EXPORT);
49   for(nw=0;nw<arrSub;nw++){
50     int diffVal=arr[0]-arr[nw+1];
51     if((nc==diffVal-1)&&(arr[nw+1]>0)){printf("	[%d]",arr[nw+1]);}
52     if((nc>=diffVal)){printf("	%s",EXPORT);}
53   }
54   printf("
");
55   //arrSub=arrSub-1;
56 }
57 printf("|------------------------------------------------------------------->
");
58 printf("	水平直方图
");
59 }
View Code

结果展示:

第一章:打印直方图