青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天之道

享受編程的樂趣。
posts - 118, comments - 7, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

構造函數是什么?看下面幾行代碼:
class GradeBook
{
  public:
      void setCourseName(string name)
      {
              courseName=name;
       }
       string getCourseName()
       {
            return courseName;
       }
       GradeBook myGradeBook;
       cout<<"Initial course name is: "<<myGradeBook.getCourseName()<<endl;
}
這幾行代碼中,定義一個類GradeBook,成員訪問說明符public表示在這個符號之下的函數,函數都是公共可相互被調用的。創建GradeBook類的對象時(對象可以這樣創建:GradeBook myGradeBook; 這里myGradeBook就是類的對象 ),該對象的數據成員courseName被初始化為默認的空串。事實上,我們可用定義一個構造函數,用于類對象創建時的初始化。
構造函數是一種特殊的成員函數,定義時必須與類同名。它和其他成員函數的一個重大差別是構造函數不能返回值,通常構造函數聲明為public。

請看一個實例:
 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 
 5 class GradeBook  //定義類
 6 {
 7 public:
 8     GradeBook(string name)//定義了GradeBook類的一個構造函數,有一個string形參name,與下面的形參name名字相同,但互不干擾
 9     {
10         setCourseName(name);//調用函數賦值,構造函數的好處是:只是簡單調用,要改變時只需對被調用函數進行修改
11     }
12 
13     void setCourseName(string name)//這個函數的形參為name
14     {
15         courseName=name;
16     }
17     string getCourseName()
18     {
19         return courseName;
20     }
21 
22     void displayMessage()
23     {
24         cout<<"Welcome to the grade book for\n"<<getCourseName() //下面的main()函數中,沒有調用getCourseName()函數
25             <<"!"<<endl;
26     }
27 private:    // 私有的,在這個成員訪問說明符之后聲明的變量或者函數,只可以被聲明它們的類的成員函數所訪問
28     string courseName;
29 };
30 
31 int main()
32 {
33     GradeBook gradeBook1("CS101 Introduction to C++ Programming"); //創建類的對象,并把實參賦予形參name
34     GradeBook gradeBook2("CS102 Data Structures in C++");
35 
36     cout<<"gradeBook1 created for course: "<<gradeBook1.getCourseName()   //調用類的成員函數getCourseName(),初始化類的對象
37         <<"\ngradeBook2 created for course: "<<gradeBook2.getCourseName()<<endl;
38 }
39 
40 


PS:1)為類提供默認構造函數的兩種方法:編譯器隱式地在沒有定義構造函數的類中創建一個默認的構造函數,這樣的默認構造函數不初始化類的數據成員,而是調用其他類的對象的每個數據成員的默認構造函數。沒有初始化的變量通常包含“垃圾”值。
  程序員顯式定義一個不接受實參的構造函數。

2)除非沒有必要初始化類的數據成員(幾乎不可能),否則請提供構造函數,這樣可以保證當類的每一個新對象被創建時,類的數據成員都用有意義的值進行了初始化。






          

posted @ 2011-09-22 00:01 hoshelly 閱讀(2242) | 評論 (0)編輯 收藏

先給出一個程序,C++寫成。
#include<iostream>
int main()
{
    
int number1;
    
int number2;
    
int sum;
    std::cout
<<"Enter first integer:\n";
    std::cin
>>number1;
    std::cout
<<"Enter second integer:\n";
    std::cin
>>number2;
    sum
=number1+number2;
    std::cout
<<"Sum is"<<sum<<std::endl;//輸出變量sum;
    
return 0;
}


std::cout是標準輸出流對象,通常“連接”到屏幕;雙尖括號<<運算符稱為流插入運算符,顯示輸入的值;
std::cin是輸入流對象,流提取運算符>>是來獲取鍵盤輸入的值。
std::endl輸出一個換行符,然后“刷新輸出緩沖”。簡單來說,在一些系統中,輸出在機器中積存,直到積累到“值得”輸出到屏幕上為止;而std::endl 則強制顯示所有積存的輸出。

