首页 > 代码库 > CSDN第四届在线编程大赛2014初赛:带通配符的数
CSDN第四届在线编程大赛2014初赛:带通配符的数
题目要求:
输入参数:参数A,含有任意个数的?的数值字符串,如:12?4,?代表一位任意数
参数B,不含?的数值字符串,长度与参数A一致
输出结果:参数A比参数B大的可能数值个数
输入样例
36?1?8
236428
8?3
910
?
5
输出样例
100
0
4
[cpp] view plaincopy
- #define num_max_length 20
- int main(void)
- {
- char num1[num_max_length];
- char num2[num_max_length];
- int result_temp=0, result=0;
- int num_length=0, num_index=0;
- int flag=0;
- while(1){
- memset(num1, 0, num_max_length);
- memset(num2, 0, num_max_length);
- result_temp=0;
- result = 0;
- flag = 0;
- printf("参数A:");
- fgets(num1, num_max_length, stdin);
- if(memcmp(num1, "end", 3)==0) break;
- printf("参数B:");
- fgets(num2, num_max_length, stdin);
- if(memcmp(num2, "end", 3)==0) break;
- if((num_length=strlen(num1))!=strlen(num2)){
- printf("num1 num2 length not match\n");
- break;
- }
- for(num_index=0; num_index<num_length; num_index++){
- if(num1[num_index]==‘?‘){
- if(flag == 0)
- result_temp = (int)(‘9‘-num2[num_index])+result_temp*10;
- else
- result_temp = result_temp*10;
- }
- else{
- if(num1[num_index]==num2[num_index]){
- continue;
- }
- else if(num1[num_index]<num2[num_index]){
- //break;
- if(flag == 0){
- flag = 1;
- }
- }
- else{
- if(flag == 0){
- flag = 1;
- result_temp += 1;
- }
- }
- }
- }
- printf("参数A比参数B大有%d种可能\n", result_temp);
- }
- printf("用户终止程序\n");
- system("pause");
- return 0;
- }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。