资源描述:
《《计算机考研复试上机指导全书习题集》试读版》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、《计算机考研复试上机指导全书习题集》试读版1001.A+BFormat(20)TimeLimit:400MSMemoryLimit:65536KB题意给出两个整数a、b(不超过10^9),求a+b的值,并按照xxx,xxx,xxx,xxx的格式输出。样例解释SampleOne-1000000+9=-999991按照格式输出为-999,991。考察点字符串处理思路Step1对输入的两个数字a与b进行累加,并赋值给sum。之后判断累加后得到的sum是否为负数,如果是负数,则负号先行输出,并令sum=-sum来取正。Step2把sum的
2、每一位存到数组中(例如123存到数组num[]中就是num[0]=3、num[1]=2、num[2]=1,即sum的低位存储到num[]的低位),之后从高位开始输出数组元素,每输出3个数字输出1个逗号,最后3个数字后面不输出。注意点Note1:把sum存放到数组时,如果是用while写的话,就要注意0这个数据需要特殊处理,否则while循环进不去,导致len会等于0;而如果用dowhile循环写的话,则可以不用考虑。//使用while的写法intlen=0;if(sum==0)num[len++]=0;while(sum){num
3、[len]=sum%10;sum/=10;++len;}//使用do...while的写法=5=intlen=0;do{num[len]=sum%10;sum/=10;++len;}while(sum);Note2:注意最低位后面是不需要输出逗号的,所以需要在输出逗号时判断是否是最低位。Note3:这题还可以采用下面的写法,不妨拓宽下思路(省略Step1的步骤):在printf的格式化输出中,%3d表示输出三位整数,不满三位的高位补空格;而%03表示输出三位整数,不满三位的高位补0。于是可以得到下面这个简洁的写法,不妨好好理解一下
4、:if(sum>=1000000)printf("%d,%03d,%03d",sum/1000000,sum%1000000/1000,sum%1000);elseif(sum>=1000)printf("%d,%03d",sum/1000,sum%1000);elseprintf("%d",sum);参考代码#includeintnum[10];intmain(){inta,b,sum;scanf("%d%d",&a,&b);sum=a+b;//将a+b赋值给sumif(sum<0){//sum为负数时,输出负号
5、并取sum的相反数printf("-");sum=-sum;}intlen=0;//len存放sum的长度if(sum==0)num[len++]=0;//sum为0时特殊处理while(sum){//将sum存入数组num[]中,其中sum的低位存放到num[]的低位num[len++]=sum%10;//将sum的末位sum%10存放到num[len],然后len++sum/=10;//去除sum的末位}for(intk=len-1;k>=0;k--){//从高位开始输出printf("%d",num[k]);if(k>0&&
6、k%3==0)printf(",");//每三位一个逗号,最后一位除外}return0;}=6=1014.WaitinginLine(30)TimeLimit:400MSMemoryLimit:65536KB题意某银行有N个窗口,每个窗口前最多可以排M个人。现在有K位客户需要服务,每位客户的服务时长已知。假设所有客户均在08:00时刻按客户编号次序等在黄线外,且如果有窗口的排队人数没有排满(没有达到M人),当前在黄线外的第一个客户就会选择这样的窗口中排队人数最少的窗口去排队(排队人数相同时,选择窗口序号最小的窗口去排队)。给出Q个
7、查询,每个查询给出一位客户的编号,输出这位客户的服务结束时间。注意,如果一个客户在17:00之后(含17:00)还没有被服务,则不再服务,输出Sorry;而如果一个客户在17:00之前被服务,那么无论他的服务时长有多长,都会服务完整。样例解释SampleOne有两个窗口,每个窗口前最多排两个人,初始状态下7个客户都在黄线外,然后按照选择窗口的规则进行排队,得到如图的排队情况,其中每个客户右下角的中括号中的数字表示该客户当前剩余的服务时间。由于1号客户的剩余服务时间比2号客户更短,因此1号客户在08:01时先行服务完毕,5号客户排到
8、1号窗口后面,同时2号客户的剩余服务时间减少1分钟,得到下图08:01的状态图。接下来的步骤过程与此类似,这里不再赘述,读者可以从图中得到整个过程,其中在17:00时7号客户将无法被服务,因此7号客户应当输出Sorry。=37=考察点排队问题思路S