C语言字符统计
发布网友
发布时间:2022-05-09 05:13
我来回答
共4个回答
热心网友
时间:2024-01-28 14:05
帮你优化了一下,再试试吧
#include<stdio.h>
int main()
{
char t[500]; //题目说了,不超过500个字符
int n,i,j,k,a,b,c,d;
scanf("%d",&n);getchar(); //用getchar()来过滤掉本行的回车
for(i=0;i<n;i++){
a=b=c=d=0;
for(j=0;j<500;j++){
t[j]=getchar();
if(t[j]=='\n')
break;
}
t[j]='\0'; //清除最后一个字符回车
for(k=0;t[k];k++) //遍历数组直到串结束
{
if((t[k]>=65&&t[k]<=90)||(t[k]>=97&&t[k]<=122))
a=a+1;
else if(t[k]>=48&&t[k]<=57)
b=b+1;
else if(t[k]==32)
c=c+1;
else
d=d+1;
}
printf("Letter %d\n",a);
printf("Number %d\n",b);
printf("Space %d\n",c);
printf("Other %d\n",d); //加个回车
if ( i!=n-1 )
printf("\n"); //去个回车
}
return 0;
}
热心网友
时间:2024-01-28 14:05
第一个for循环下的a=b=c=d=0;有问题,应该把他拿出去弄到for循环外边,还有就是下面那个该赋值语句,也应该删去,
然后我觉得统计的话,应该用getchar函数这样应该会好一些吧;
char a[1000];
int i,b,c,d,e;
for(i=0;i<=1000;i++){ a[i]=getchar();
if(a[i]=='\n') break;
else if(a[i]>='A'&&a[i]<='z') b++;
……}
试试这个;
热心网友
时间:2024-01-28 14:06
for(j=0;j<1000;j++){
scanf("%c",&t[j]);
if(t[j]=='\n') //找到这个程序段,并改成这样就行了,其它的不用动
break;
}
热心网友
时间:2024-01-28 14:06
应该还是输入输出格式的问题