问题描述:输入10个字符,求其中的字符的类型和数量
源代码:
if语句实现:
#include <stdio.h>
int main(void)
{
int digit,letter,other,block,enter,n;
char ch;
int i;
digit = letter = other = block =enter = 0;
printf("Enter 10 characters:");
for(i=1;i<=10;i++){
ch = getchar();
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
letter++;
else if(ch>='0'&&ch<='9')
digit++;
else if(ch==' ') //或者ch==32
block++;
else if(ch=='\n') //或者ch==13
enter++;
else
other++;
}
printf("letter=%d,digit=%d,other=%d,block=%d,enter=%d",letter,digit,other,block,enter);
return 0;
}
switch语句实现:
#include <stdio.h>
int main(void)
{
int digit,other,block,enter;
char ch;
int i;
digit = other = block =enter = 0;
printf("Enter 10 characters:");
for(i=1;i<=10;i++){
ch = getchar();
switch (ch){
case ' ':
enter++;
break;
case '\n':
block++;
break;
case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9':
digit++;
break;
default:
other++;
break;
}
}
printf("digit=%d,other=%d,block=%d,enter=%d",digit,other,block,enter);
return 0;
}
运行结果:
判断输入符与数量程序参数:
- 输出大小: 148.8681640625 KiB
- 编译时间: 0.30s
问题解决:
如何判断输入的字符是不是空格或回车?
C语言对字符判断是否为空格有两种方式:
1.代码:if(c==' ') printf("c是空格");这种方法比较直观,直接比较当前字符和空格是不是相等,是的话就是空格了。代码演示如下:
2.代码:if(c==32) printf("c是空格");c语言中字符和数值比较,会转换为数值比较,也就是把字符转换为对应的ascii码,空格字符的ascii码是32,直接比较32就行了。代码演示如下:
同理,判断回车也是有两种方式:
1.if(c=='\n') printf("c是回车");
2.if(c=='13') printf("c是回车");
提问:
怎么样可以不用限制10个字符,而是自定义输入的字符数量呢?
网友评论