从键盘上输入字符,(1)分别统计一下其中字母,数字,其他字符的个数, (2)将统计的字母,数字,其他字符的个数以柱状图的形式打印。例如

5

*****

*****     3

*****   *****     2

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

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

alp     num     oth

思路解析:

在统计了字母、数字和其他字符的个数之后,分别记作alpN, numN, othN。取三者最大值hMax.分别取alpN, numN, othN与hMax的绝对值h1,h2,h3。

取三个标志位,flag1,flag2,flag3,初值设为0,表示有没有打印柱形上的数字。

0表示没有打印最上面的数字,1表示已经打印了数字。

在打印的过程中,第一行打印最大值的数字,同时flag设为1,其他的就输入空格,flag设为0。

从第二行开始,进入循环阶段,循环次数为hMax,如果flag为1,则打印*****,否则,h自减,一旦为0,设立flag为1,打印个数。直到循环结束。

最后再打印相应的标识。

程序结果如下:

 void print_Column(char*str)
{
//定义字母,数字,其他字符个数
int alpN = , numN = , othN = ;
//hMax为三者中最大的数,h1,2,3分别为距离hMax的值
int hMax = , h1 = , h2 = , h3 = ;
//指示标志,0表示没有打印最上面的数字,1表示已经打印了数字
int flag1 = , flag2 = , flag3 = ;
int i = ;
for (i = ; str[i] != '\0'; i++)
{
if (('a' <= str[i] && str[i] <= 'z') || ('A' <= str[i] && str[i] <= 'Z'))
{
alpN++;
}
else if ('' <= str[i] && str[i] <= '')
{
numN++;
}
else
{
othN++;
}
}
printf("alpN=%d,numN=%d,othN=%d", alpN, numN, othN); //计算hMax
hMax = othN > (alpN > numN ? alpN : numN) ? othN : (alpN > numN ? alpN : numN);
//计算距离差值
h1 = abs(alpN - hMax);
h2 = abs(numN - hMax);
h3 = abs(othN - hMax);
printf("\nprint column.....\n"); //开始打印
//打印最上面的数字
if (h1 == )
{
printf(" %d ", alpN);
flag1 = ;
}
else
{
printf(" ");
}
printf("\t");
if (h2 == )
{
printf(" %d ", numN);
flag2 = ;
}
else
{
printf(" ");
}
printf("\t");
if (h3 == )
{
printf(" %d ", othN);
flag3 = ;
}
else
{
printf(" ");
}
printf("\n"); //开始循环,总共有 hMax 遍
for (i = ; i <= hMax; i++)
{
//针对alp的打印
if (flag1)
{
printf("*****");
}
else
{
h1--;
if (h1 == ) //表示要打印数字了
{
printf(" %d ", alpN);
flag1 = ;
}
else
{
printf(" ");
}
}
printf("\t"); //针对num的打印
if (flag2)
{
printf("*****");
}
else
{
h2--;
if (h2 == ) //表示要打印数字了
{
printf(" %d ", numN);
flag2 = ;
}
else
{
printf(" ");
}
}
printf("\t"); //针对oth的打印
if (flag3)
{
printf("*****");
}
else
{
h3--;
if (h3 == ) //表示要打印数字了
{
printf(" %d ", othN);
flag3 = ;
}
else
{
printf(" ");
}
}
//打印完一行就换行
printf("\n");
}
printf(" alp \t");
printf(" num \t");
printf(" oth \t");
printf("\n"); }
---------------------------------------------------------------------------------------------------------------------------
在主函数中的调用:
char str[];
printf("input a string:");
gets(str);
print_Column(str);

