|
10鱼币
题目
题目描述
输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。
输入
一行字符
输出
统计值
样例输入
aklsjflj123 sadf918u324 asdf91u32oasdf/.';123
样例输出
23 16 2 4
提示
此类题目为编程入门基本语法巩固练习,为单组测试数据
我的 代码 运行后的结果
22 17 2 4
- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
- struct a{
- struct a *previous;
- char b;
- struct a *next;
- };
-
- int main(){
- char temp=getchar();
- struct a *c=malloc(sizeof(struct a));
- if(c!=NULL)c->previous=NULL;
- struct a *swap=NULL;
- do{
- c->next=malloc(sizeof(struct a));
- if(c->next!=NULL){
- swap=c;
- c=c->next;
- c->previous=swap;
- c->b=temp;
- }else{
- printf("malloc failed!\n");
- return 1;
- }
- temp=getchar();
-
- if(temp!=10){
- c->b=temp;
- }else{
- break;
- }
- }while(1);
- c->next=NULL;
- int letter=0,space=0,digit=0,specialchar=0;
- do{
- if(isalpha(c->b)){
- letter++;
- }else if(isspace(c->b)){
- space++;
- }else if(isdigit(c->b)){
- digit++;
- }else{
- specialchar++;
- }
-
- c=c->previous;
- free(c->next);
- c->next=NULL;
-
- }while(c->previous!=NULL);
- printf("%d %d %d %d\n",letter,digit,space,specialchar);
- return 0;
- }
复制代码
谢谢
- #include <stdio.h>
- main(void)
- {
- char x , s[256] ;
- int b , c , d , m , o ;
- for(b = 0 , c = 0 , d = 0 , m = 0 , o = 0 ; (x = getchar()) != '\n'&& m < 255 ; s[m ++] = x , s[m] = '\0') {
- if((x >= 'a' && x <= 'z') || (x >= 'A' && x <= 'Z')) c ++ ;
- else if(x >= '0' && x <= '9') d ++ ;
- else if(x == ' ') b ++ ;
- else o ++ ;
- }
- printf("%d %d %d %d\n" , c , d , b , o)
- }
复制代码
编译运行实况:
- C:\Bin>g++ -o x x.c
- C:\Bin>x
- aklsjflj123 sadf918u324 asdf91u32oasdf/.';123
- 23 16 2 4
- C:\Bin>
复制代码
|
|