Code Bye

杭电acm2017统计字符串的数字数

字符串统计
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 23723 Accepted Submission(s): 13063
Problem Description
对于给定的一个字符串,统计其中数字字符出现的次数。
Input
输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串。
Output
对于每个测试实例,输出该串中数值的个数,每个输出占一行。
Sample Input
2
asdfasdf123123asdfasdf
asdf111111111asdfasdfasdf
Sample Output
6
9
#include<stdio.h>
int main()
{
 int b;
 char c;
    scanf("%d\n",&b);      
 while(b--)
 {
   int a=0;
   while((c=getchar())!="\n")
   {
        if(c>="0"&&c<="9")
    a++;
   }
   printf("%d\n",a);
 } 
}

为什么这样写也能ac,而没有在  scanf(“%d\n”,&b);     后面加getchar(),这个程序它的\n怎么处理的。
代码http://winf.blog.163.com/blog/static/191048269201162994135157/转载这里,
如有侵权立删

解决方案

40

scanf里第一个参数加上\n是为了过滤空格、制表符、回车等输入,也就是说
scanf(“%d\n”, &i);
printf(“%d\n”, i);
你输入一个数后,它是不会立即显示的,要等再接收到一个非(空格、制表符、回车)的输入scanf语句才结束。
但请注意的是,最后输入的那个非(空格、制表符、回车)的东西是不会被这个scanf读进来的,而是留在输入流里。
PS:这里的效果和后面加一个getchar的效果是一样的,只不过getchar只能过滤一个空白符,
而”%d\n”可以过滤掉多个连续的空白符,在有些场合下是不一样的

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明杭电acm2017统计字符串的数字数