5-1 正整數A+B (15分)
阿新 • • 發佈:2019-02-02
題的目標很簡單,就是求兩個正整數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:
? + ? = ?
注意題目細節.
#include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char a[5]; char b[5]; int i; int sum1=0,sum2=0; int flag1=1; int flag2=1; scanf("%s",a); getchar(); gets(b); int l1,l2; l1=strlen(a); l2=strlen(b); if(l1<1||l1>4) { flag1=0; } else { for(i=0;i<l1;i++) { if(a[i]<'0'||a[i]>'9') { flag1=0; break; } } } if(l2<1||l2>4) { flag2=0; } else{ for(i=0;i<l2;i++) { if(b[i]<'0'||b[i]>'9') { flag2=0; break; } } } if(flag1==1) { for(i=0;i<l1;i++) { sum1=sum1*10+(a[i]-'0'); } } if(sum1<1||sum1>1000) { flag1=0; } if(flag2==1) { for(i=0;i<l2;i++) { sum2=sum2*10+(b[i]-'0'); } } if(sum2<1||sum2>1000) { flag2=0; } if(flag1==1 &&flag2==1) { printf("%d + %d = %d",sum1,sum2,sum1+sum2); } if(flag1==0 &&flag2==1 ) { printf("? + %d = ?",sum2); } if(flag1==1 &&flag2==0 ) { printf("%d + ? = ?",sum1); } if(flag1==0 &&flag2==0 ) { printf("? + ? = ?"); } return 0; }