西青网站文化建设,做网站卖衣服物流包年多少钱,外贸单证流程,网站域名备案授权书题目链接#xff1a;L1-025 正整数AB
题目要求#xff1a;
题的目标很简单#xff0c;就是求两个正整数A和B的和#xff0c;其中A和B都在区间[1,1000]。稍微有点麻烦的是#xff0c;输入并不保证是两个正整数。
输入格式#xff1a;
输入在一行给出A和B#xff0c;…
题目链接L1-025 正整数AB
题目要求
题的目标很简单就是求两个正整数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.字符串形式输入俩个字符串 2.写一个函数用来判断字符串是否符合题目要求 (1)范围在0~1000一种判断条件是输入字符串的长度不得超过4另一种判断的条件是sum不能超过1000 (2)判断每个字符是否在0~9之内如果有一个不在都不满足要求如果都满足条件则将字符串转化为数字 3.进行不同条件的判断来输出不同情况下的结果 代码
#includestdio.h
#includestring.hint is_integer(char ptr[])
{int len strlen(ptr);int ret 0;if (len 4){return -1;}else{int i 0;for (i 0; i len; i){if (ptr[i] 0 ptr[i] 9){ret ret * 10 (ptr[i] - 0);}else{return -1;}}}if (ret 1 || ret 1000){return -1;}else{return ret;}
}
int main()
{char arr[100] { 0 };char str[100] { 0 };scanf(%s , arr);gets(str);int a is_integer(arr);int b is_integer(str);if (a -1 b -1){printf(? ? ?);}else if (a -1 b ! -1){printf(? %d ?, b);}else if (a ! -1 b -1){printf(%d ? ?, a);}else if (a ! -1 b ! -1){printf(%d %d %d, a, b, a b);}return 0;
}
测试结果