这是本菜鸟第一次尝试写技术博客,总结一下杭电2000-2007的做题情况。
杭电的第11卷中的题目都是偏基础的,而这头8题,更是基础中的基础,可谓“水中之水”,不过对于熟悉基本的语法,还是有好处的。当然了,在解题的过程中,还是用到了一些基本的、常用的编程技巧,也遇到一些常见的错误。现在就做题情况,总结一下。
2000:把整个测试用例看做是字符串,避免逐个输入字符造成的混乱,不过逐个字符输入也是可以的。可以这样输入:scanf("\n%c%c%c",&a,&b,&c);
本题还用了比较三个变量的经典方法。
2001-2003:只要懂得表达式的使用和如何处理多个测试用例,就可以解决。不过在做2003时,领悟到了如果想给整型变量x输入数值,可以如下操作
int * px=&x; scanf("%d",px); 其实px所取代的位置,本质上只需要变量的地址。如果直接写x,系统将x中的值当做地址寻找变量,这样就会造成程序错误了。
2004:有两种方法,一种是用选择语句,一种是打表法。在做题的过程中,才知道负整数的整除定义,如果整数除法的结果是小数,无论符号,一律把小数部分裁掉。
比如-9/10=0。
2005:月份中的天数是不规则数据,用数组来处理。
使用的累加器求和,使用累加器的时候要注意初始化。
在处理闰年判断时想到,如果对于处理的逻辑条件不清晰时,可以画树状图帮助分析。
2006-2007:题目差不多,都是累加或者累乘,但是每个数据都需要判断是否需要累加或者累乘,算是解决(1+2+3……+100) 的变种吧。
2007中的m和n没有说明大小,很容易造成错误。
在做2006时,领悟到了,写程序的时候,要对整个程序的结构有清晰的认识,明白每个循环对应题目的什么要求。
比如代码中的while{}处理一个测试用例;for{}处理每个测试用例中的数据。
好了,终于写完了本次解题的总结了。
本菜鸟的第一次原创的技术博客,就此诞生了!