原题链接:[编程入门]自定义函数之字符类型统计
解题思路:
按照ASCII码表对应的数进行编写,统计各个数字出现的次数。

注意事项:
scanf见到空格会吞掉数组,所以使用gets来进行字符串的存储。
参考代码:
其中<bits/stdc++.h>(万能头文件)可以修改为<iostream><cstring>两个头文件
#include<bits/stdc++.h>
#define max 1000
using namespace std;
int main() {
int a=0,b=0,c=0,d=0;
char arr[max];
gets(arr);
int len=strlen(arr);
for(int i=0; i<len; i++) {
if((arr[i]>='A'&&arr[i]<='Z')||(arr[i]>='a'&&arr[i]<='z'))
a++;
else if(arr[i]>='0'&&arr[i]<='9')
b++;
else if(arr[i]==32)
c++;
else
d++;
}
cout<<a<<' '<<b<<' '<<c<<' '<<d<<endl;
return 0;
}0.0分
19 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include <iostream> #include <cstring> using namespace std; int main() { char ch[1000]; int x, a = 0, b = 0, c = 0, d = 0; cin >> ch; x = strlen(ch); for (int i = 0; i < x; i++) { if (ch[i] >= 'a' && ch[i] <= 'z' || ch[i] >= 'A' && ch[i] <= 'Z') { a++; } else if (ch[i] >= '0' && ch[i] <= '9') { b++; } else if (ch[i] == ' ') { c++; } else { d++; } } cout << a << ' ' << b << ' ' << c << ' ' << d << endl; return 0; } 这哪错了啊?为什么空格显示为其他?#include<stdio.h> #include<string.h> int fw(char a[]){ int b=0,c=0,d=0,e=0; for(int i=0;i<strlen(a);i++){ if((a[i]>='A'&&a[i]<='Z')||(a[i]>='a'&&a[i]<='z')) b++; else if(a[i]>='0'&&a[i]<='9') c++; else if(a[i]==' ') d++; else e++; } printf("%d %d %d %d",b,c,d,e); } int main() {char a[50]; gets(a); fw(a); } 这个为什么百分之五十???sorry,这是函数修正版的 #include <cstdio> #include <cstring> #include <cctype> void Number(char str[]) { int alpha=0,digit=0,space=0,other=0; for(int i=0; i<strlen(str); i++) { if(isalpha(str[i])) ++alpha; else if(isdigit(str[i])) ++digit; else if(str[i]==32) ++space; else ++other; } printf("%d %d %d %d",alpha,digit,space,other); } int main() { char str[100]; gets(str); Number(str); return 0; }方法很好,但是没有满足题目要求,题目要求要写函数传递参数,其他同学可以参考下哈 #include <cstdio> #include <iostream> #include <cstring> #include <cctype> using namespace std; void Number(char str[]) { int alpha=0,digit=0,space=0,other=0; for(int i=0; i<strlen(str); i++) { if(isalpha(str[i])) ++alpha; else if(isdigit(str[i])) ++digit; else if(str[i]==32) ++space; else ++other; } cout<<alpha<<" "<<digit<<" "<<space<<" "<<other<<endl; printf("%d %d %d %d",alpha,digit,space,other); } int main() { char str[100]; gets(str); Number(str); return 0; }