海贼19-8班现场课
9200人加入学习
(1人评价)
C语言程序设计(海贼现场课)
价格 ¥ 600.00
该课程属于 海贼19-8班(C++高薪班) 请加入后再学习

声明放.h文件里

定义放在cpp文件里

#include "1.funcA.h" 这是函数声明

 

[展开全文]

递归:函数定义里调用了自身于是从头运行函数 直至函数不再调用自身 到出口结束

[展开全文]
int main()
{
    int a = 10;
    int c = 11;
    int &b = a; // 必须进行初始化;
    b = c; // b 并没有指向c, 它还是a的别名,但a的值变成了与c一样;
    cout << "a : " << a << endl;
    cout << "b : " << b << endl;
    cout << "c : " << c << endl;
}
[展开全文]

printf("%g")以什么样的方式输入以什么样的方式输出

#108求面积 字符swtich

[展开全文]

if(xxx) 当xxx为0时if 假

xxx不为0if为真

if (a++&&b++) 

计算机先看a值 a为0 与运算直接为假 因此a++后b++不会运行   短路

 

[展开全文]

1-(1/a+1/b)*t-(1/a+1/b-1/c)*h=0

1=(1/a+1/b)*t+(1/a+1/b-1/c)*h

[展开全文]

<inttypes.h>

int8_t 八位一字节  最大值127最小值-128 最小值比最大值大一

格式占位符写法

printf("%"PRId"\n",a)

int8_MIN最小值 MAX最大值

[展开全文]

#include <math.h>

int n;

int x=0;

const double pi=acos(-1)--反三角函数 得出pi是Π

scanf("%lf",&n);

 x=n*pi/180;

printf("%lf\n",x);

 

[展开全文]

①a=b 把b的值赋给a

② a=4/3  a=1 因为a是整型时只取整数部分

即便double a  计算机看到4/3 两个整型会自动把答案变成整型  

处理方法:a=4.0/3

 

③& 与运算 都为1 为1 其余为0 

举例:2&3

10 &11 → 10

④| 或运算 都为0 为0 其余为1 

举例:2|3 

10 | 11 → 11 

⑤^ 异或运算  相同为0 其余为1 

举例:2^3 

10^11 → 01

⑥ ~取反运算 

举例:~2

10→01

⑦<<左移  向左移位  值乘2 低位补0 符号位不变 

⑧>>右移 向右移位 值除2 向下取整 符号位不变  其中带负号时 -3>>1  值为-2  

00000011(3)--11111101--(-3) 11111110(-3>1)--00000010(-3右移取反以后的值)就是2 所以-3>1 就是负2 

[展开全文]

①scanf("%[^\n]s") 输入的内容除了^(非号)后面的东西以外的全部读入 本条是指除了回车以外的全部读入

②getchar()强行取出最后一个字符 ①中由于最后有回车 用getchar取掉回车

sprintf(str2,"%d",str) 读入str的值将其写入str2

④sprintf(str2,"(%d)",str)输出后为 (str)

sprintf(str2,"%d.%d.%d",&a,&b,&c)输出后为a.b.c   

所以说sprintf可以在%d处改变输出的格式 加括号加.

sprintf 可以用于字符串的输出

fprintf 可以用于字符串的输出

fprintf(abc,"%d",str)将str字符串输出到abc文件中

⑥stdin标准输入 stdout标准输出 stderr标准错误输出 可以输出bug结果

   

[展开全文]

printf 函数

   头文件: stadio.h

   原型: int printf(const char *format, ...);

   format: 格式控制字符

   ...:可变参数列表

   返回值:输出字符的数量

[展开全文]

为什么format要用指针?

因为可能有很多格式

