调用C语言ctype.h库里的函数分别计算输入的控制字符、十进制数字字符、大写字母和小写字母。
1.输入一行以'\n'代表输入结束
代码如下:
#include<stdio.h>
#include<ctype.h> 字符统计函数所在库头文件
//1.输入一行以'\n'代表输入结束
int main(){
char ch='#';
int consum=0,digsum=0,capsum=0,smasum=0,othsum=0;
while(ch=getchar(),ch!='\n'){
if(iscntrl(ch)) //控制字符输入一个tab测试
consum++;
else if(isdigit(ch))
digsum++;
else if(isupper(ch))
capsum++;
else if(islower(ch))
smasum++;
else othsum++;
}
printf("consum=%d\n",consum);
printf("digsum=%d\n",digsum);
printf("capsum=%d\n",capsum);
printf("smasum=%d\n",smasum);
printf("othsum=%d\n",othsum);
return 0;
}
ps:while()循环条件语句使用了逗号运算符。(语句1,语句2,语句3)从左到右语句1,语句2,语句3依次执行,但该表达式最终结果为语句3的值。 控制字符用输入tab键测试。
运行结果如下:
2.输入多行使用"EOF"指令作为输入结束
代码如下(大体没有变动):
#include<stdio.h>
#include<ctype.h> 字符统计函数所在库头文件
//2.输入多行使用"EOF"指令作为输入结束
int main(){
char ch='#';//初始化,也可以写为:char ch='\0';
int consum=0,digsum=0,capsum=0,smasum=0,othsum=0;
while(ch=getchar(),ch!=EOF){
if(iscntrl(ch)) //控制字符输入一个tab测试
consum++;
else if(isdigit(ch))
digsum++;
else if(isupper(ch))
capsum++;
else if(islower(ch))
smasum++;
else othsum++;
}
printf("consum=%d\n",consum);
printf("digsum=%d\n",digsum);
printf("capsum=%d\n",capsum);
printf("smasum=%d\n",smasum);
printf("othsum=%d\n",othsum);
return 0;
}
运行结果如下:
注意:若使用“EOF”指令输入多行作为结束:1.输入多行意味着用键盘输入多个回车即换行符(控制字符'\n'),控制字符会计数!;2.tab键依然可以用来测试控制字符;3.“EOF”输入结束操作:另起一行输入“ctrl+z”,再输入回车即可(最后输入的回车不计入控制字符),准确说另起一行敲ctrl+z+回车是一个整体。