要求:
1)输入长短无限制,可有多行,以EOF结束。
2)输出格式为每一项目一行,如A:7,Space: 10等。
3)先输出数字,再输出大写字母,接着输出小写字母,最后输出空格、回车和其他字符。
ç¨åºä»£ç ï¼
#include <stdio.h>
#include <string.h>
#define MAX 10000
void input(char source[]);
void output(int sign[], int n);
void main()
{
char source[MAX];
int sign[256];
int i;
input(source);
for(i=0; i<256; i++)
{
sign[i] = 0;
}
//ç»è®¡å符串ä¸æ¯ä¸ªå符çæ°é
for(i=0; i<strlen(source); i++)
{
sign[source[i]]++;
}
output(sign, 256);
}
void input(char source[])
{
int i;
printf("input a string(end of EOF) : ");
for(i=0; i<MAX-1 && (source[i]=getchar())!=EOF; i++);
source[i] = '\0';
}
void output(int sign[], int n)
{
int i;
//è¾åºæ°å
for(i='0'; i<'0'+10; i++)
{
printf("%c : %d\n", (char) i, sign[i]);
}
//è¾åºå¤§ååæ¯
for(i='A'; i<'A'+26; i++)
{
printf("%c : %d\n", (char) i, sign[i]);
}
//è¾åºå°ååæ¯
for(i='a'; i<'a'+26; i++)
{
printf("%c : %d\n", (char) i, sign[i]);
}
//è¾åºç©ºæ ¼
i = 32;
printf("Space : %d\n", sign[i]);
//è¾åºå车
i = 10;
printf("Enter : %d\n", sign[i]);
//è¾åºå
¶ä»å符
for(i=0; i<256; i++)
{
if(!(i>='0' && i<='9') && !(i>='A' && i<='Z') && !(i>='a' && i<='z') && i!=32 && i!=13)
{
printf("%c : %d\n", (char) i, sign[i]);
}
}
}
è¿è¡æµè¯ï¼
#include "stdio.h"
int main(int argc,char *argv[]){
int s[128],i,t;
for(i=0;i<128;s[i++]=0);
printf("Please enter a text...\n");
while((i=getchar())!=EOF)
s[i]++;
for(t=i=0;i<128;i++)
if(s[i]){
if(i>='a' && i<='z' || i>='A' && i<='Z' || i>='0' && i<='9')
printf("%c:\t%d\n",i,s[i]);
else if(s[i]!=' ' && s[i]!='\n')
t++;
}
printf("Space:\t%d\n",s[' ']);
printf("Enter:\t%d\n",s['\n']);
if(t)
printf("Other:\t%d\n",t);
return 0;
}
本回答被提问者采纳