以前寫過一篇關于數組長度的文章,經過某位好友的指點,知道了新的解決方法了
 /**//*******************************************
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
|
人工智能
|
人工魚—計算機動畫的人工生命方法
|
|
涂曉媛
|
|
網絡協議
|
計算機網絡教程
|
|
謝希仁
|
|
|