标签 知识 下的文章
C 判断一个数是否是完全平方数
若一个整数a为另一个整数b的平方,则称a为完全平方数,现在输入n个正整数,判断他们中有几个是完全平方数
这道底在小数据的时候可能比较简单,但遇到大数据的时候,就显得心有余而力不足了。
首先我们需要用long long
,这种时候,我第一是想到用减法,开平方,用a-(int)a的方法,结果发现数字小于一定程度的时候,会近似的等于0,这个时候系统也通过了,默认其等于0,就算改成0.0也无法改变这个事实。
相等当然也是行不通的,理论上而言,永远都不能相信浮点数,浮点数不应该作为条件判断。
于是最终我们想到了用转换后的数字乘法,如果相等就是OK哒,如果不等的话证明开平方是小数。
这里可以用(long long)转换,也可以直接声明一个long long的变量,来存平方后的数,会自动转换为long long的值。
C 今天我们来聊聊栈与括号配对
很巧的是,之前这两者我都有说过,虽然当时没有深刻的认识,只是很新鲜的看到了之后写了两篇日志罢了,没想到终有一天,我还是和他们俩见面了,而且是合体版。
栈:关于栈的进出
括号匹配:C 一个程序查找基本语法错误
当然,这两篇和数据结构完全没有关系,大致上是科普中的科普了。
我们来看看这次的题目:
表达式中可能出现花括号{}、方括号[]、园括号(),从键盘输入一个表达式,检查左右括号配对情况,并输出结果。
例子:{[(…)(…)]…(…)}配对
而{[(…)(…)]…[(]…)}不配对
C 扑克牌配对说链表
以后每个数据结构作业都会那么小小的总结一下,数据结构的作业做了之后收获还是颇多的(废话当然比电子电路、大学物理收获多咯)
题目:
采用线性链表方式编程序模拟扑克牌配对游戏。通过键盘输入点数模拟抓牌,拿到新牌时,看手上是不是有同点数的牌,有的话,两者配对并抽掉手上的牌,没有的话,将牌插入手上的牌中,手上的牌保持按点数从小到大顺序排列。
C++ string型初识与getline
string比C语言好用多了。只要引入一个#include <string>
以及using std::string;
就OK了,其他部分真是像极了其他的语言,一些用法可以看注释,getline就和gets差不多一个意思,但没有数组自然也没什么风险吧。大致是酱紫的。
#include <iostream>
#include <string>
using std::string;
using std::cin;
using std::cout;
using std::endl;
int main()
{
string line;
string s1 = "Hello", s2 = " World";
string s3 = s1 + s2;
cout << s3 << endl;
while (getline(cin, line))
/* 如果不为空 */
//if (!line.empty())
/* 输出大于10字符的行 */
if (line.size() > 10)
cout << line << endl;
/*
while (cin >> word)
cout << word << endl;
*/
return 0;
}
C++ 命名空间的using声明
C++中,老师上课说的一直有一句:using namespace std;
,不过他是什么意思,其实也就是一个命名空间的概念,概念这东西不多说(Primer 74页)
我们为什么要使用命名空间,不使用会有什么麻烦。
这里我们看一段代码:
#include <iostream>
int main()
{
std::cout << "Enter two numbers:" << std::endl;
int v1 = 0, v2 = 0;
std::cin >> v1 >> v2;
std::cout << "The sum of " << v1 << " and " << v2 << " is " << v1 + v2 << std::endl;
return 0;
}
C++ auto decltype 初始化变量类型
C++中的两种有趣的类型,让编译器自己去分析我们所需要的数据类型,这两者有有些区别:
auto 定义的变量必须具有初值
// 由val1和val2相加的结果可以推断出item的类型
auto item = val1 + val2; // 初始化为val1和val2相加的结果
但是,注意以下两条:
auto i = 0, *p = &i; // 正确:i是整数,p是整型指针
auto sz = 0, pi = 3.14; // 错误,sz和pi的类型不一致
具体的,Primer61页之后有,稍微看下就好了,关于类型都是个麻烦的东西。
git push本地代码到github出错
用谷歌反倒没找到能看懂的……转自:http://www.douban.com/note/332510501/
刚创建的github版本库,在push代码时出错:
$ git push -u origin master
To [email protected]:******/Demo.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:******/Demo.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
网上搜索了下,是因为远程repository和我本地的repository冲突导致的,而我在创建版本库后,在github的版本库页面点击了创建README.md文件的按钮创建了说明文档,但是却没有pull到本地。这样就产生了版本冲突的问题。
C 清空键盘缓冲区若干方法
写这次的数据结构的作业的时候对于缓冲区问题深表蛋疼,getchar()深表拙计,于是搜了一下……
以下文字来自:http://www.ludou.org/c-clear-buffer-area.html
清空键盘缓冲区很多种方法,如用fflush(stdin); rewind(stdin);等,但是在linux这些都不起作用,还得我今天试了半天都没成功,上网搜了一下发现setbuf(stdin, NULL);就能直接清空键盘缓冲区了。
以下几个实例:
Sample one
#include <stdio.h>
int main()
{
char ch1;
char ch2;
ch1 = getchar();
ch2 = getchar();
printf("%d %d", ch1, ch2);
return 0;
}
打造属于自己的MVC框架
转自:http://www.cnblogs.com/kaixing/archive/2012/03/05/2380615.html
本篇先介绍一下php的MVC实现原理,我们框架的MVC部分也是基于此原理实现的,但是今天的代码并不是框架内的代码,仅仅为说明原理。