以前写过一篇关于数组长度的文章,经过某位好友的指点,知道了新的解决方法了
/**//******************************************* T *a[n]和T (*a)[n]的区别 --------- T *a[n] 数组内存放n个T型指针 T (*a)[n] 存放n个T型元素的数组 指针a指向这个数组//a为二级指针
--------------------------------------- T &a[n]与T (&a)[n]的区别 --------- T &a[n] [退化为指针] T (&a)[n] 存放n个T型元素的数组的引用
********************************************/
#include<iostream> using namespace std;
int insertsort(int (&a)[10])//防止了指针退化 { int j, key; for(int i=1; i<sizeof(a)/sizeof(int); i++) { key = a[i]; j = i - 1; while (a[j]>key && j>=0) { a[j+1] = a[j]; j--; } a[j+1] = key; } return (0); } int main() { int a[10] = { 2 , 6 , 9 , 3 , 5 , 8 , 1 , 6 , 3 , 8 } ; insertsort(a); for(int i = 0; i<sizeof(a)/sizeof(int); i++) cout<<a[i]<<'\t'; system("pause"); return(0); }
但必需知道数组的长度,int(&a)[10]中的10必需说明!所以如果未知数组长度,必需先要求得! 再次受高手指点,使用模版解决了n传递的问题
template<class T,int n> T insertsort(T (&a)[n])//防止了指针退化 { T j=T(); T key=T(); for(int i=1; i<n; i++) { key = a[i]; j = i - 1; while (a[j]>key && j>=0) { a[j+1] = a[j]; j--; } a[j+1] = key; } return T(); }
我要继续努力ing,好多知识有待熟悉额
1. 计算机专业硕士及以上学历
2. 至少3年软件开发经验
3. 精通C/C++、Win32、Unix/Linux开发,特别是ACE技能,熟悉Perl、unix shell脚本、Java和Oracle
具有RTP/RTCP、SIP、H323、VoIP和NGN相关经验
熟悉设计模式、OOD和UML
熟悉软件工程,具有CMM/CMMI经验者优先
良好的分析和解决复杂问题的能力,善于沟通,有团队精神
4. 通过英语CET-6
先看看,暑假打算了解一下一些职位的要求,也好对自己的学习有个指导!大家觉得呢?
满足d=gcd(a,b)=ax+by gcd(b,a%b)=bx'+(a%b)y'=bx'+(a-(a/b)b)y'=bx'+ay'-b(a/b)y'=ay'+b(x'-(a/b)y') 只需满足 x=y' y=x'-(a/b)y'
//d=gcd(a,b)=ax+by #include<iostream> using namespace std; int extEuclid(int a,int b,int&x,int&y) { int d,tmp; if(!b){x=1;y=0;return a;} d=extEuclid(b,a%b,x,y); tmp=x; x=y; y=tmp-(a/b)*y; return d; }
int main(){ int a,b,x=0,y=0; cin>>a>>b;//99 78 cout<<extEuclid(a,b,x,y)<<'\t'<<x<<'\t'<<y; //system("pause"); return 0; }
奇怪的是VC6.0编译通过后执行,无论如何x和y的值始终为0。而用dev-c++编译通过后显示结果正常! 如果将输出改为
cout<<extEuclid(a,b,x,y)<<endl; cout<<'\t'<<x<<'\t'<<y;
VC6.0编译后运行也就显示正常了! I DON'T KNOW WHY?
//(a^b)%n #include<iostream> //这里用的是什么方法呢? int modExp(int a,int b,int n) { int t=1,y=a; while(b) { if(b%2==1)t=t*y%n; y=y*y%n; b=b/2; } return t; } //常规 int modexp(int a,int b,int n) { int t=1; for(int i=0;i<b;i++)t=t*a; return t%n; }
int main(void) { int a=0,b=0,n=0; std::cin>>a>>b>>n; std::cout<<modExp(a,b,n)<<std::endl; std::cout<<modexp(a,b,n)<<std::endl; return 0; }
谁能给我讲讲它这个方法是什么数学原理呢? //第二个函数仅为测试正确性设置,不考虑溢出问题
//非递归辗转相除求最大公约数 int gcd(int a,int b) { int r=0; r=a%b; while(r) { a=b; b=r; r=a%b; } return b; } //最小公倍数 int lcm(int a,int b) { return (a*b)?a*b/gcd(a,b):0; }
一些比较好的参考书籍,如果你有更好的资源,请分享一下啊!呵呵
科目
|
国内书籍
|
国外书籍
|
国内作者
|
国外作者
|
高等数学
|
数学分析新讲
|
微积分学教程
|
张筑生
|
菲赫金哥尔茨
|
数学分析
|
|
复旦大学
|
|
高等代数
|
高等代数
|
|
林成森/盛松柏
|
|
代数学
|
|
莫宗坚
|
|
概率论与数理统
|
|
|
|
|
计算方法学
|
计算方法(Computational Methods)
|
|
华中理工大学数学系
|
|
离散数学
|
基础集合论
|
|
北师大
|
|
面向计算机科学的数理逻辑
|
|
陆钟万
|
|
图论及其算法
|
图论及其应用
|
王树禾
|
Bondy &
Murty
|
|
具体数学
|
|
Graham和Knuth
|
初等数论
|
Introduction to Algorithmic Number Theory
|
潘氏兄弟著
|
Bach
|
数论导引
|
华罗庚
|
形式语言与自动机
|
|
|
|
|
汇编语言和微机原理
|
计算机组成与结构
|
|
王爱英
|
|
IBM—PC汇编语言程序设计
|
|
沈美明
|
|
数字逻辑
|
数字逻辑
|
|
刘英娴
|
|
计算机系统结构
|
操作系统的内核设计与实现
|
|
|
|
现代操作系统
|
|
|
|
操
作系统
|
|
张尧学
|
|
Windows
操作系统原理
|
|
张尧学
|
|
编译原理
|
|
编译原理及实践
|
|
Kenneth C.Louden
|
数据库
|
数据仓库
|
Database System Concepts"
|
|
Abraham Silberschatz
|
人工智能
|
人工鱼—计算机动画的人工生命方法
|
|
涂晓媛
|
|
网络协议
|
计算机网络教程
|
|
谢希仁
|
|
|