1. 程式人生 > >南京信息工程大學實驗報告(二)

南京信息工程大學實驗報告(二)

image 有時 應該 出現 離開 一次 需要 有效 數學公式

四、實驗結論
1.驗證性實驗部分
結合你自己的理解,以你自己的語言,提煉總結你對以下幾點的認識和理解(可以借助圖、表、手繪圖畫等一切你認為可以更清晰表達自己的方式):
① 函數聲明和函數定義各自的作用,二者的區別;
函數聲明:告明用到哪一個函數。
函數定義:函數的類型和具體內容。

② 什麽是形參?什麽是實參?函數參數和返回值在函數中起到什麽作用?
形參:函數被調用時用於接收實參值,用到的時候才分配內存,用完釋放內存。離開函數體不能使用
實參:有確定的值和分配的內存,在主函數中,被調函數中不能使用。

③ 函數參數傳遞過程中,值傳遞和引用傳遞區別是什麽?
值傳遞:用實參的值初始化形參,參數單項傳遞,之後形參的改變不會影響實參的值。
引用傳遞:對形參的改變對主函數中的實參有效。

  1. 編程實驗部分
    (1)習題2-28
    用switch

include

using namespace std;
int main(){

char a;
cout<<"Menu:A(dd) D(elete) S(ort) Q(uit)"<<endl;
cout<<"Select one:";
cin>>a;
switch(a){
    case ‘A‘:cout<<"數據已增加"<<endl; break;
    case ‘D‘:cout<<"數據已刪除"<<endl; break;
    case ‘S‘:cout<<"數據已排序"<<endl; break;
    case ‘Q‘:break;     
} 

return 0;

}

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

用if……else break和continue

include

using namespace std;
int main(){
int i;
char a;
cout<<"Menu:A(dd) D(elete) S(ort) Q(uit)"<<endl;
cout<<"Select one:";

for (i=0;;i++){   //之前的錯誤 for(i=0;i++;)   
                 //i++ 是第三個條件,後面不應該有; 
    cin>>a;
        if (a!=‘Q‘){
        
            if (a==‘A‘){
               cout<<"數據已增加";continue;} 
            if (a==‘D‘){
               cout<<"數據已刪除";continue;}
            if (a==‘S‘){
            cout<<"數據已排序";continue;}
        }
        else
            break;
     }
return 0;

}

技術分享圖片

(2)習題2-29
①簡潔描述「判斷一個數為質數」的算法:如有整除,終止內部循環,外部進行下一次循環判斷下一個數,如果內部循環中間沒有終止說明只有1和本身可以整除,說明是質數,這時候j與i相等,那麽輸出這個數。
②源代碼及運行結果截圖
用for

include

using namespace std;
int main(){
int i,j;

for (i=2;i<101;i++)
{
    for(j=2;j<i;j++){
        if (i%j==0){
            break;
        }
    
    }
    
    if (j==i)
       cout<<i<<" ";        
}
return 0;

}

技術分享圖片

用while

include

using namespace std;
int main(){
int i=2,j=2;

while (i<101)
{
    while(j<i)
    {
        if (i%j==0){
            break;
        }
       j++;
    }
    
    if (j==i){
    
       cout<<i<<" ";}
    i++;
    j=2;        
}
return 0;

}

技術分享圖片

用do……while

include

using namespace std;
int main(){
int i=2,j=2;
do{
do{
if(i%j==0)
break;

        j++;
    }while(j<i);
    
    if (j==i)
           cout<<i<<" ";
    i++;
    j=2;
}while(i<101);      
        

return 0;

}

技術分享圖片

(3)習題2-32
源代碼及運行結果截圖
用do……while

include

include

using namespace std;
int main(){
unsigned seed;
short b;
cin>>seed;
srand(seed);
int a=rand()%100;
do {
cin>>b;
if (a>b)
cout<<"小了";
if (a<b)
cout<<"大了";
}while(a!=b);
cout<<"隨機數為:"<<a;
return 0;

}

技術分享圖片

用while

include

include

using namespace std;
int main(){
unsigned seed;
short b;
cin>>seed;
srand(seed);
int a=rand()%100;
while(1) {
cin>>b;
if (a!=b){

        if (a>b)
           cout<<"小了";  
        else if (a<b)
           cout<<"大了";
        }
    else  {
     cout<<"隨機數為:"<<a; break;
    }
}    
  
return 0;

}

技術分享圖片

(4)習題2-34
①簡潔描述你的算法思路
②源代碼及運行結果截圖

include

include

using namespace std;
int comm(int n,int k){//遞歸
if (k>n)
return 0;
else if (n==k||k==0)
return 1;
else
return comm(n-1,k)+comm(n-1,k-1);//數學公式
}
int main(){
int n,k;
cout<<"輸入小球顏色種類數和每次摸不同顏色球的個數:";
cin>>n>>k;
cout<<comm(n,k);
return 0;
}

技術分享圖片

五、實驗總結與體會
結合你在本次實驗中的收獲、感受等,也可以是自己延伸自學及編程實踐中的新收獲、發現、思考,等等。
循環的使用條件掌握的不好,對循環內部參數的變化掌握的也不是很清楚。
1.For循環中三個條件,前兩個條件後要加“;”
2.而且一般第一個條件是將i的初值設定好了,每次循環都是這樣,但是在while中一開始沒有意識到,每一次循環後i的值變了,導致之後的每次循環初始值變了。
3.break結束循環,continue結束本次循環,進行下一次。break循環和switch都可以用,continue只能在循環中使用。

If條件
1.每一個else都要和一個明確的if相對應,有時候加個{}可以很好的劃分。

枚舉

  1. 枚舉的每一個元素都可以賦值,第一個是0,第二個是1……並且可以進行運算。

隨機數

  1. rand隨機數需要一個種子seed,不然每次seed都默認為1,隨機數都會一樣。
    問題:隨機數的出現是不是在rand函數的數列中與seed的值對應位置的數?
    遞歸
    1.不會數學公式寫遞歸真的很要命!

南京信息工程大學實驗報告(二)