zoukankan      html  css  js  c++  java
  • L1-025. 正整数A+B

    L1-025. 正整数A+B

    本题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。

    输入格式:

    输入在一行给出A和B,其间以空格分开。问题是A和B不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。

    注意:我们把输入中出现的第1个空格认为是A和B的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。

    输出格式:

    如果输入的确是两个正整数,则按格式“A + B = 和”输出。如果某个输入不合要求,则在相应位置输出“?”,显然此时和也是“?”。

    输入样例1:
    123 456
    
    输出样例1:
    123 + 456 = 579
    
    输入样例2:
    22. 18
    
    输出样例2:
    ? + 18 = ?
    
    输入样例3:
    -100 blabla bla...33
    
    输出样例3:
    ? + ? = ?

     1 #include<stdio.h>
     2 #include<string.h>
     3 int main(){
     4     char A[1005],B[1005];
     5     int tmpA=0,tmpB=0,i,j,k,a=0,b=0,x=1,y=1;
     6     scanf("%s",&A);
     7     getchar();
     8     gets(B);
     9         tmpA=0;tmpB=0;x=1;y=1;
    10     for(i=0;i<strlen(A);i++){
    11         /*if(A[i]=='0' && x){
    12             if(A[i+1]!='0')
    13                 x=0;
    14         }
    15         else{*/
    16         if('1'>A[0] || A[0]>'9'){
    17             tmpA=1;
    18             break;
    19         }
    20         if('0'>A[i] || A[i]>'9'){
    21             tmpA=1;
    22             break;
    23         }
    24         //}
    25     }
    26     for(i=0;i<strlen(B);i++){
    27         /*if(B[i]=='0' && y){
    28             if(B[i+1]!='0')
    29                 y=0;
    30         }
    31         else{*/
    32         if('1'>B[0] || B[0]>'9'){
    33             tmpB=1;
    34 
    35             break;
    36         }
    37         if('0'>B[i] || B[i]>'9'){
    38             tmpB=1;
    39         }
    40         //}
    41     }
    42     a=A[strlen(A)-1]-48;
    43         for(i=strlen(A)-2,j=10;i>=0;i--){
    44             a+=(A[i]-48)*j;
    45             j=j*10;
    46         }
    47     b=B[strlen(B)-1]-48;
    48         for(i=strlen(B)-2,j=10;i>=0;i--){
    49             b+=(B[i]-48)*j;
    50             j=j*10;
    51         }
    52         if(a<1 || a>1000){
    53             tmpA=1;
    54         }
    55         if(b<1 || b>1000){
    56             tmpB=1;
    57         }
    58     if(tmpA==0 && tmpB==0){
    59         
    60         printf("%d + %d = %d",a,b,a+b);
    61     }
    62     else if(tmpA && tmpB==0){
    63         printf("? + %d = ?",b);
    64 
    65     }
    66     else if(tmpB && tmpA==0){
    67         printf("%d + ? = ?",a);
    68     }
    69     else{
    70         printf("? + ? = ?");
    71     }
    72     printf("
    ");
    73     
    74     return 0;
    75 }
  • 相关阅读:
    Java中String做为synchronized同步锁
    99%的人都理解错了GET与POST的区别
    为什么Java中只有值传递
    解决maven打包时,会编译特定文件导致文件不可用
    Java使用icepdf转高清图片
    iText输出中文
    Error:(1, 1) java: 非法字符: ‘ufeff’
    java根据模板生成pdf
    携程Apollo统一配置中心的搭建和使用
    1008
  • 原文地址:https://www.cnblogs.com/yoci/p/6760880.html
Copyright © 2011-2022 走看看