模拟题总结

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:保留三位小数

原文地址:https://www.cnblogs.com/zhuqiwei-blog/p/8443519.html