C语言习题1.分别统计一下其中字母,数字,其他字符的个数。将统计的字母,数字,其他字符的个数以柱状图的形式打印的更多相关文章

  1. YTU 2429: C语言习题 学生成绩输入和输出

    2429: C语言习题 学生成绩输入和输出 时间限制: 1 Sec  内存限制: 128 MB 提交: 1897  解决: 812 题目描述 编写一个函数print,打印一个学生的成绩数组,该数组中有 ...

  2. php实现 统计输入中各种字符的个数

    php实现 统计输入中各种字符的个数 一.总结 一句话总结:谋而后动,想清楚,会非常节约编写代码的时间. 1.对结果可能是0的变量,记得初始化? 4 $len=0; 5 $len=strlen($st ...

  3. YTU 2974: C语言习题5.26--文件操作3

    2974: C语言习题5.26--文件操作3 时间限制: 1 Sec  内存限制: 128 MB 提交: 213  解决: 92 题目描述 文本文件score.dic 中存储了n名学生的信息(班级编号 ...

  4. YTU 2973: C语言习题5.25--文件操作2

    2973: C语言习题5.25--文件操作2 时间限制: 1 Sec  内存限制: 128 MB 提交: 242  解决: 105 题目描述 文本文件score.dic 中存储了n名学生的信息(班级编 ...

  5. YTU 2972: C语言习题5.24--文件操作1

    2972: C语言习题5.24--文件操作1 时间限制: 1 Sec  内存限制: 128 MB 提交: 248  解决: 94 题目描述 文本文件score.dic 中存储了n名学生的信息(班级编号 ...

  6. C语言习题 链表建立,插入,删除,输出

    Problem B: C语言习题 链表建立,插入,删除,输出 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 222  Solved: 92 [Subm ...

  7. 嵌入式C语言自我修养 13:C语言习题测试

    13.1 总结 前面12节的课程,主要针对 Linux 内核中 GNU C 扩展的一些常用 C 语言语法进行了分析.GNU C 的这些扩展语法,主要用来完善 C 语言标准和编译优化.而通过 C 标准的 ...

  8. c语言程序设计:用strcpy比较数组(银行卡密码程序设计),strcpy(复制数组内容)和getchar()(敲键盘字符,统计不想要的字符的个数)

    统计从键盘输入一行字符的个数: 1 //用了getchar() 语句 2 //这里的\n表示回车 #include <stdio.h> #include <stdlib.h> ...

  9. Problem X: C语言习题 学生成绩输入和输出

    Problem X: C语言习题 学生成绩输入和输出 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 4722  Solved: 2284[Submit] ...

随机推荐

  1. 老李分享:为何要使用 Web Services

    老李分享:为何要使用 Web Services   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询q ...

  2. 在centOS7.2里安装virtualenv和flask

    1) 安装pip工具 #wget https://bootstrap.pypa.io/get-pip.py #python get-pip.py 2) 安装virtualenv,并创建一个开发环境 # ...

  3. 一个只有99行代码的JS流程框架

    张镇圳,腾讯Web前端高级工程师,对内部系统前端建设有多年经验,喜欢钻研捣鼓各种前端组件和框架. 最近一直在想一个问题,如何能让js代码写起来更语义化和更具有可读性. 上周末的时候突发奇想,当代码在运 ...

  4. React翻译官网文档之JSX

    什么是JSX? 看下面的代码它被称为JSX,它既不是字符串也不是HTML,而是一种facebook公司对javascript语法的拓展.虽然写法很奇怪最终仍会会被编译为javascript代码 con ...

  5. NOIP2014D2T2寻找道路

    洛谷传送门 这道题可以把边都反着存一遍,从终点开始深搜,然后把到不了的点 和它们所指向的点都去掉. 最后在剩余的点里跑一遍spfa就可以了. --代码 #include <cstdio> ...

  6. 免费给自己的网站加 HTTPS

    简介 本文是通过 Let's Encrypt 提供的免费证书服务,实现让自己的网站加上 HTTPS.我的网站 -- hellogithub,就是通过这种方式实现的 HTTPS,效果如下: Let's ...

  7. bzoj4785 [Zjoi2017]树状数组

    Description 漆黑的晚上,九条可怜躺在床上辗转反侧.难以入眠的她想起了若干年前她的一次悲惨的OI 比赛经历.那是一道基础的树状数组题.给出一个长度为 n 的数组 A,初始值都为 0,接下来进 ...

  8. 「7天自制PHP框架」第一天:路由与控制器

    我们为什么要使用路由? 原因1:一个更漂亮的URI 1.URI的改进 刚刚开始学PHP时,我们一定写过blog.php?id=1之类的URI,使用GET方式获取参数.这样的URI有两个缺点,一是容易被 ...

  9. 转-Tomcat 8 安装和配置、优化

    https://github.com/judasn/Linux-Tutorial/blob/master/Tomcat-Install-And-Settings.md Tomcat 8 安装 Tomc ...

  10. office web apps 部署-搭建域控服务器

    开始第一条先说注意事项:我所配置的环境是用了三台2012server虚拟机,三台虚拟机必须要加下域控,而且登录操作的时候必须以域账号登录,否则测试不通过!在笔记本上搭建了两个虚拟机(window se ...