zoukankan      html  css  js  c++  java
  • (字符串)统计字母和数字个数,打印柱状图

    1. 从键盘上输入字符,(1)分别统计一下其中字母,数字,其他字符的个数, 

    2)将统计的字母,数字,其他字符的个数以柱状图的形式打印。例如

     

      5

    *****

    *****     3

    *****   *****     2

    *****   *****   *****

    *****   *****   *****

     alp     num     oth


    这道题的一点难度就在输出,我们不能全部输出字母的柱状图再输出数字的柱状图,因为输出只能按行

    输出,所以我们需要对没个柱状图再什么时候输出需要有一个判断,那就是我们判断这个柱状图在哪一个

    列需要输出。代码如下。


    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    #define max 100
    
    void count_diff_char()
    {
    	int char_num=0,integer_num=0,else_num=0;
    	char str[max];
    	int index;
    	int index_p;
    	while(fflush(stdin),gets(str)!=NULL)
    	{
    		index=0,char_num=0,integer_num=0,else_num=0;
    		while(str[index]!='')
    		{
    			if(str[index]>='a'&&str[index]<='z')
    				char_num++;
    			else if(str[index]>='0'&&str[index]<='9')
    				integer_num++;
    			else
    				else_num++;
    			index++;
    		}
    		//打印结果
    		index=char_num>=integer_num? (char_num>=else_num? char_num:else_num):(integer_num>=else_num? integer_num:else_num);
    		index_p=0;
    		while(index>=0)
    		{
    			if(index==char_num)
    			{
    				printf("%d",char_num);
    				index_p++;
    			}
    			else if(index<char_num)
    			{
    				printf("*****");
    				index_p+=5;
    			}
    
    
    
    			while(index_p<7)
    			{
    				printf(" ");
    				index_p++;
    			}
    			if(index==integer_num)
    			{
    				printf("%d",integer_num);
    				index_p++;
    			}
    			else if(index<integer_num)
    			{
    				printf("*****");
    				index_p+=5;
    			}
    
    
    
    			while(index_p<14)
    			{
    				printf(" ");
    				index_p++;
    			}
    			if(index==else_num)
    			{
    				printf("%d",else_num);
    				index_p++;
    			}
    			else if(index<else_num)
    			{
    				printf("*****");
    				index_p+=5;
    			}
    			printf("
    ");
    			index--;
    			index_p=0;
    		}
    		//打印下标
    		index_p=0;
    		while(index_p<=14)
    		{
    			if(index_p==0)
    			{
    				printf("alp");
    				index_p+=3;
    			}
    			else if(index_p==7)
    			{
    				printf("num");
    				index_p+=3;
    			}
    			else if(index_p==14)
    			{
    				printf("oth");
    				index_p+=3;
    			}
    			else
    			{
    				printf(" ");
    				index_p++;
    			}
    		}
    		printf("
    ");
    	}
    }
    


  • 相关阅读:
    HDU 2844 Coins(多重背包)
    HDU 4540 威威猫系列故事——打地鼠(DP)
    Codeforces Round #236 (Div. 2)
    FZU 2140 Forever 0.5
    HDU 1171 Big Event in HDU(DP)
    HDU 1160 FatMouse's Speed(DP)
    ZOJ 3490 String Successor
    ZOJ 3609 Modular Inverse
    ZOJ 3603 Draw Something Cheat
    ZOJ 3705 Applications
  • 原文地址:https://www.cnblogs.com/lzq1126/p/5596837.html
Copyright © 2011-2022 走看看