渣渣的算法学习笔记

1、PI的值可以由如下方式得到:

const double pi = acos(-1.0);

2、输出时在数字前面补零的方法

printf("%03d\n", m);

3、

printf("%.1f\n", 8/5); //输出的值是0.0

原因:printf函数不会进行任何类型转换,它只是从内存中读出你所提供的元素的值(按照%d,%f等控制字符提示的格式)。C语言设计中,int类型一般是32bit或者16bit,而float一般是64bit,并且有可能使用科学计数保存。8/5=1 在内存中为 0000,0000,0000,0001。而且因为在静态区的原因,这段内存前后默认也是0,使用%f来读,会读64位,而且会使用科学计数法 0*2的1次方 所以结果为0。

4、

printf("%d\n", 8.0/5.0);//输出的值是-1717986918

原因:result为浮点数 输出整形截取以double型保存的数据的后四个字节。

5、尽量缩短变量的定义范围。

6、要在输入里面得到min,max的话,可以先读取第一个整数x,然后让max=min=x。

7、Linux中的路径分隔符是正斜线“/”, Windows中的路径分隔符是反斜线“\”。

8、当前目录“.”,父目录“…”

9、可以使用重定向的技巧将输入文件塞到程序的标准输入中,然后再将输出保存在文件中。
windows下写法

abc < abc.in > abc.out

Linux下写法

./abc < abc.in > abc.out

10、在算法竞赛中,常常难以精确计算出需要的数组大小,数组一般会声明的稍大一些。

11、一般要求输出的行首行尾无空格,相邻两个数据间用单个空格隔开。需要将数据分两条语句输出。

for(int i = n - 1; i >= 1; i--) 
	printf("%d ", a[i]);
printf("%d\n", a[0]);

或者

int first = 1;
for(int i = 1; i <= n; i++)
	if(a[i]) {
		 if(first) first = 0;
		 else printf("\n");
		 printf("%d", i);
	}

12、比较大的数组应尽量声明在main函数之外,否则程序可能无法运行,因为如果局部变量过大,超过了允许的范围,就会造成栈溢出。

13、要从数组a复制k个元素到数组b,可以这样做:

memcpy(b, a, sizeof(int)*k);
memcpy(b, a, sizeof(double)*k);
memcpy(b, a, sizeof(a));

memcpy函数包含在头文件<string.h>中。

14、把数组a清零

memset(a, 0, sizeof(a));

15、strchr的作用是在一个字符串中查找单个字符

strchr(s, buf[i]) == NULL;

16、isalpha来判断字符为字母,isdigit检查所传的字符是否是十进制数字字符,isprint检查所传的字符是否是可打印的

17、toupper、tolower转换大小写。

18、求一个数字的个位到最高位

while(x > 0) {
	y = x % 10;
	x /= 10;
}

19、hypot(x, y)计算直角三角形的斜边长。

20、为了使用方便,可以用如下方式定义新的类型名:

typedef struct {域定义;} 类型名;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值