【思考题】CSDN第四届在线编程大赛2014初赛:带通配符的数

题目要求:

输入参数:参数A,含有任意个数的?的数值字符串,如:12?4,?代表一位任意数

                    参数B,不含?的数值字符串,长度与参数A一致

输出结果:参数A比参数B大的可能数值个数

输入样例

36?1?8

236428

8?3

910

?

5



输出样例

100

0

4

#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;
}

【思考题】CSDN第四届在线编程大赛2014初赛:带通配符的数

上一篇:算法与数据结构(2)--英雄会第三届在线编程大赛:几个bing


下一篇:庞果英雄会第二届在线编程大赛·线上初赛:AB数