练习题1
时间:2021-02-01 12:58:26
收藏:0
阅读:0
1.从键盘上输入字符,(1)分别统计一下其中字母,数字,其他字符的个数, (2)将统计的字母,数字,其他字符的个数以柱状图的形式打印。例如
话不多说,上代码
#include<stdio.h>
#include<stdlib.h>
int main()
{
char c;
int a[3]={0};
char *p[3]={"alp","num","oth"};
int temp;
char *ptmp;
int i,j;
while(scanf("%c",&c)!=EOF)
{
if(c>=‘a‘&&c<=‘z‘ || c>=‘A‘&&c<=‘Z‘)
{
a[0]++;
}else if(c>=‘1‘&&c<=‘9‘)
{
a[1]++;
}else {
a[2]++;
if(c==‘\n‘)
{
break;
}
}
}
for(i=3;i>1;i--)
{
for(j=0;j<i-1;j++)
{
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;//交换整型数组
ptmp=p[j];
p[j]=p[j+1];
p[j+1]=ptmp;//交换字符数组指针中的指针
}
}
}
printf("a[0]=%d a[1]=%d a[2]=%d\n",a[0],a[1],a[2]);
printf("p[0]=%s p[1]=%s p[2]=%s\n",p[0],p[1],p[2]);
for(i=0;i<a[0];i++)
{
if(0==i)
{
printf("%3d ",a[0]);
}else printf("***** ");
if(a[0]-a[1]==i)
{
printf("%3d ",a[1]);
}else if(i>a[0]-a[1])
{
printf("***** ");
}
if(a[0]-a[2]==i)
{
printf("%3d ",a[2]);
}else if(i>a[0]-a[2])
{
printf("***** ");
}
printf("\n");
}
printf("%4s %4s %4s\n",p[0],p[1],p[2]);
return 0;
}
这道题其实并不是很困难,只是可能涉及到了字符数组,还有排序算法.解法其它字符我统计了\n,也可以不统计.
评论(0)