从键盘上输入字符,(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. 老李分享:loadrunner的java user脚本开发

    老李分享:loadrunner的java user脚本开发 poptest在性能测试loadrunner的课程里,以web协议为主,同时也讲解其他协议的脚本开发,对于一个性能测试工程师需要掌握一个以上 ...

  2. [Linux] PHP程序员玩转Linux系列-Linux和Windows安装nginx

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...

  3. git clone时出现 error:inflate:data stream error(incorrect data check)

    git clone时出现 error:inflate:data stream error(incorrect data check) fatal:serrious inflate inconsiste ...

  4. 线上分享会.net框架“ABP”分享会总结

    前言 为了能够帮助.Net开发者开拓视野,更好的把最新的技术应用到工作中,我在3月底受邀到如鹏网.net训练营直播间为各位学弟学妹们进行ABP框架的直播分享.同时为了让更多的.NET开发者了解ABP框 ...

  5. Java异常处理机制 —— 深入理解与开发应用

    本文为原创博文,严禁转载,侵权必究! Java异常处理机制在日常开发中应用频繁,其最主要的不外乎几个关键字:try.catch.finally.throw.throws,以及各种各样的Exceptio ...

  6. ios 视频/图片压缩

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...

  7. oh-my-zsh 安装和使用

    oh-my-zsh是github用户robbyrussell的一款为简化zsh配置而开发的开源项目. 其github地址:https://github.com/robbyrussell/oh-my-z ...

  8. CF #345 Div1 D Zip-line

    题目链接:http://codeforces.com/contest/650/problem/D 大意是给一个数组,若干询问,每一次把一个数字改为另一个数字,问当前数组最长上升子序列,询问之间是独立的 ...

  9. PHP命名空间理解

    这玩意就是路径! 这玩意就是路径! 这玩意就是路径! 这玩意就是路径! 这玩意就是路径! use 就是声明要用某个路径的文件(类) 再有namespace的情况下,就类似于已经在一个路径里了 这个时候 ...

  10. 【Uva 10498】满意值

    Description Kaykobad教授把为ACM选手买饭的任务交给了Nasa.Nasa决定买n种不同的食物.然后他询问了m名选手对每种食物的需求量.选手们当然不会给出任何符合逻辑的回答,他们只是 ...