编程不是看会的,也不是听会的,而是练会的,所以尽量在计算机旁阅读,将书中的代码输入到计算机中进行调试,顺便做做上机练习。千万不要图快,如果没有足够的时间来实践,那么学得快,忘得也快。
经验(参加机试之前看一看,不要犯错):
1、整数值用%d输出,浮点数用%lf输出
2、整数/整数=整数,浮点数/浮点数=浮点数
一般来说,只要在程序中用到了数学函数,就需要在程序最开始的地方包含头文件<cmath>,并在编译时连接数学库。
3、scanf中的占位符和变量的数据类型应一一对应,且每个变量前需要&符号。
4、在算法竞赛中,输入前不要打印提示信息。输入完毕后应立即终止程序,不要等待用户按键,因为输入输出的过程都是自动的,没有人工干预。
5、在算法竞赛中不要使用头文件conio.h,包括getch()、clrscr()等函数。
6、在算法竞赛中,每行输出均应以回车符结束,包括最后一行。除非特别说明,每行的行首不应有空格,但行末通常可以有多余空格。另外,输出的每两个数或者字符串间应以单个空格隔开。
7、尽量用const关键字声明常数。
8、赋值是动作,先计算右边的值,再赋给左边的变量,覆盖它原来的值。
9、算法竞赛是在比谁能更好地解决问题,而不是在比谁写的程序看上去更高级。
10、C语言中的逻辑运算符都是短路运算符。一旦能够确定整个表达式的值,就不再继续计算。
11、算法竞赛的目标是变成对任意输入均得到正确的结果,而不是仅对样例数据。
有时,即使通过了题目中给出的样例,程序仍然可能存在问题。
12、如果有多个并列,情况不交叉的条件需要一一处理,可以用else if语句。
13、可以用花括号把若干条语句组合成一个整体。这些语句仍然按顺序执行。
14、在难以一次性求出最后结果时,可以用变量存储“临时结果”,从而逐步更新。
对于竞赛的一点说明:
1、选手程序的执行时自动完成的,没有人工干预。不要在用户输入之前打印提示信息。
2、不要让程序“按任意键退出”。(例如:system("pause"),或者多加一个getchar())。
简单的鸡兔同笼问题:
//鸡兔同笼
#include<iostream>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
int y=(m-2*n)/2;
int x=n-y;
if(m%2==1||x<0||y<0)
cout<<"No answer"<<endl;
else{
cout<<x<<" "<<y<<endl;
}
return 0;
}