标签:判断 scanf blog 小数点 必须 put 字母 获取 ==
Coding01
整数判断
样例中输入都是数字与小数点和正负号,没有字母、符号,因此只考虑小数点问题;
输入中有特别长的,因此用字符串处理即可;
判断小数点后的数字的和是不是0,如果不是0,就是小数;
要注意的是,如果字符串处理到结尾,就直接跳出,判断是不是整数然后输出就结束了;
而如果碰到小数点,则直接进入下一个字符的处理。
代码如下:
1 #include<stdio.h> 2 int main() 3 { 4 char input[50000]; 5 int sum= 0; 6 int flag = 0;//标记有没有出现小数点 7 int YorN = 0;//正确与否 8 for(int j = 0 ; j < 9 ; j++){ 9 flag = sum = YorN = 0; 10 scanf("%s",input) ; 11 //对输入用字符串处理,并对获取的每个字符进行判断 12 for(int i = 0 ; i < 50000;i++){ 13 //判断是否结束 14 if(input[i] == ‘\0‘){ 15 //如果小数点后面有非零的数字,非整数 16 if(sum){ 17 YorN = 1; 18 } 19 //如果结束,直接跳出循环 20 break; 21 } 22 //如果出现小数点,标记flag,并直接跳至循环末尾 23 if(input[i] == ‘.‘){ 24 flag = 1; 25 continue; 26 } 27 //如果之前出现过小数点,则用sum记录小数点后面的数字 28 if(flag){ 29 sum += input[i] - ‘0‘; //累加小数点后面的数字 30 } 31 } 32 //如果YorN为1,非整数,输出 33 if(YorN){ 34 printf("NO\n"); 35 }else{ 36 printf("YES\n"); 37 } 38 } 39 return 0; 40 }
Coding02
数字判断
同样用字符串进行处理
如果小数点个数必须是一个
负号的位置必须是第一个位置
否则是错
我们要关心那些非阿拉伯数字中的非小数点,非负号的字符
出现就为错
1 #include<stdio.h> 2 int main() 3 { 4 char input[50000]; 5 int flag ;//标记YES or NO 6 int pn;//小数点的个数 7 for(int j = 0 ; j < 10 ; j ++){ 8 pn = 0; 9 flag = 0; 10 scanf("%s",input); 11 for(int i = 0 ;i < 50000;i++){ 12 //判断是否结束,结束就跳出 13 if(input[i] == ‘\0‘) 14 break; 15 //如果碰到非数字进入 16 if(input[i] < ‘0‘ || input[i] > ‘9‘) { 17 //如果不是小数点 18 if(input[i] != ‘.‘){ 19 if(input[0] == ‘-‘ && i == 0){//如果是判断第一位,且第一位是‘ - ’,直接看第二个 20 continue; 21 }else{ 22 //标记不是数字 23 flag = 1; 24 break; 25 } 26 }else{ 27 //如果是小数点,记录小数点的出现次数 28 pn++; 29 } 30 if(pn > 1){//如果不止一个小数点 ,不是数字 31 flag = 1; 32 break; 33 } 34 } 35 } 36 if(flag){ 37 printf("NO\n"); 38 }else{ 39 printf("YES\n"); 40 } 41 } 42 return 0; 43 }
标签:判断 scanf blog 小数点 必须 put 字母 获取 ==
原文地址:http://www.cnblogs.com/zhibin123/p/7638011.html