目录
1065:题目描述 输入一行字符,以回车符作为输入结束的标志。统计其中数字字符的个数。
1066:题目描述 输入一行字符,以回车符作为输入结束的标志。统计其中英文字母、数字字符和其他字符的个数。
1.1
1065:题目描述
输入一行字符,以回车符作为输入结束的标志。统计其中数字字符的个数。
输入
多个字符,以回车符结束,回车符不作为有效字符。
输出
输出一个整数,表示数字字符的个数。
1.2
答案:
# include<stdio.h>
int main()
{
char x;
int y=0;
while(1)
{
scanf("%c",&x);
if(x=='\n')
break;
if((int)x>=48 && (int)x<=57)
y++;
}
printf("%d",y);
return 0;
}
2.1
1066:题目描述
输入一行字符,以回车符作为输入结束的标志。统计其中英文字母、数字字符和其他字符的个数。
输入
多个字符,以回车符结束,回车符不作为有效字符。有效字符个数不超过100。
2.2
答案:
#include<stdio.h>
int main()
{
char x;
int a=0,b=0,c=0;
while(1){
scanf("%c",&x);
if(x=='\n')
break;
if(x>='0' && x<='9')
a++;
else if(x>='a' && x<='z' || x>='A' && x<='Z')
b++;
else
c++;
}
printf("letter:%d\ndigit:%d\nother:%d",b,a,c);
return 0;
}
ps:第一题开始审错题啦,把数字当成整体,为一个,字符为一个,算整合,难了我好久,最后朋友提醒才发现emmm
主要是这个凑巧了QAQ但是,第一个想法还是没解开emm下次一定
pps:第二题和第一题几乎一样,只要区分字母,数字,其他字符就行。区别数字有两种方法(至少)
我们设置读取参数的类型为字符,直接判定就是>='0' && <='9', 还可以(int)>=48 && (int)<=57。
因为是字符型,数字是一位一位读取的,(例如:123,%d读取123,%c读取1,读取2,读取3)所以数字一定在0-9,而数字对应的ASCLL为:0对应48;9对应57;
‘0’和0主要区别是一个用在字符判断该字符是否为0,一个用在数字中,判定是否为0(本人理解)