運算符的優先級規則。
1)圓括號具有最高的優先級;
2)接下來是乘法、除法和求模運算(%)。
3)最后是加法和減法運算。加法和減法具有相同的運算級。


聲明:using std::cout;是一個using 聲明,它可以消除重復使用std::前綴的需要。
更多程序員用using namespace std;使程序可以使用程序包含的任何標準的C++頭文件中的所有名字(如std)。


例子:編寫一個完整的程序,計算并顯示三個整數的乘積。

#include<iostream>
using namespace std;
int main()
{
 int x;
 int y;
 int z;
 int result;
 cout<<"input three numbers:\n";
 cin>>x>>y>>z;
 result=x*y*z;
 cout<<"The product is "<<result<<endl;
 return 0;
}

 


posted @ 2011-09-19 23:22 hoshelly 閱讀(224) | 評論 (0)編輯 收藏

要求:編寫一個遞歸函數,將一個整數n轉換為字符串,例如輸入483,應輸出字符串“483”。
設計思想:設置一個字符型數組str,用于存放轉換后的字符串,因為遞歸函數中要反復使用它,所以將其設置為全局數組變量。要實現整數n轉換成字符串的遞歸轉換,首先要將n的個位數n%10轉換為字符,插入到str字符串的最前面,然后將除個位后的高位部分n/10按照相同的方式來轉換,直到要轉換的數為0結束。
#include<stdio.h>
#include
<string.h>
void IntToStr(int n);
char str[80]={0};
void main()
{
    
int num;
    printf(
"input an integer number:");
    scanf(
"%d",&num);
    IntToStr(num);
    printf(
"The string is:%s\n",str);
}

