• CSDN第四届在线编程大赛2014初赛:带通配符的数


    题目要求:

    输入参数:参数A,含有任意个数的?的数值字符串,如:12?4,?代表一位任意数
                 参数B,不含?的数值字符串,长度与参数A一致
    输出结果:参数A比参数B大的可能数值个数

    输入样例
    36?1?8
    236428
    8?3
    910
    ?
    5

    输出样例
    100
    0
    4

    [cpp] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. #define num_max_length 20  
    2. int main(void)  
    3. {   
    4.     char num1[num_max_length];  
    5.     char num2[num_max_length];  
    6.     int result_temp=0, result=0;  
    7.     int num_length=0, num_index=0;  
    8.     int flag=0;  
    9.   
    10.     while(1){  
    11.         memset(num1, 0, num_max_length);  
    12.         memset(num2, 0, num_max_length);  
    13.         result_temp=0;  
    14.         result = 0;  
    15.         flag = 0;  
    16.   
    17.         printf("参数A:");  
    18.         fgets(num1, num_max_length, stdin);  
    19.         if(memcmp(num1, "end", 3)==0) break;  
    20.         printf("参数B:");  
    21.         fgets(num2, num_max_length, stdin);  
    22.         if(memcmp(num2, "end", 3)==0) break;  
    23.         if((num_length=strlen(num1))!=strlen(num2)){  
    24.             printf("num1 num2 length not match ");  
    25.             break;  
    26.         }  
    27.   
    28.         for(num_index=0; num_index<num_length; num_index++){  
    29.             if(num1[num_index]=='?'){  
    30.                 if(flag == 0)  
    31.                     result_temp = (int)('9'-num2[num_index])+result_temp*10;  
    32.                 else  
    33.                     result_temp = result_temp*10;  
    34.             }  
    35.             else{  
    36.                 if(num1[num_index]==num2[num_index]){  
    37.                     continue;  
    38.                 }  
    39.                 else if(num1[num_index]<num2[num_index]){  
    40.                     //break;  
    41.                     if(flag == 0){  
    42.                         flag = 1;  
    43.                     }  
    44.                 }  
    45.                 else{  
    46.                     if(flag == 0){  
    47.                         flag = 1;  
    48.                         result_temp += 1;  
    49.                     }  
    50.                 }  
    51.             }  
    52.         }  
    53.         printf("参数A比参数B大有%d种可能 ", result_temp);  
    54.     }  
    55.   
    56.     printf("用户终止程序 ");  
    57.     system("pause");  
    58.   
    59.     return 0;  
    60. }  

  • 相关阅读:
    字集码(字符编码)
    图片轮播(可实现手动与自动的切换)
    Eclipse常用快捷键
    Java并发编程:Callable、Future和FutureTask
    Java并发之CountDownLatch、CyclicBarrier和Semaphore
    java注解
    JVM加载class原理
    阿里中间件技术及双十一实践--软负载——分布式系统的引路人
    阿里中间件技术及双十一实践--中间件总体介绍
    Java的LockSupport.park()实现分析
  • 原文地址:https://www.cnblogs.com/xhyzjiji/p/3712739.html
Copyright © 2020-2023  润新知