直接上代码
#include <stdio.h>
#include <string.h> //添加库函数,因为要调用strlen(),作用是求出输入字符后字符串的实际长度
int main()
{
int i = 0;
char ch[100];
int DX = 0, XX = 0, KG = 0, SZ = 0, QT = 0;
printf("请输入字符串:\n");
scanf("%[^\n]", ch); //《%[^\n]》刚会用,下面会讲
for(i = 0; i < strlen(ch); i++)
{
if(('A' <= ch[i])&&(ch[i] <= 'Z')) DX++; //DX(大写)
else if(('a' <= ch[i])&&(ch[i] <= 'z')) XX++; //XX(小写)
else if(('0' <= ch[i])&&(ch[i] <= '9')) SZ++; //SZ(数字)
else if(ch[i] == ' ') KG++; //KG(空格)
else QT++; //QT(其它)
}
printf("大写字母:%d\n", DX);
printf("小写字母:%d\n", XX);
printf("数字字符:%d\n", SZ);
printf("空格字符:%d\n", KG);
printf("其他字符:%d\n", QT);
return 0;
}
唯一有问题的就是scanf("%[^\n]", ch); 中的%[^\n]是什么作用?
其实很容易理解,这个的就是 非换行 不结束。
当你字符串输入结束后,会点击回车,这样它的作用就发挥出来了,它就告诉计算机,你的输入结束了,可以开始下面的运行了。
举一反三
你也可以试试将 %[^\n] 换成 %[^1] 、%[^\t] 、%[^z] 等 看看结果。切记:
在换了之后一定要在输入的时候输入1、Tab键、z 等
你会惊奇的发现 回车 都不能阻挡你继续输入。
结果如下: