1、无脑模拟题:
1)int范围在2*10^9,long与int相同。 long long 为9*10^18。
2)在复杂度较高时,可以考虑对输入的数据进行预处理,尽量边输入边处理,而不是全部存起来后再处理。
3)使用字符数组、字符串数组来做输出,减少if else。 字符串数组初始化如下: char str[3][20] = {"bkjdc", "sadsa", "uerywur"};
4)对于比较复杂的输入,可以用struct存储。struct 型变量里没有数组时,可以直接赋值。如果有数组,则需要对数组单独逐元素赋值。
typedef struct rcd{ char id[17]; int hh,mm,ss; }record;
2、打印输出题:
1)两种办法,要么直接找到规律并按行输出;要么先开一个二维字符数组,在数组里进行操作,最后输出整个数组。
3、计算日期差值:
1)从小日期开始按天累加,直到小日期等于大日期。在累加的过程中需要做进制转换,年月日的进制中,日进到月会变化,所以将这部分存储为一个二维数组,分别记录平年与闰年的每月天数。
2)闰年:能被4整除且不能被100整除,或者能被400整除。
4、进制转换:
1)a进制转为b进制,先将a进制转为10进制,再将10进制转为b进制。a进制转10进制时,采用每一位乘对应的基的次方并求和。 10进制转b进制,采用除基取余法(最好用do while循环)。
5、字符串处理:
1)scanf %s读字符串: char s[5][10], t[10]; scanf("%s%s", s[1], t); 在读到空格后会截止。
2)gets读字符串: gets(t); 在读到换行符才截止。但如果在读字符串之前读过整数,则需要将整数后面的字符(换行、空格)吸收掉(可用getchar()),否则会读入gets();
3)strlen 、strcpy等需要引入<string.h>
7、其它:
1)long long: 输入输出 %lld; float: 输入输出:%f; double:输入: %lf 输出:%f;
2)%3d:右对齐,最长3位,不足用空格补齐; %03d:右对齐,最长3位,不足用0补齐; %.3f:保留三位小数