C/C++注意点

1.变量

变量名的第一个字符必须是字母或下划线,除第一个字符之外的其它字符必须是字母、数字或下划线

2.ASC11编码
编码范围是0-127,其中0-9对应编码为48-57,A-Z对应65-90,a-z对应97-122,\0表示空字符NULL,其ASC11码为0,\0不是空格。计算机内部,字符按ASC11码存储,因而可以将整型数值赋给字符型变量,并通过输出控制符%c来输出字符,但将整型数值通过%c来输出时会输出此ASC11码对应的字符

3.输入输出格式
除了%c,scanf对其它格式符的输入是以空白符(空格,Tab,换行)为结束判断标志的。
%s读入时以空格和换行作为读入结束的标志,%c是可以读入空格和换行的。
gets()用来输入一行字符串(以换行符作为输入结束),puts()用来输出一行字符串并紧跟一个换行符。
%md使不足m位的int型变量以m位进行右对齐输出,其中高位用空格补齐,如果变量本身超过m位则保持原样,%0md和%md不同在于,当变量不足m位时,将在前面补足够数量的0而不是空格。
%.mf让浮点数保留m位小数输出,这里保留小数使用四舍六入五成***则(如果需要四舍五入可以用math中的round函数)

4.常用math函数
abs(int x)用来对int型变量取绝对值
fabs(double x)用来对double型变量取绝对值
floor(double x)和ceil(double x)分别用于double型变量的向下取整和向上取整,放回类型为double
pow(double r, double p)返回r^p,返回类型为double
sqrt(double x)返回double型变量的算术平方根
log(double x)返回double型变量的以自然对数为底的对数,求以任意数为底的对数可以用换底公式logab = logeb / logea
sin(double x),cos(double x),tan(double x),asin(double x),acos(double x),atan(double x)用来求三角函数和反三角函数,pi可以用const double pi = acos(-1)来精确表示
round(double x)用于将double x四舍五入到整数,返回类型是double

5.memset()和fill()
memset(数组名,值,sizeof(数组名)),使用它需要添加string.h头文件,其按字节赋值,即对每个字节赋相同的值,最好只赋0或-1,如果要赋其他值可以用stl的头文件algorithm中的fill()

6.string.h头文件
strlen(字符数组)求字符长度,即字符数组中第一个\0前的字符的个数
strcmp(字符数组1, 字符数组2)返回两个字符串大小的比较结果(按字典序比较),12返回一个正整数
strcpy(字符数组1, 字符数组2)把字符数组2拷贝给字符数组1,包括结束符\0
strcat(字符数组1, 字符数组2)把字符数组2接到字符数组1后

7.sscanf()与sprintf()
sscanf(str, "%d", &n)是把字符数组str中的内容以%d的格式写到n中(从左至右)
sprintf(str, "%d", n)是把n以%d的格式写到str字符数组中(从右至左)

8.构造函数初始化列表

struct studentInfo{
    int id;
    char gender;
    studentInfo(int _id, char _gender){
        id = _id;
        gender = _gender;
    }
    //构造函数初始化列表
    studentInfo(int _id, char _gender) : id(_id), gender(_gender) {}
};

9.比较浮点数是否相等、大于、小于

const double eps = 1e-8;
#define Equ(a, b) (fabs((a) - (b)) < (eps))
#define More(a, b) (((a) - (b)) > (eps))
#define MoreEqu(a, b) (((a) - (b)) > (-eps))
#define Less(a, b) (((a) - (b)) < (-eps))
#define LessEqu(a, b) (((a) - (b)) < (eps))
int main()
{
    double dp = 1.23;
    //dp进行一系列可能损失精度的计算后
    if(Equ(dp, 1.23)){
        printf("true");
    }
    else{
        printf("false")
    }
    return 0;
}

10.黑盒测试与白盒测试
黑盒测试:系统后台会准备若干组输入数据,然后让提交的程序去运行这些数据,如果输出的结果与正确的答案完全相同(字符串意义上的比较),那么就称通过了这道题的黑盒测试,否则会根据错误类型而返回不同的结果。其中,根据黑盒测试是否对每组测试数据都单独测试或者时一次性测试所有测试数据,又可以分为单点测试和多点测试。
白盒测试:把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。白盒测试的方法总体上分为静态分析方法和动态分析方法两大类。静态分析是一种不通过执行程序而进行测试的技术。静态分析的关键功能是检查软件的表示和描述是否一致,有无冲突或者歧义。
动态分析是当软件系统在模拟的或真实的环境中执行之前、之中和之后,对软件系统行为的分析。动态分析包含了程序在受控的环境下使用特定的期望结果进行正式的运行。它显示了一个系统在检查状态下是正确还是不正确。在动态分析技术中,最重要的技术是路径和分支测试。

10.多点测试

while(scanf("%d", &n) != EOF) {}
while(scanf("%d%d", &a, &b) != EOF){
    if(a == 0 && b == 0) break;
}
while(scanf("%d%d", &a, &b), a || b) {}
while(T--) {}
全部评论

相关推荐

感性的干饭人在线蹲牛友:🐮 应该是在嘉定这边叭,禾赛大楼挺好看的
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务