zoukankan      html  css  js  c++  java
  • c程序设计语言第一章2

    练习1.13编写一个程序,打印输入中单词长度的直方图。水平方向的直方图比较容易绘制,垂直
    方向的直方图则要困难些

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #define MAXHIST 15//定义直方图的最大值
     4 #define MAXWORD 11//定义单词的最大字符数
     5 #define IN 1
     6 #define OUT 0
     7 int main()
     8 {
     9     int nc;//单词所含的字符数
    10     int maxvalue=0;//记录单词所含字符的最大值
    11     int c;
    12     int i;
    13     int len;//记录直方图所需打印的*数目
    14     int overflow=0;//记录越界单词的数目
    15     int state=OUT;
    16     int wc[MAXWORD];//记录不同长度单词的数目
    17     //初始或数组
    18     for(i=0;i<MAXWORD;i++)
    19     {
    20         wc[i]=0;
    21     }
    22     while((c=getchar())!=EOF)
    23     {
    24         if(c==' '||c=='	'||c=='
    ')
    25         {
    26             state=OUT;
    27             if(nc>0&&nc<MAXWORD)
    28             {
    29                 ++wc[nc];
    30             }
    31             else
    32             {
    33                 ++overflow;
    34             }
    35             nc=0;
    36         }
    37         else
    38         {
    39             if(state==OUT)
    40             {
    41                 state=IN;
    42                 nc=1;//记录每个单词的开始
    43             }
    44             else
    45             {
    46                 nc++;
    47             }
    48         }
    49     }
    50     //求出单词所含字符数的最大值
    51     for(i=1;i<MAXWORD;i++)
    52     {
    53         if(wc[i]>maxvalue)
    54         {
    55             maxvalue=wc[i];
    56         }
    57     }
    58     for(i=1;i<MAXWORD;i++)
    59     {
    60         printf("%3d-%3d:",i,wc[i]);
    61         if(wc[i]>0)
    62         {
    63             len=wc[i]*MAXHIST/maxvalue;//此部分用来同比例放大数值
    64         }
    65         else
    66         {
    67             len=0;
    68         }
    69         while(len>0)
    70         {
    71             putchar('*');
    72             len--;
    73         }
    74         putchar('
    ');
    75     }
    76     printf("%3d word(s) overflow!",overflow);
    77     return 0;
    78 }

    运行结果:

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #define MAXHIST 15//定义直方图的最大值
     4 #define MAXWORD 11//定义单词的最大字符数
     5 #define IN 1
     6 #define OUT 0
     7 int main()
     8 {
     9     int nc;//单词所含的字符数
    10     int maxvalue=0;//记录单词所含字符的最大值
    11     int c;
    12     int i,j;
    13    // int len;//记录直方图所需打印的*数目
    14     int overflow=0;//记录越界单词的数目
    15     int state=OUT;
    16     int wc[MAXWORD];//记录不同长度单词的数目
    17     //初始或数组
    18     for(i=0;i<MAXWORD;i++)
    19     {
    20         wc[i]=0;
    21     }
    22     while((c=getchar())!=EOF)
    23     {
    24         if(c==' '||c=='	'||c=='
    ')
    25         {
    26             state=OUT;
    27             if(nc>0&&nc<MAXWORD)
    28             {
    29                 ++wc[nc];
    30             }
    31             else
    32             {
    33                 ++overflow;
    34             }
    35             nc=0;
    36         }
    37         else
    38         {
    39             if(state==OUT)
    40             {
    41                 state=IN;
    42                 nc=1;//记录每个单词的开始
    43             }
    44             else
    45             {
    46                 nc++;
    47             }
    48         }
    49     }
    50     //求出单词所含字符数的最大值
    51     for(i=1;i<MAXWORD;i++)
    52     {
    53         if(wc[i]>maxvalue)
    54         {
    55             maxvalue=wc[i];
    56         }
    57     }
    58     for(i=MAXHIST;i>0;i--)
    59     {
    60         for(j=1;j<MAXWORD;j++)
    61         {
    62             if((wc[j]*MAXHIST/maxvalue)>=i)
    63             {
    64                 printf("  *");
    65             }
    66             else
    67             {
    68                 printf("   ");
    69             }
    70         }
    71         putchar('
    ');
    72     }
    73     for(i=1;i<MAXWORD;i++)
    74     {
    75         printf("%3d",wc[i]);
    76     }
    77     putchar('
    ');
    78     for(i=1;i<MAXWORD;i++)
    79     {
    80         printf("%3d",i);
    81     }
    82     printf("%3d word(s) overflow!",overflow);
    83     return 0;
    84 }


    运行结果:

    练习1.14编写一个程序,打印输入中各个字符出现频度的直方图

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <ctype.h>
     4 #define MAXCHAR 121
     5 #define MAXHIST 15
     6 int main()
     7 {
     8     int c;
     9     int i;
    10     int maxvalue=0;//记录单词所含字符的最大值
    11     int len;//记录直方图所需打印的*数目
    12     int wc[MAXCHAR];//记录不同长度单词的数目
    13     //初始或数组
    14     for(i=0;i<MAXCHAR;i++)
    15     {
    16         wc[i]=0;
    17     }
    18     while((c=getchar())!=EOF)
    19     {
    20         if(c<MAXCHAR)
    21             ++wc[c];
    22     }
    23         //求出单词所含字符数的最大值
    24     for(i=1;i<MAXCHAR;i++)
    25     {
    26         if(wc[i]>maxvalue)
    27         {
    28             maxvalue=wc[i];
    29         }
    30     }
    31     for(i=97;i<MAXCHAR;i++)
    32     {
    33         if(isprint(i))
    34         {
    35             printf("%3d-%c-%d ",i,i,wc[i]);
    36         }
    37         else
    38         {
    39             printf("%3d- -%d ",i,wc[i]);
    40         }
    41         if(wc[i]>0)
    42         {
    43             len=wc[i]*MAXHIST/maxvalue;//此部分用来同比例放大数值
    44         }
    45         else
    46         {
    47             len=0;
    48         }
    49         while(len>0)
    50         {
    51             putchar('*');
    52             len--;
    53         }
    54         putchar('
    ');
    55     }
    56 
    57     return 0;
    58 }


    运行结果:

  • 相关阅读:
    python之面向对象
    python之异常处理
    python之函数的使用
    python之模块的使用
    python之循环语句
    python之文件操作
    初识Python
    python爬虫之request模块详解
    pikachu之文件上传
    pikachu靶场之暴力破解
  • 原文地址:https://www.cnblogs.com/xiaojingang/p/3695490.html
Copyright © 2011-2022 走看看