void IntToStr(int n)
{
    
int i;
    
if(n==0)//整數為0時,遞歸結束
        return;
    
for(i=strlen(str)-1;i>=0;i--//將字符串整個往后移一個字符
        str[i+1]=str[i];
    str[
0]=n%10+0x30;  //將該數的個位數轉換成字符放在字符數組的第一個元素的位置,+0x30表示十六進制的0,其實可以不加

    IntToStr(n
/10);//將該數的商,即除個位外的其他數通過遞歸轉換
}

//遞歸過程:例如輸入n=148,那么第一次遞歸時,str[0]存放的數是8,n/10=14,得到第二次遞歸的數是14;
//8原先存儲在str[0],但第二次遞歸向后移動一個字符,變成存在str[1]內,而4存在str[0]內;
//第三次遞歸時,同理可知8放在str[2],4放在str[1],而1放在str[0],這樣就將148轉換為字符串。


posted @ 2011-09-18 21:03 hoshelly 閱讀(395) | 評論 (0)編輯 收藏

注:斐波納契數列的第一項和第二項的值都為1,以后各項的值為其前兩項值之和。所以要計算第n項的值F(n),可以列出遞歸式F(n)=F(n-1)+F(n-2),當n=1或n=2時,其值為1;

用C語言代碼表示如下:


#include<stdio.h>
long F(int n);
void main()
{
    
int i;
    
for(i=1;i<=40;i++)
    {
        printf(
"F(%2d)=%-9ld",i,F(i));
        
if(i%4==0)
        printf(
"\n");
    }
}

long F(int n)//求第n項的值
{
    
if(n<=2)
        
return (1);
    
return(F(n-1)+F(n-2));
}



posted @ 2011-09-18 15:27 hoshelly 閱讀(1096) | 評論 (0)編輯 收藏

 冒泡排序的基本概念:
依次比較相鄰的兩個數,將小數放在前面,大數放在后面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放后。然后比較第2個數和第3個數,將小數放前,大數放后,如此繼續,直至比較最后兩個數,將小數放前,大數放后。至此第一趟結束,將最大的數放到了最后。在第二趟:仍從第一對數開始比較(因為可能由于第2個數和第3個數的交換,使得第1個數不再小于第2個數),將小數放前,大數放后,一直比較到倒數第二個數(倒數第一的位置上已經是最大的),第二趟結束,在倒數第二的位置上得到一個新的最大數(其實在整個數列中是第二大的數)。如此下去,重復以上過程,直至最終完成排序。需要用二重循環排序。
Example:
#include<stdio.h>
int main() 

    
int i,j,temp,tag; 
    
int a[11];  //數組第0位空出
    
for(i=1;i<=10;i++
    scanf (
"%d,",&a[i]); 
    
for(j=1;j<=10;j++
    

       tag
=1;
       
for (i=1;i<=10-j;i++
       
{
        
if (a[i]>a[i+1]) 
       

           temp
=a[i]; 
           a[i]
=a[i+1]; 
           a[i
+1]=temp;
           tag
=0;
       }
 
       }


       
if(1==tag)
       
{
         
break;
       }

    }

        
for(i=0;i<10;i++)
            printf(
"%5d",a[i]);
            
return 0;
}




以下是選擇排序法:

每次外循環先將定位元素的小標i值記錄到K,認為a[k]是最小值,第一輪比較時,若遇到比a[k]更小的數,則交換兩數的下標,由下面的if語句進行交換處理。
這樣第一輪就選出了最小的數,第二輪,同理選出次小的數排在最小的數后面。如果是輸入10個數,那么進行9輪排序后就可完成整個排序過程。



#include<stdio.h>//選擇排序法
void main()
{
    
int i,j,t,a[10],k;
    printf(
"input 10 numbers:\n");
    
for(i=0;i<10;i++)
    scanf(
"%d",&a[i]);

    
for(i=0;i<9;i++)//這里也要注意i=0;i<9;
    {
        k
=i;
        
for(j=i+1;j<10;j++)
            
if(a[k]>a[j])
                k
=j;

            
if(k!=i)//如果k不等于i,改變了,則交換兩個數的位置
            {
                t
=a[i];
                a[i]
=a[k];
                a[k]
=t;
            }
    }
    
for(i=0;i<10;i++)//最后輸出已經排好序的數
        printf("%5d",a[i]);
}




PS:大一剛開始接觸這兩個排序算法時,感覺有點亂,現在回過頭來仔細看,思路清晰了不少。時刻回顧過去的知識,進行整理,再認識,很重要呀。:-D












posted @ 2011-09-17 16:53 hoshelly 閱讀(370) | 評論 (0)編輯 收藏

輾轉相除法,又名歐幾里得算法,是求最大公約數的算法。

原理及其詳細證明

  設兩數為a、b(b<a),用gcd(a,b)表示a,b的最大公約數,r=a mod b 為a除以b以后的余數,輾轉相除法即是要證明gcd(a,b)=gcd(b,r)。
  第一步:令c=gcd(a,b),則設a=mc,b=nc
  第二步:根據前提可知r =a-kb=mc-knc=(m-kn)c
  第三步:根據第二步結果可知c也是r的因數
  第四步:可以斷定m-kn與n互素【否則,可設m-kn=xd,n=yd,(d>1),則m=kn+xd=kyd+xd=(ky+x)d,則a=mc=(ky+x)dc,b=nc=ycd,故a與b最大公約數成為cd,而非c】
  從而可知gcd(b,r)=c,繼而gcd(a,b)=gcd(b,r)。
  證畢。

用C表示則:

     int gcd(int a,int b)
  {
  int temp;
  if(a<b)/*交換兩個數,使大數放在a上*/
  {
  temp=a;
  a=b;
  b=temp;
  }
  while(b!=0)/*利用輾除法,直到b為0為止*/
  {
  temp=a%b;
  a=b;
  b=temp;
  }
  return a;
  }




posted @ 2011-09-17 02:00 hoshelly 閱讀(2435) | 評論 (0)編輯 收藏

算法分析:因為對于a與b兩個數,當a>b時,如果a中含有與b相同的公約數,則a-b也含有與b相同的公約數,反復循環,直到a和b相等為止,這時a或b就是它們的最大公約數。

 1 #include<stdio.h>
 2 int Maxcommonfactor(int a,int b);
 3 void main()
 4 {
 5     int a,b,c;
 6     printf("input two integer number:");
 7     scanf("%d%d",&a,&b);
 8     c=Maxcommonfactor(a,b);
 9     if(c!=-1)
10         printf("The biggest common factor of %d and %d is %d\n",a,b,c);
11     else
12         printf("The biggest common factor of %d and %d isn't exist\n",a,b);
13 }
14 int Maxcommonfactor(int a,int b)
15 {
16     if(a<=0||b<=0)
17         return(-1);
18     while(a!=b)
19     {
20         if(a>b)
21             a=a-b;
22         else if(b>a)
23             b=b-a;
24     }
25     return(a);//返回的值為最大公約數
26 }
27 
28 


posted @ 2011-09-16 18:35 hoshelly 閱讀(1106) | 評論 (0)編輯 收藏

 

 1 #include<stdio.h>
 2 #include<math.h>
 3 int pdss(int number);//定義一個函數,判斷一個數是 否為素數
 4 int main()
 5 {
 6     int n;
 7     printf("input the integer:\n");
 8        scanf("%d",&n);
 9     if(pdss(n))//如果是1,輸出素數
10        printf("%d 是素數.",n);
11     else
12        printf("%d 不是素數.",n);
13     return 0;
14 }
15 
16 int pdss(int number)
17 {
18     int i;
19     if(number<=1)
20         return 0;
21     for(i=2;i<=sqrt(number);i++)//檢驗一個數為素數時,用其平方根小或等于的數去整除所輸入的數,即可判斷。為什么?
22         if(number%i==0)
23         return 0;
24         else 
25         return 1;
26         return 0;
27 }
28 

 

posted @ 2011-09-16 14:31 hoshelly 閱讀(884) | 評論 (0)編輯 收藏

僅列出標題
共12頁: First 4 5 6 7 8 9 10 11 12 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美三级日本三级少妇99| 亚洲欧美一区二区原创| 亚洲午夜激情在线| aa级大片欧美三级| 一本大道av伊人久久综合| 99re66热这里只有精品3直播| 亚洲欧洲一区二区三区| 99在线|亚洲一区二区| 亚洲欧美另类在线观看| 久久激情五月激情| 免费久久精品视频| 91久久久久久| 夜久久久久久| 欧美一级播放| 久久免费视频在线观看| 欧美11—12娇小xxxx| 欧美日韩一级黄| 国产精品欧美一区二区三区奶水 | 国内精品免费午夜毛片| 亚洲第一网站| 亚洲特级毛片| 久久在线播放| 亚洲另类一区二区| 久久精品国产精品亚洲综合| 欧美日韩国产综合网| 亚洲电影欧美电影有声小说| aa级大片欧美三级| 久久一区二区三区四区| 国产精品久久一级| 亚洲国产午夜| 久久精品亚洲一区| 亚洲精品乱码久久久久久按摩观| 午夜精品久久| 欧美色精品天天在线观看视频| 国产亚洲欧美一区在线观看 | 国产精品在线看| 亚洲人体1000| 久久综合久久88| 亚洲午夜久久久| 免费av成人在线| 久久久xxx| 亚洲激情欧美激情| 亚洲免费网站| 亚洲国产精品第一区二区三区| 亚洲天堂av综合网| 欧美精品日韩三级| 在线看欧美日韩| 久久久国产91| 亚洲欧美bt| 欧美日韩中国免费专区在线看| 在线成人激情黄色| 久久久噜噜噜久久中文字幕色伊伊 | 欧美在线观看一二区| 欧美性一区二区| 夜夜嗨av一区二区三区四区| 亚洲国产高清一区| 男人的天堂亚洲在线| 亚洲福利免费| 欧美成人一区二区三区在线观看| 久久国产主播精品| 国产自产女人91一区在线观看| 欧美在线观看视频一区二区三区| 亚洲午夜伦理| 国产一区999| 久久久久久亚洲精品不卡4k岛国| 亚洲男女自偷自拍| 国产综合精品一区| 欧美.www| 欧美男人的天堂| 亚洲欧美日韩专区| 久久se精品一区二区| 亚洲成色999久久网站| 亚洲国产精品99久久久久久久久| 欧美二区在线看| 一本大道久久a久久精二百| 日韩一级黄色片| 国产精品久久久久久久午夜片 | 亚洲欧美怡红院| 日韩一二三区视频| 国产美女精品人人做人人爽| 久久精品国产亚洲一区二区| 久久亚洲综合色一区二区三区| 亚洲精品国产欧美| 中国女人久久久| 依依成人综合视频| 亚洲精品免费网站| 国产啪精品视频| 亚洲高清一区二| 国产精品久久久久久久久久免费看 | 毛片一区二区三区| 亚洲精品国精品久久99热| 亚洲精品一区二区三区婷婷月| 欧美日韩1区2区3区| 性欧美超级视频| 久久超碰97中文字幕| 亚洲精品一区二区三区婷婷月 | 亚洲高清一二三区| 国产欧美精品一区aⅴ影院| 欧美h视频在线| 欧美午夜不卡| 男女激情视频一区| 国产精品99免费看 | 亚洲在线免费观看| 久久久九九九九| 亚洲一区二区精品视频| 久久亚洲综合| 久久成人18免费网站| 欧美理论视频| 欧美成人网在线| 国产九色精品成人porny| 91久久精品国产91性色| 国产一区二区三区久久| 日韩视频―中文字幕| 亚洲国产一区二区三区青草影视 | 久久中文在线| 国产精品福利片| 亚洲经典三级| 亚洲高清不卡| 欧美一区二视频| 午夜精品电影| 欧美天堂在线观看| 91久久精品国产91久久性色| 在线日韩中文| 久久米奇亚洲| 久久综合亚州| 激情国产一区二区| 欧美一区二区三区免费看| 亚洲影视在线| 欧美日韩国产一中文字不卡| 亚洲国产精品久久久久秋霞蜜臀| 影音先锋亚洲精品| 久久久久久网站| 另类酷文…触手系列精品集v1小说| 国产日韩欧美精品综合| 亚洲在线观看视频网站| 午夜精品福利在线| 国产精品女主播| 在线亚洲一区观看| 午夜亚洲伦理| 国产婷婷色一区二区三区在线| 亚洲影院免费观看| 久久国产精品99精品国产| 国产区日韩欧美| 久久精品欧美日韩精品| 免费不卡视频| 亚洲一区999| 欧美日韩一区三区四区| 亚洲欧洲精品一区二区| 制服丝袜亚洲播放| 欧美日韩国产色站一区二区三区| 亚洲日本欧美| 亚洲一区二区三| 国产精品亚洲综合| 欧美在线1区| 欧美国产日韩在线| 亚洲视频观看| 国产无遮挡一区二区三区毛片日本| 久久精品99国产精品日本| 欧美黄色日本| 亚洲一区二区精品视频| 国产一区美女| 欧美福利视频| 性感少妇一区| 亚洲国产中文字幕在线观看| 亚洲欧美日韩国产中文| 影音国产精品| 国产精品国色综合久久| 久久久成人网| 亚洲视频999| 亚洲成色www8888| 亚洲一区二区黄色| 亚洲高清视频一区| 国产精品久久久久久久9999| 久久久久国色av免费看影院| 亚洲麻豆av| 久久婷婷人人澡人人喊人人爽| 99精品欧美一区二区三区 | 日韩视频一区二区在线观看 | 欧美专区中文字幕| 91久久综合亚洲鲁鲁五月天| 久久久99精品免费观看不卡| 99re66热这里只有精品4| 国产一级精品aaaaa看| 欧美国产日韩一区二区三区| 亚洲欧美视频一区| 亚洲伦理精品| 欧美国产免费| 久久精品夜色噜噜亚洲a∨| 一本久久青青| 精品91久久久久| 国产毛片一区| 国产精品爱啪在线线免费观看| 久久综合电影| 欧美亚洲一区二区三区| 99视频精品全国免费| 欧美激情精品久久久久久大尺度| 久久久精品国产免大香伊| 亚洲一区在线免费| 一区二区三区高清不卡| 亚洲日本电影|