原题链接:[编程入门]自定义函数之字符类型统计
解题思路:考虑到要判断字母、数字、空格和其他,因为其他的种类很多,所以我们放在最后进行统计,然后巧妙的利用if——else if——else结构即可完成要求。
注意事项:记得要#include <ctype.h>,这个头文件里有isalpha(判断字母)、isdigit(判断数字)这两个函数。
参考代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
int main()
{
char a[100],b[4]={0};//第一行申请空间
gets(a);//第二行获取输入
for(int i=0;i<strlen(a);i++)//第三行循环结构
{
if(isalpha(a[i])) b[0]++;第四行判断字母
else if(isdigit(a[i])) b[1]++;第五行判断数字
else if(a[i]==' ') b[2]++;第六行判断空格
else b[3]++;第七行判断其他
}
printf("%d %d %d %d",b[0],b[1],b[2],b[3]);第八行输出
return 0;
}0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#include<stdio.h> #include<string.h> int k=0; int l=0; int m=0; int n=0; int Tj(char a[], char b[]) { int i; int j=0; for(i=0; i<strlen(a); i++) { b[j]=a[i]; j++; } for(j=0; j<strlen(a); j++) { if(('a'<b[j] && b[j]<'z') || ('A'<b[j] && b[j]<'Z')) { k++; } else if('0'<b[j] && b[j]<'9') { l++; } else if(b[j]==' ') { m++; } else { n++; } } return k,l,m,n; } int main() { char a[1000]; char b[1000]; gets(a); Tj(a,b); printf("%d %d %d %d",k,l,m,n); return 0; } 答案错误50%大侠,看一下我的,为嘛不行呢 #include <stdio.h> #include <string.h> void tj(char *a) //定义函数 { int n=strlen(a); //求实际有效长度 int i; int m=0,s=0,k=0,q=0; for(i=0;i<n;i++){ if(a[i]==' ') k++; else if(a[i]>96&&a[i]<122) m++; else if(a[i]>64&&a[i]<91) m++; else if(a[i]>47&&a[i]<58) s++; else q++; a[i]=0; //比较过后,将当前字符改为0; } a[0]=m+'0'; a[1]=s+'0'; a[2]=k+'0'; //将统计值改为字符类型 a[3]=q+'0'; //并赋值给数组a的前4个元素, } int main() { int i; char a[100]={0}; gets(a); tj(a); for(i=0;i<5;i++){ printf("%c ",a[i]); //输出数组a的前4个元素 } return 0; }