随笔分类 -  Unclassified

摘要:位运算的操作数必须是整数,当二元位运算的操作数是不同类型的整数时,也会自动进行类型转换。n&(n-1)作用:将n的二进制表示中的最低位为1的改为0,先看一个简单的例子: n = 10100(二进制),则(n-1) = 10011 ==》n&(n-1) = 10000 可以看到原本最低位为1的那位变为0。 弄明白了n&(n-1)的作用,那它有哪些应用? 1. 求某一个数的二进制表示中1的个数 while (n >0 ) { count ++; n &= (n-1); }2. 判断一个数是否是2的方幂 n > 0 && ((n & 阅读全文
posted @ 2012-12-25 09:30 加拿大小哥哥
摘要:1 //输出10 和 9 2 #include <iostream> 3 #include <cstring> 4 using namespace std; 5 6 int main() 7 { 8 char p[] = "12中国abc"; 9 int ans = sizeof(p);10 int len = strlen(p);11 cout<<ans<<" "<<len<<endl;12 while(1);13 return 0;14 }15 阅读全文
posted @ 2012-12-22 16:23 加拿大小哥哥
摘要:#include <iostream>using namespace std;int f(int n){ char x[n]; x[0] = 'a'; //测验了下长度为sizeof(类型)*n cout<<"数组长度:"<<sizeof(x)<<endl; return x[0];}int main(){ int a; cin>>a; cout<<f(a)<<endl; while(1); return 0;}//dev编译运行都没问题,不禁让我想起了是否可在main外ne 阅读全文
posted @ 2012-12-15 22:51 加拿大小哥哥
摘要:1 //当天的前一年离1990年有几天,再加上当年的天数,余数 1 2 3则打鱼,否则晒网 2 #include <iostream> 3 #include <cstring> 4 using namespace std; 5 6 const int a[2][13] = {0,31,28,31,30,31,30,31,31,30,31,30,31, 7 0,31,29,31,30,31,30,31,31,30,31,30,31} ; 8 9 typedef struct Node10 {11 int year,month,day;12 }Node;13 14 int 阅读全文
posted @ 2012-12-15 13:29 加拿大小哥哥
摘要:1 #include 2 #include 3 using namespace std; 4 5 int main() 6 { 7 int i,j,k,T; 8 cin>>T; 9 while(T--)10 {11 int n = 0;12 cin>>n;13 int *a = new int[n*n];14 // memset(a,0,sizeof(a));用这个初始化会错误 15 for(i=0;i=n)//移出格就到第一列25 x = 0;... 阅读全文
posted @ 2012-12-08 22:35 加拿大小哥哥
摘要:1 for(i=0;i<n;++i)2 for(j=0;j<n;++j)3 {4 double sum=0;5 for(k=0;k<n;++k)6 sum+=a[i][k]*b[k][j];7 c[i][j]+=sum;8 }1 for(i=0;i<n;++i)2 for(k=0;k<n;++k)3 {4 r=a[i][k];5 for(j=0;j<n;++j)6 c[i][j]+=r*b[k][j];7 } 细看一... 阅读全文
posted @ 2012-11-17 16:53 加拿大小哥哥
摘要:这是一个大一的学生问我的问题,当时竟然搞糊涂了!!! 1 #include <stdio.h> 2 int main() 3 { 4 char str[ ][10]={"China","Beijing"}; 5 char *p; 6 p = str[0]; 7 printf("%s\n",p+10); 8 while(1); 9 return 0;10 }11 /*12 p输出china13 p+1输出hina14 …………15 P+4输出a;16 从P+5到p+9,无输出17 p+10输出beijing18 */ 19 阅读全文
posted @ 2012-09-23 13:22 加拿大小哥哥
摘要:引子问题:在一把象棋的残局中,象棋双方的将帅不可以相见,即不可以在中间没有其他棋子的情况下在同一列出现。而将、帅各被限制在己方的3*3的格子中运动。相信大家都非常熟悉象棋的玩法吧,这里就不详细说明游戏规则了。 用A、B代表将和帅,请写出一个程序,输出A、B所有合法的位置。要求在代码中只能用一个变量。中国象棋将帅问题:分析与解法:这个问题的解法并不复杂。遍历A的所有位置遍历B的所有位置如果A的位置和B的位置在同一列输出结果否则 继续寻找地图可以用0-8表示A或B可能的9个位置0------1------23------4------56------7------8关键问题在于只使用一个... 阅读全文
posted @ 2012-09-19 13:12 加拿大小哥哥
摘要:1、数的进制默认进制:默认状态下,数据按十进制输入输出。如果要求按八进制或十六进制输入输出,在cin或cout中必须指明相应的数据形式,oct为八进制,hex为十六进制,dec为十进制。 1 int i, j, k, l; 2 cout<<”Input i(oct), j(hex), k(hex), l(dec):”<<endl; 3 cin>>oct>>i; //输入为八进制数 4 cin>>hex>>j; //输入为十六进制数 5 cin>>k; //输入仍为十六进制数 6 cin>>dec&g 阅读全文
posted @ 2012-09-18 22:14 加拿大小哥哥
摘要:1 #include<iostream.h> 2 int Div(int x,int y); 3 int main() 4 { try 5 { cout<<"5/2="<<Div(5,2)<<endl; 6 cout<<"8/0="<<Div(8,0)<<endl; 7 cout<<"7/1="<<Div(7,1)<<endl; 8 } 9 catch(int)10 { cout<<"excep 阅读全文
posted @ 2012-09-18 13:59 加拿大小哥哥
摘要:求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。 例如:2+22+222+2222+22222(n=5) 1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 int i,j,k; 7 int a,n; 8 cin>>a>>n; 9 int temp = 0,sum = 0;10 for(i=1;i<=n;i++)11 {12 temp += a;13 sum += temp;14 ... 阅读全文
posted @ 2012-09-16 10:49 加拿大小哥哥
摘要:赋值了吗?Time Limit: 1000MS Memory Limit: 65535KBSubmissions: 161 Accepted: 43Description现在很多的程序设计语言中,赋值已经是一个不容忽视的问题,如果一个变量在未进行赋值的情况下使用,那么这个值将是不定的(哈哈,我已经被遭了好多次了)!而我写的程序用到的变量实在是太多了,又不想自己统计哪些变量是已经赋值了的,现在就请你帮我统计一下哪些变量已经赋值了。为了简化问题,我们假设最开始仅有变量a中有确定的值。变量为单个小写字母,每行恰好有三个字符,中间一个是赋值运算符'='。请编程求出含N行的程序段运行以后 阅读全文
posted @ 2012-09-16 10:26 加拿大小哥哥
摘要:1.如果不加cin.ignore();这行,s2将不会被输入。原因是缓冲区每次结尾的时候还有/n,而getline()一开始读的时候认为已经结束,就返回空行。 1 #include <iostream> 2 #include <string> 3 using namespace std; 4 int main( ) 5 { 6 string s; 7 cin >> s; 8 string s2; 9 //cin.ignore();10 getline(cin, s2);11 cout << "s2:" << s2 阅读全文
posted @ 2012-09-15 00:26 加拿大小哥哥
摘要://c++中int转为string #include <iostream>#include <string>using namespace std;int main(){ int i,j,k; string s(""); char *temp = new char; sprintf(temp,"%d",1234); s += string(temp); cout<<s<<endl; cout<<s[0]<<" "<<s[1]<<" 阅读全文
posted @ 2012-09-04 22:52 加拿大小哥哥
摘要:1 //作用域与可见性 2 #include<iostream> 3 using namespace std; 4 int i; //文件作用域 5 int main() 6 { i=5; 7 { int i; //块作用域 8 i=7; 9 cout<<"i="<<i<<endl; //输出710 }11 cout<<"i="<<i; //输出512 // while(1);13 return 0;14 }15 16 17 18 //对象的生存期19 #include<ios 阅读全文
posted @ 2012-08-30 18:41 加拿大小哥哥
摘要:1 类是一种用户自定义类型,声明形式: 2 class 类名称 3 { 4 public: 5 公有成员(外部接口) 6 private: 7 私有成员 8 protected: 9 保护型成员 10 } 11 12 13 钟表类: 14 class Clock 15 { 16 public: void SetTime(int NewH,int NewM,int NewS); 17 ... 阅读全文
posted @ 2012-08-30 16:42 加拿大小哥哥
摘要:1 C++允许功能相近的函数在相同的作用域内以相同函数名声明,从而形成重载。方便使用,便于记忆。 2 例: 3 形参类型不同 4 int add(int x, int y); 5 float add(float x, float y); 6 形参个数不同 7 int add(int x, int ... 阅读全文
posted @ 2012-08-30 16:13 加拿大小哥哥
摘要:1 /* 2 寻找并输出11~999之间的数m,它满足m、m2和m3均为回文数。 3 回文:各位数字左右对称的整数。 例如:11满足上述条件 112=121,113=1331。 4 分析: 5 10取余的方法,从最低位开始,依次取出该数的各位数字。按反序重新构成新的数,比较与原数是否相等,若相等,则原数为回文。 6 */ 7 //简要代码: 8 //为加快速度,可以把11到999方和立方先存储起来 ,然后存储各个数是否满足,即打表 9 for(i=11;i<1000;i++)10 if(is_hui(i)&&is_hui(i*i)&&is_hui(i*i* 阅读全文
posted @ 2012-08-30 15:42 加拿大小哥哥
摘要:正多边形的滚动与旋轮线下方的面积想像一个圆盘在地面上滚动一周,那么圆周上一点所形成的轨迹就叫做旋轮线(或者摆线)。旋轮线下方的面积是多少,这是一个非常有趣的问题。据说, Galileo 曾经用一种非常流氓的方法,推测出了旋轮线下方的面积。他在金属板上切出一块圆片,再在金属板边缘剪下这个圆形所对应的旋轮线,把它们拿到秤上一称,发现后者的重量正好是前者的三倍。于是,他推测,半径为 r 的滚轮所产生的旋轮线,其下方的面积就是 3πr2。不过,今天我第一次知道,这个结论对于正多边形是同样成立的。考虑一个正三角形在平地上滚动一周,则原来的顶点 A1 将会先后转到 A2 和 A3 的位置。容易看出, A1 阅读全文
posted @ 2012-08-22 20:00 加拿大小哥哥
摘要:1 //最优策略应该是2,0,3,1,现在 只会求最大效益 2 #include <iostream> 3 #include <cstring> 4 #include <cstdlib> 5 using namespace std; 6 int ans[5];//保存最优策略 ,一维向量 7 int g[5][8] = {//投资0到6w时,各个工厂获得的效益 8 {0,20,50,65,80,85,85}, 9 {0,20,40,50,55,60,65},10 {0,25,60,85,10... 阅读全文
posted @ 2012-08-22 17:41 加拿大小哥哥