[展开全文]
#include #include typedef int64_t int1; int1 Triangle(int1 n) { return n * (n + 1) / 2; } int1 Pentagonal(int1 n) { return n * (3 * n - 1) / 2; } int1 Hexagonal(int1 n) { return n * (2 * n - 1); } int1 binarySearch(int1 (*func)(int1), int1 x) { int1 head = 1, tail = x, mid; while (head <= tail) { mid = (head + tail) >> 1; if (func(mid) == x) return mid; if (func(mid) < x) head = mid + 1; else tail = mid - 1; } return -1; } // Euler 45题题解 int1 main() { int n = 286; for(;; n++) { if(binarySearch(Hexagonal, Triangle(n)) == -1) continue; if(binarySearch(Pentagonal, Triangle(n)) == -1) continue; printf("%" PRId64 "\n", Triangle(n)); break; } return 0; }
[展开全文]

有个疑问,怎么保障va_list的安全性。比如3.func.cpp题目中main中的n的值如果大于后面的实际入参列表长度,那么就会越界访问堆栈空间。

简单上网查了下,没找到特别的线索?

[展开全文]

总结:

1、

【头文件和源文件之间,来回编写】

测试框架的整体编写过程,根据“声明放头文件,定义放源文件”的原则,在头文件和源文件之间,来回编写;特别地,例如创建数据结构(链表),需要创建新的头文件;

2、

【在测试框架中,数组和链表的作用差距体现在哪呢?】

数组的大小,在程序运行之前,就已经提前被确定下来了,例如大小为100的整型数组,大小为400的字符串,大小为800的浮点型数组等等;

而链表的节点数目是随着程序的运行而逐个逐个确定的。

链表,如果新增一个元素,新增一个节点;新增100个元素,新增100个节点。

因此,可以让测试用例的数目,不受到数组大小的限制。

3、

【让任意一个结构,附带链表性质】

我们可以让任意类型,拥有链表这个特性;也可以把不同类型的节点,穿成一串;

任何一个结构,不是链表形态,没关系;在最后一个字段放一个LinkNode即可。

马上可以支持链表操作,就像一个外骨骼一样。这是一个十分优美的设计!

4、

【计算偏移量和首地址】

在T类型中的int偏移量是多少?

首先将0(零)地址,转成T*地址

    再引用T*地址的Name字段

        再去取这个字段的地址

            再把地址强转long long————就是当前这个地址的偏移量。//64位操作系统的地址,就是long long类型,8字节;

代码如下:

#define offset(T, name) ((long long)(&(((T *)(0))->name)))                        

 

如何通过下一个节点的地址,去确定下一个结点的头地址?

先把p转成char *类型地址

    减去相关偏移量offset(T, name)

        再强转成T *类型————这就是下一个节点的首地址

#define Next(p, T, name)    ((T *)(((char *)p) - offset(T, name)));    

[展开全文]

总结:

一、【泛型编程】:一般而言函数没有办法进行泛型编程,不能一会输出浮点型,一会输出整型。但是,一些情况下,可以用泛型宏把变量转换成字符串型,打印字符串就行了。

 

二、【宏替换变量的时候,有两点值得注意】

1、防止宏替换的变量中有a++,造成多次++,因此用新的变量_a和_b来存储 a和b的值,就会避免重复替换导致多次++。(此前,讲宏的时候提到过)

2、因为,a和b类型有可能不一样,因此要分开写;

__typeof(a) _a = (a)

__typeof(b) _b = (b)

 

三、【全局变量】

如果其他源文件要使用这个变量,就是在头文件中声明一下这个变量,extern 一下,这个就是全局变量了。

变量,未声明也会报错!!也需要声明!!!!!!!!!类似于函数一样。

如何声明变量?————extern

extern_struct FunctionInfo haizei_test_info;

和函数定义一样,别管在哪,我先告诉你有这个东西。

这就是声明一个变量,这个时候变量在哪别管,链接的时候,保证你可以找到这个变量的定义。

 

四、【浮点型的相等判断】

浮点型无法完全判断等,因此,判断输出正确率的字体颜色的时候,写 rate == 1.0会出错!!

可以这样写:fabs(rate - 100.0) < 1e-6

或者上述:haizei_test_info.success == haizei_test_info.total

[展开全文]

授课教师

C++算法工程师
高级算法研发工程师

课程特色

文档(9)
视频(50)
图文(22)
下载资料(3)