做题时的一些零散知识点

1、
char s2[50];
scanf("%[^\n]", s2);  //以换行符作为字符串输入的结束


2、
float f = 0.6;
printf("%.0f", f);   //会自动四舍五入为1 


3、visual studio 用//同时多行注释
完成注释:先ctrl+k,后ctrl+c
取消注释:先ctrl+k, 后ctrl+u 


3、scanf("%d\n", &a);
在scanf中 “\n” 不是表示接受一个回车符,而是表示忽略所有的空白字符(包括回车,空格,tab )。所以想要结束输入,输入任意一个非空白字符即可,但是该字符仍然会留在缓冲区中。


4、浮点错误
浮点错误: 您的程序运行时发生浮点错误,比如遇到了除以 0 的情况
所以发生浮点错误应该考虑程序中:
是否可能出现了一个数除以0的情况
是否可能出现了一个数取余0的情况
是否发生了数据溢出而导致的除以0或者取余0的情况


5、求一个连续序列的最大长度(Day 10: Binary Numbers,hackerrank)
求连续1的最大长度
int t = 0, s = 0;
        while(n){
            int rem;
            rem = n % 2;
            n /= 2;
            if(rem == 1){
                    s++;
                    if(s >= t)
                            t = s;
            }
            else
                    s = 0;     
        }
        printf("%d", t);
s用来计算,t用来记录


6、scanf
char c;
scanf("%c", &c); 此时 空格 和 转义字符(比如'\n') 都作为有效字符,都会被c接收
char c[10];
scanf("%s", &c); 遇见 空格、回车、跳格;宽度;非法输入;结束接收数据


7、输出符号问题
double f = -0;
double d = -0.0;
printf("%f\n", f); 
printf("%f\n", d);
第一个没有负号,第二个有负号
第一个是IEEE754标准0特殊表示,第二个是规范化下的近似0表示




8、new
int *p = new int[10];为具有10个数组元素的整型数组分配内存空间,并将首地址赋给p;
int *p = new int(10);动态分配一个int型元素大小的空间,并将10作为初值赋值给它;


9、树中结点数等于所有结点度数的和加1.


10、#include <string>
stoi()函数能将字符转化为整数。


11、runtime_error异常抛出


12、#include <stack>
empty() 堆栈为空则返回真
pop() 移除栈顶元素(不会返回栈顶元素的值)
push() 在栈顶增加元素
size() 返回栈中元素数目
top() 返回栈顶元素


13、#include <queue>
q.empty()队列为空返回真
q.size()访问队列q中的元素个数
q.push(a)会将一个元素a置入队列q中。
q.front()会返回队列q内的第一个元素(也就是第一个被置入的元素)
q.back()会返回队列q中最后一个元素(也就是最后被插入的元素)
q.pop()会从队列q中移除第一个元素(不会返回这个元素)


14、无符号数和有符号数
int是4个字节,即32位,最大能表示的数是4294967295(2^32 - 1)
int n = 4294967295;
printf("%u", n); //输出4294967295  无符号表示范围0 ~ 2^32 - 1
printf("%d", n); //输出-1  有符号表示范围-2^31 ~ 2^31 - 1


4294967295二进制表示为32个1,无符号数表示4294967295,有符号数通过补码转化为-1;也就是说 无符号数表示 的 最大数 在 有符号表示 中是 -1 。


而如果n = 4294967296,则输出0;因为4294967296二进制表示是1加上32个0,而int只有32位,也就是说第一个1被截断,只剩32个0,所以输出0;


可以用这个特点来判断一个编译器int,long等的字节(最大能表示的数是2^8 - 1, 2^31 - 1 ,还是2^63 - 1)


15、float 1e-6  近似0 double 1e-15 近似0


16、debug时先考虑输入数值的范围,分类讨论,考虑极端情况,再去考虑算法实现的细节问题


17、注意一次判断多个输入数据时,累加累乘器要清零,开辟的空间要释放

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值