输入一串字符(可包含空格),统计各字母出现的次数(不区分大小写)、总字母数,以及各数字出现的次数、总数字数。利用指针实现对字符的访问。
#include<stdio.h>
int main(){
int sa=0,si=0,suma=0,sum0=0;
int a[91]={0};
char st[10000];
char *s=st;
gets(s);
while(*s){
if(*s>96&&*s<123){
*s-=32;
suma++;
}
if(*s>47&&*s<58){
sum0++;
}
a[*s]++;
s++;
}
printf("总字母数:%d\n",suma);
printf("总数字数:%d\n",sum0);
for(int i=65;i<91;i++)
if(a[i])printf(" %c 的个数:%d\n",i,a[i]);
for(int i=48;i<58;i++)
if(a[i])printf(" %c 的个数:%d\n",i,a[i]);
}
来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答 2020-05-25
#include<stdio.h>
void main() { char s[256],*p; int n,a[26],b[10],aa,bb,i;
gets(s); for ( i=0;i<10;i++ ) b[i]=0; for ( i=0;i<26;i++ ) a[i]=0; i=aa=bb=0; p=s;
while ( *p!=0 ) {
if ( *p>='0' && *p<='9' ) { b[*p-'0']++; bb++; }
else if ( *p>='a' && *p<='z' ) { aa++; a[*p-'a']++; }
else if ( *p>='A' && *p<='Z' ) { aa++; a[*p-'A']++; }
p++;
}
printf("总字母数%d\n",aa); for ( i=0;i<26;i++ ) printf("%c[%d] ",'A'+i,a[i]); printf("\n");
printf("总数字数%d\n",bb); for ( i=0;i<10;i++ ) printf("%d[%d] ",i,b[i]); printf("\n");
}本回答被提问者采纳
void main() { char s[256],*p; int n,a[26],b[10],aa,bb,i;
gets(s); for ( i=0;i<10;i++ ) b[i]=0; for ( i=0;i<26;i++ ) a[i]=0; i=aa=bb=0; p=s;
while ( *p!=0 ) {
if ( *p>='0' && *p<='9' ) { b[*p-'0']++; bb++; }
else if ( *p>='a' && *p<='z' ) { aa++; a[*p-'a']++; }
else if ( *p>='A' && *p<='Z' ) { aa++; a[*p-'A']++; }
p++;
}
printf("总字母数%d\n",aa); for ( i=0;i<26;i++ ) printf("%c[%d] ",'A'+i,a[i]); printf("\n");
printf("总数字数%d\n",bb); for ( i=0;i<10;i++ ) printf("%d[%d] ",i,b[i]); printf("\n");
}本回答被提问者采纳