C code notes

C语言代码随记—基础, 入门

这里会有一两个小基础知识点,代码不多,直接看:

/*
* Function:找出 0~limit 内所有完全平方数 x 
* 该完全平方数 x 满足条件(x + * 100)开方后也是完全平方数,( x + 100 + 168) 后开方也是完全平方数”
*/
void  perfectSquare(long int limit)
{
	int quantity = 0;
	long int i;
	double sqrt268, sqrt100;
	
	for (i = 21; i <= limit; i++)
	{
		sqrt268 = sqrt(i + 268);
		sqrt100 = sqrt(i + 100);
		if (sqrt268-(int)sqrt268 == 0 && sqrt100-(int)sqrt100 == 0)
		{
			quantity++;
			/*
			printf("NO.%d Perfect Square number is %ld\n", quantity, i);
			*/
		}
		else
			continue;
	}
	return ;
}
for (i = 21; i <= limit; i++)
/* i = (21,limit)是因为 0~21 内的数都不满足 上述所需条件↑ */

这里人工计算 i 的起始值在某些情况下是需要的。 比如 这个for循环内部有多个嵌套循环, 到那时候’21’可就不只是一个小的数字而已了。

if (sqrt268-(int)sqrt268 == 0 && sqrt100-(int)sqrt100 == 0)

这里的 (DOUBLE sqrt268 - INT sqrt268 == 0)用于判断 整数 。 这个条件大家应该很少用到。因为我们初学编程默认都是用的 int 类型。这里也顺便提问:

浮点数的大、小、相等 如何比较?

此外, 这里涉及到 显示(强制)转换 的问题。double 强制转换为 int 型,只是省略小数部分,不做 四舍五入 处理!!

最后说一下 double sqrt(double var), linux 下需要在编译的时候在命令行添加 “-lm”。具体可以在终端:

man sqrt
gcc filename.c -o f.out -lm

#如果上面命令是下面这样:
gcc -g filename.c -o f.out -lm;
#那么只有在‘-g’下的 gdb调试模式下才会执行sqrt函数,从而得到期望的结果(如果程序没问题的话)
#在这种情况下执行程序
./f.out
#是没有反应的

-lm选项告诉编译器,我们程序中用到的数学函数要到这个库文件里找。大部分库函数(例如printf)位于libc.so库文件中,使用libc.so中的库函数在编译时不需要加-lc选项,因为这是gcc的默认选项

“纸上得来终觉浅,觉知此事要躬行”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值