解题思路:考虑到要判断字母、数字、空格和其他,因为其他的种类很多,所以我们放在最后进行统计,然后巧妙的利用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 人评分
#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; }
Gu-f 2019-01-03 22:27:50 |
非常抱歉,没能及时回复,这几天处于考试周忙于准备考试,见谅,今天上号的时候看到你这个评论了,在此给你解释一下啊。你的这个代码乍一看问题不大只是有一处错误(第一个else if 后面应该<=122或者<123),但是仔细一分析就会发现出了很大的错误,就是在输出的时候,你用的是%c进行的输出,即输出的是字符,你想一下,如果字母有97个,其他都为0,那理论上应该输出97 0 0 0 但是由于你用的是%c的输出所以97自动变成小写字母a 那么判题机在判题的时候就会出错因为你输出的是a 0 0 0而不是97 0 0 0,所以输出数据个数的时候建议用int型,这样可以避免错误。还有就是写代码要仔细一下,第一个else if那里判断条件错了,加上=号或者<123. 你可以用这个数据测试一下,看看你的现在这个代码的输出效果和预期的差别 测试数据:111111111111111111111111111111111111111111111111111
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:1550 |
小明A+B (C语言代码)浏览:1316 |
C语言训练-求函数值 (C语言代码)浏览:600 |
WU-输出九九乘法表 (C++代码)浏览:1852 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:600 |
C语言训练-字符串正反连接 (C语言代码)浏览:653 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:555 |
1202题解浏览:689 |
拆分位数 (C语言代码)浏览:464 |
1073题解浏览:652 |