解题思路:
按照ASCII码表对应的数进行编写,统计各个数字出现的次数。

ASCII表.jpg

注意事项:

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;
}


点赞(3)
 

0.0分

19 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 8 条评论

灵笼 8月前 回复TA
#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;
}
这哪错了啊?为什么空格显示为其他?
红颜如霜 1年前 回复TA
@cpython3 @JhinJax 输入字符串
红颜如霜 1年前 回复TA
@cpython3 @JhinJax 输入字符串
今天我Code了吗 2年前 回复TA
@cpython3 跟cin一样 但可以计算空格
4年前 回复TA
#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);
}
这个为什么百分之五十???
全网第一白给Jhin 4年前 回复TA
@cpython3 大佬,我想问一下,gets(str)是什么意思?有啥作用?秋梨膏!!先谢谢了。
cpython3 6年前 回复TA
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;
 }
cpython3 6年前 回复TA
方法很好,但是没有满足题目要求,题目要求要写函数传递参数,其他同学可以参考下哈
 #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;
 }