天生我材必有用,千金散尽还复来。 仰天大笑出门去,我辈岂是蓬蒿人。 大鹏一日同风起,扶摇直上九万里。 十步杀一人,千里不留行。 事了拂衣去,深藏身与名。 安能摧眉折腰事权贵,使我不得开心颜! 且乐生前一杯酒,何须身后千载名? 愿将腰下剑,直为斩楼兰。
 

Blue-whale writeup

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 } 

 

posted @ 2017-10-08 17:40  gudy  阅读(158)  评论(0编辑  收藏  举报