计算机考研复试机试笔记(一)

计算机考研机试笔记之C/C++基础1

    • 在线评测系统
    • 头文件与定义文件
    • 基本数据类型
    • 未完待续……

参考书籍:
计算机考研复试上机指导全书.天勤计算机考研系列.孙肇博 张飞飞.2014.01

在线评测系统

在线评测系统(Online Judge,OJ),提供题目的题目描述、输入输出格式、样例输入及输出,系统用户将相应的代码提交给OJ进行评测。OJ后台利用多组数据运行程序,对程序进行评测,并向用户返回相应结果。结果一般有以下八种:

  1. AC(Accepted),答案正确;
  2. CE(Compile Error),编译错误:代码无法通过编译,检查是否提交时选错了语言,或用本地编译器重新编译提交的代码,根据反馈的错误信息,进行修改后重新提交。此类结果一般是由于代码本身错误或者使用库函数却未添加相应头文件;
  3. MLE(Memory Limit Exceeded),内存超限:如果程序使用了太多空间,超过题目限制。检查定义的数组过大、递归层数过多、动态开辟的内存空间在失去用处后未释放……均可导致内存超限;
  4. OLE(Output Limit Exceeded),输出超限:输出过量内容,一般是由于未将调试输出注释导致;
  5. PE(Presentation Error),格式错误:一般我们认为是最接近AC的错误,修改程序中错误输出格式即可解决;
  6. RE(Runtime Error),运行错误:检查是否有浮点错误、段错误(非法访问内存)、递归层数过多等;
  7. TLE(Time Limit Exceeded),运行超时:算法时间复杂度大,或者是特殊数据导致程序陷入死循环;
  8. WA(Wrong Answer),答案错误:好好检查算法逻辑吧,或者也可能是因为自己书写代码时犯了一些小错误。

OJ大多数侧重于竞赛,部分OJ地址如下,可以注册系统选择题目练习:

  1. PAT:http://www.patest.cn/
  2. codeup:http://codeup.cn/
  3. POJ:http://poj.org/
  4. HDOJ:http://acm.hdu.edu.cn/
  5. ZOJ:http://acm.zju.edu.cn/

头文件与定义文件

在C程序中常会看到#include ,stdio.h就是一个头文件,是标准输入输出库,该头文件使你的程序具有输入或输出功能。
在编写C程序时,会用到一些写好的库函数,因此将相应头文件包含到程序首部即可,如:#include
C++ 程序中的头文件不带.h扩展名,若要用C中的.h头文件,去掉.h,在最前面加c即可,如:#include
另外,在使用C++头文件时,在写完所有头文件后,补充:“using namespace std;”
定义文件,主要是用来实现头文件中声明的函数,.c .cpp为扩展名。

在输入输出时,程序中尽量使用一种方式,不要同时在一个程序中使用cout和printf,有时会出现问题。需要提一下的是,cin和cout消耗的时间比scanf和printf多得多,因此当使用cin和cout出现TLE时,可以考虑使用scanf和printf。

基本数据类型

类型 取值范围 大致范围
int -231 ~ +(231-1) -2x109 ~ 2x109
long long -263 ~ +(263-1) -9x1018 ~ 9x1018
float -2128 ~ +2128(实际精度 6 ~ 7 位) 实际精度 6 ~ 7 位
double -21024 ~ +21024(实际精度 15 ~ 16 位) 实际精度 15 ~ 16 位
char -128 ~ +127 -128 ~ +127
bool 0(false) or 1(true) 0(false) or 1(true)
  1. int 型也被称为 long int 型,占用32bit,输出格式”%d“;
  2. long long 型,占用64bit,输出格式”%lld“,当 long long 型数据赋初值时,若初值大于231-1,需要在初值后面加上LL,否则会有编译错误;
    #include <cstdio>
    int main() {
    	unsigned long long a = 1234567890987654321LL;
    	printf("%lld",a);
    	return 0;
    }
    
  3. 在 int 和 long long 前加 unsigned,表示无符号型数据,占用的位数不变,只是将取值范围中的负数范围挪到正数上来;
  4. float(单精度)占用32bit,double(双精度)占用64bit,输出格式”%f“,碰到浮点型的数据均用 double 来存储,;
    #include <cstdio>
    int main() {
    	float a = 3.1415926535;
    	double b = 3.1415926535;
    	printf("%.10f\n",a);
    	printf("%.10f\n",b);
    	return 0;
    }
    
    输出结果:
    3.1415927410
    3.1415926535
    
  5. 字符常量使用ASCII码统一编码,数字 0 ~ 9 对应ASCII码 48 ~ 57,大写字母 A ~ Z 对应ASCII码 65 ~ 90 ,小写字母 a ~ z 对应ASCII码 97 ~ 122,小写字母比大写字母的ASCII码值大32;
  6. 转义字符”\“,一般用到的有:”\n“——换行,,”\0“——空字符NULL,”\t“——Tab缩进;
  7. 字符变量,输出格式”%c“,字符串变量,输出格式”%s“;
    #include <cstdio>
    int main() {
    	char a = 'W';
    	char b[6] = "Hello";
    	printf("%c\n",a);
    	printf("%s\n",b);
    	return 0;
    }
    
    输出结果:
    W
    Hello
    
  8. 布尔型:在C++中可以直接使用,在C中使用需要添加stdbool.h头文件才可使用。用%d输出布尔值时,false值为0,true值为1;
    #include <cstdio>
    int main() {
    	bool a = true,b = false;
    	printf("true\t%d\n",a);
    	printf("false\t%d",b);
    	return 0;
    }
    
    输出结果:
    true    1
    false   0
    
  9. 强制类型转换
    #include <cstdio>
    int main() {
    	double a = 12.8;
    	int b = 4;
    	printf("%d\n",(int)a);
    	printf("%d\n",a/b);
    	printf("%.3f",(double)a/(double)b);
    	return 0;
    }
    
    输出结果:
    12
    -1717986918
    3.200
    
  10. 宏定义
    #include <cstdio>
    #define PI 3.1415926
    int main() {
    	printf("%.8f",PI);
    	return 0;
    }
    
    输出结果:
    3.14159260
    
  11. const常量
    #include <cstdio>
    int main() {
    	const double PI = 3.1415926;
    	printf("%.8f",PI);
    	PI += 1;
    	printf("%.8f",PI);	
    	return 0;
    }
    
    编译信息:
    58C:\Users\JH\Desktop\test\1.cpp [Error] assignment of read-only variable 'PI' 
    
  12. 部分运算符
运算符 描述
+ 把两个操作数相加
- 从第一个操作数中减去第二个操作数
* 把两个操作数相乘
/ 分子除以分母
% 取模运算符,整除后的余数
++ 自增运算符,整数值增加 1
自减运算符,整数值减少 1
== 检查两个操作数的值是否相等,如果相等则条件为真。
!= 检查两个操作数的值是否相等,如果不相等则条件为真。
> 检查左操作数的值是否大于右操作数的值,如果是则条件为真。
< 检查左操作数的值是否小于右操作数的值,如果是则条件为真。
>= 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。
<= 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。
&& 逻辑与运算符。如果两个操作数都非零,则条件为真。
|| 逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。
! 逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。

具体的运算符操作可见:http://www.runoob.com/cprogramming/c-operators.html

未完待续……

你可能感兴趣的:(计算机编程能力)