本文共 1176 字,大约阅读时间需要 3 分钟。
题的目标很简单,就是求两个正整数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#include //包含atoi()函数,该函数可以把字符串转换为数字#include //包含memset()函数int error(char c[]);int main(){ char a[20], b[20]; char x[5], y[5]; scanf("%s ", a); gets(b); memset(x, '\0', sizeof(x));//初始化 memset(y, '\0', sizeof(y)); if (error(a)==0) x[0] = '?'; if (error(b)==0) y[0] = '?'; if (x[0] != '?') for (int i = 0; i < strlen(a); i++) x[i] = a[i]; if (y[0] != '?') for (int i = 0; i < strlen(b); i++) y[i] = b[i]; if (x[0] == '?' || y[0] == '?') printf("%s + %s = ?", x, y); else printf("%d + %d = %d", atoi(x), atoi(y), atoi(x) + atoi(y)); return 0;}int error(char c[]){ if (c[0] == '0') return 0; if (strlen(c) > 4) return 0; for (int i = 0; i < strlen(c); i++) if (c[i] < '0' || c[i]>'9') return 0; if (atoi(c) > 1000) return 0; return 1;}
转载地址:http://yiolf.baihongyu.com/