![45ca2e6269cf621a278bbf981e0870b6.png](https://img-blog.csdnimg.cn/img_convert/45ca2e6269cf621a278bbf981e0870b6.png)
1
溢出
溢出 是程序调试过程中一个非常难以捕捉的bug
好好的代码跑着跑着变量的值就飞了
只留下红红的WA和一片万脸懵逼
咋回事呢?
真正理解溢出
首先要理解C语言中 变量的存储形式
以下将涉及到一些naive的 计算机组成原理知识
非战斗人员 请撤离!!!
拿我们最常用的char,short, int,
long, long long举例
在我们测试环境(win32)下
它们对应的字节长度如下表所示:
类型名称 | 字节数 | 取值范围(十进制) |
signed char | 1 | -128~127 |
short | 2 | -32768~32767 |
int | 4 | -2147483648~2147483647 |
long | 4 | -2147483648~2147483647 |
long long | 8 | -922337203685477588~922337203685477587 |
聪明的你应该已经看出规律了
一个字节对应8个位
而取值的上限是:2^(总位数-1)-1
下限是:-2^(总位数-1)
当运算过程中超过对应数据类型的界限时
就会发生 溢出
然后就会出现不符合思维逻辑的计算
(实际上是先取反码再取补码)
![3070cf46ea6ba9f33c290969bc7389c6.png](https://img-blog.csdnimg.cn/img_convert/3070cf46ea6ba9f33c290969bc7389c6.png)
float和double这类浮点数采用特殊的编码机制
在这里不做进一步展开了
只要知道double的精度比float高即可
所以在上机的过程中能用double就不用float
同理,能用longlong就不用int
![92f55ee701d6d21a8e0b8be1a265c142.png](https://img-blog.csdnimg.cn/img_convert/92f55ee701d6d21a8e0b8be1a265c142.png)
2
双重循环
咳咳,听说有同学不喜欢写 双重循环
那你怕不怕限定答题不允许用循环?
(正在进行的阿里校招就出了这种丧心病狂的题目)
所以双重循环还是要学会使用的嘛
我们举个简单的栗子:
for(int i=0;i {for(int j=0;j {
a[i][j] = 0;
}
}
这是一段数组初始化的代码
将一个大小为nxn的二维数组中的所有元素都设为0
也是数组常用的操作之一
它的逻辑是先执行内部的循环
对数组的第i行进行初始化
然后再初始化第i+1行,以此类推
双重循环还有一个经典的使用场景是打印如下图形:
*
**
***
****
*****
代码如下:
for(int i =0;i<5;i++)
{for(int j=0;j1;j++)
{
printf("*");
}
printf(*\n");
}
相信你现在已经可以打印出任意的规律图形了!
(去年期末考试第一题就是这个哦)
![22ce4637bb33a02bf0e4c2dc731e4d29.png](https://img-blog.csdnimg.cn/img_convert/22ce4637bb33a02bf0e4c2dc731e4d29.png)
3
学长小课堂
学长,我看隔壁的小雨敲代码好快好快啊......时常为自己单身19年的手速担忧
![f9ae59eb2d35533c1afaa29e76defd12.png](https://img-blog.csdnimg.cn/img_convert/f9ae59eb2d35533c1afaa29e76defd12.png)
![236438d70122c2e5f9e85cf7c4edb5f7.png](https://img-blog.csdnimg.cn/img_convert/236438d70122c2e5f9e85cf7c4edb5f7.png)
学弟
嘤嘤嘤
![f9ae59eb2d35533c1afaa29e76defd12.png](https://img-blog.csdnimg.cn/img_convert/f9ae59eb2d35533c1afaa29e76defd12.png)
![236438d70122c2e5f9e85cf7c4edb5f7.png](https://img-blog.csdnimg.cn/img_convert/236438d70122c2e5f9e85cf7c4edb5f7.png)
学弟
![236438d70122c2e5f9e85cf7c4edb5f7.png](https://img-blog.csdnimg.cn/img_convert/236438d70122c2e5f9e85cf7c4edb5f7.png)
![f9ae59eb2d35533c1afaa29e76defd12.png](https://img-blog.csdnimg.cn/img_convert/f9ae59eb2d35533c1afaa29e76defd12.png)
![236438d70122c2e5f9e85cf7c4edb5f7.png](https://img-blog.csdnimg.cn/img_convert/236438d70122c2e5f9e85cf7c4edb5f7.png)
学弟
![55d5c8fb69c5ddc672d479405ab95b3e.png](https://img-blog.csdnimg.cn/img_convert/55d5c8fb69c5ddc672d479405ab95b3e.png)
学长
![4845adae30168b11c587a6b1989f747f.png](https://img-blog.csdnimg.cn/img_convert/4845adae30168b11c587a6b1989f747f.png)
叮~,您的快捷键大礼包已到账,请查收!
![55d5c8fb69c5ddc672d479405ab95b3e.png](https://img-blog.csdnimg.cn/img_convert/55d5c8fb69c5ddc672d479405ab95b3e.png)
学长
![4845adae30168b11c587a6b1989f747f.png](https://img-blog.csdnimg.cn/img_convert/4845adae30168b11c587a6b1989f747f.png)
ctrl+c 复制
![55d5c8fb69c5ddc672d479405ab95b3e.png](https://img-blog.csdnimg.cn/img_convert/55d5c8fb69c5ddc672d479405ab95b3e.png)
学长
![4845adae30168b11c587a6b1989f747f.png](https://img-blog.csdnimg.cn/img_convert/4845adae30168b11c587a6b1989f747f.png)
ctrl+v 粘贴
![55d5c8fb69c5ddc672d479405ab95b3e.png](https://img-blog.csdnimg.cn/img_convert/55d5c8fb69c5ddc672d479405ab95b3e.png)
学长
![4845adae30168b11c587a6b1989f747f.png](https://img-blog.csdnimg.cn/img_convert/4845adae30168b11c587a6b1989f747f.png)
ctrl+a 全选
![55d5c8fb69c5ddc672d479405ab95b3e.png](https://img-blog.csdnimg.cn/img_convert/55d5c8fb69c5ddc672d479405ab95b3e.png)
学长
![4845adae30168b11c587a6b1989f747f.png](https://img-blog.csdnimg.cn/img_convert/4845adae30168b11c587a6b1989f747f.png)
ctrl+s 保存
随手保存很重要!!!
![55d5c8fb69c5ddc672d479405ab95b3e.png](https://img-blog.csdnimg.cn/img_convert/55d5c8fb69c5ddc672d479405ab95b3e.png)
学长
![4845adae30168b11c587a6b1989f747f.png](https://img-blog.csdnimg.cn/img_convert/4845adae30168b11c587a6b1989f747f.png)
ctrl+z 撤销
![55d5c8fb69c5ddc672d479405ab95b3e.png](https://img-blog.csdnimg.cn/img_convert/55d5c8fb69c5ddc672d479405ab95b3e.png)
学长
![4845adae30168b11c587a6b1989f747f.png](https://img-blog.csdnimg.cn/img_convert/4845adae30168b11c587a6b1989f747f.png)
选择多行后tab 向右缩进
![55d5c8fb69c5ddc672d479405ab95b3e.png](https://img-blog.csdnimg.cn/img_convert/55d5c8fb69c5ddc672d479405ab95b3e.png)
学长
![4845adae30168b11c587a6b1989f747f.png](https://img-blog.csdnimg.cn/img_convert/4845adae30168b11c587a6b1989f747f.png)
选择多行后shitf + tab 向左缩进
![55d5c8fb69c5ddc672d479405ab95b3e.png](https://img-blog.csdnimg.cn/img_convert/55d5c8fb69c5ddc672d479405ab95b3e.png)
学长
![4845adae30168b11c587a6b1989f747f.png](https://img-blog.csdnimg.cn/img_convert/4845adae30168b11c587a6b1989f747f.png)
在DEV-C++中:
ctrl+/ 单行注释
ctrl+d 删除整行
ctrl+n 新建源代码
ctrl+w 关闭当前源代码
![fdb596d7d9820ad3a3b13cd7b3f6c350.png](https://img-blog.csdnimg.cn/img_convert/fdb596d7d9820ad3a3b13cd7b3f6c350.png)
4
上机大礼包
最重要的一点当然是仔细看题!!!
如果对题意有不理解的
可以及时询问在场的老师或者助教
题意问题在考试的时候也是允许提问的
当你仔细的读完题后
不一定要急着写,除非说你有很大的把握
通常可以先自己构造一些测试数据来帮助自己完善思路
而不是写着写着发现有问题没有解决又要去修bug
举个栗子:
题目描述
为了补偿被WA,TLE,REG……等折磨得痛苦不堪的同学们,lx决定出一道大水题。
读入若干字符,统计这些字符里含有的单词数。这里对单词的定义比较宽松,它是其中不包含空格、制表符(\t)或换行符(\n)的字符序列。
输入
若干字符,可能包含空格、制表符或换行符。
输出
一行。一个整数,表示单词数。
输入样例
This is a test.
输出样例
4
读完这个题后,应该明确的是单词在这个题中的定义:
不包含空格、制表符(\t)或换行符(\n)的字符序列
也就是说这个单词可能看起来非常的奇怪:
"%&(*@#%#$is_a_legal_word
那么两个单词之间的字符只能是
空格,制表符或换行符
那么可能会出现什么情况呢?
word1(多个空格/空格+制表符/多个制表符/...)word2
有了这些之后
在想这个题的时候是不是就能更清楚一些了呢?
最后,讲一下怎么将数据复制到运行框中。
![a04e24242b7748969e35d02f89151886.png](https://img-blog.csdnimg.cn/img_convert/a04e24242b7748969e35d02f89151886.png)
右键单击运行框的 顶部 编辑 粘贴
有时候你可能会看到
你的输出出现在你输入的数的中间
但这是正常的
在评测的时候我们只会检查你的输出
有兴趣的同学也可以去学习一下文件操作。
![a1700d987dc9ab0f0779fbfa9d6b807a.png](https://img-blog.csdnimg.cn/img_convert/a1700d987dc9ab0f0779fbfa9d6b807a.png)
排版 | 朴恩广
内容 | 陈天宇
肖思炀