2013 7 15學習作業

2021-09-21 08:49:02 字數 3645 閱讀 7823

//題目1

//int a[3];

//a[0]=0; a[1]=1; a[2]=2;

//int *p, *q;

//p=a;

//q=&a[2];

//a[q-p]的值是多少?為什麼?

#include 

using namespace std;

int main(int argc, const char * ar**)

//題目2

//const 有什麼用途?請用附上**例子佐證!

#include 

//const作用

1.可以定義const常量,具有不可變性

例如:const int max=100;int array[max];

2.便於編譯器進行型別檢查,使編譯器對處理內容有更多的了解,消除一些隱患。例如:void f(const int i){} 編譯器就知道i是乙個常量,不允許修改;

3.可以避免意義模糊的數字出現,同樣可以很方便的進行引數的調整和修改。同巨集定義一樣,可以做到不變則以,一變都變!在(1)中,如果想修改max的內容,只需要修改:const int max=you want即可;

4.可以保護被修飾的東西,防止意外的修改,增強程式的健壯性。還是上面的例子,如果在函式體內修改了i,編譯器就會報錯,例如:

void f(const int i)

5.為過載函式提供了乙個參考

class a//乙個函式

void f(int i)const//上乙個函式的過載

};6.可以節省空間,避免不必要的記憶體分配。例如

#define pi 3.14159 //常量巨集

const double pi=3.14159;//此時並未將pi放入rom中。。。

double i=pi;//此時為pi分配記憶體,以後不再分配!

double i=pi;//編譯起見進行巨集替換,分配記憶體

double j=pi;//沒有記憶體分配

double j=pi;//再次進行巨集替換,又一次分配記憶體!

const定義常量從彙編的角度來看,只是給出了對應的記憶體位址,而不是像#define一樣給出的是立即數,所以,const定義的常量在程式執行過程中只有乙份拷貝,#define定義的常量在記憶體中又若干份拷貝

7.提高了效率,編譯器通常不為普通的const常量分配記憶體空間,而是將他們儲存在符號表中,這使得它成為乙個編譯期間的常量,沒有了儲存與讀取記憶體的操作,是的它的效率更高。

//題目3:

//引用跟指標的區別?請用附上**例子佐證!

//1.從記憶體上來講,系統為指標分配記憶體空間,而引用與繫結的物件共享記憶體空間,系統不為引用變數分配記憶體空間

//2.指標初始化後可以改變指向的物件,而引用定義的時候必須要初始化,而且初始化後不允許再重新繫結物件

//3.所以引用訪問物件是直接訪問的。指標訪問物件是間接訪問的。

//4.如果pa是指標,那麼*pa就是引用了。但是兩者在作為形參的時候非常相似,區別是指標拷貝副本,引用不拷貝。

#include 

using namespace std;

void pt(int *pta,int *ptb)

void ref(int &ra,int &rb)

int main(int argc, const char * ar**)

//題目4:

//學生類:學生的姓名成績及相關的運算,新增英語成績,並根據總成績對學生姓名進行排序

#include 

using namespace std;

class student ;

void student:: settotal(float p)

char * student::name()

float student::ch()

float student:: ma()

float student::en()

void student::student(char *name,float chinese,float math)

name[i] = '\0'; //加上\0結束,防止輸出的name有亂碼

chinesescore = chinese;

mathscore = math; }

void student::addenglishscore()

void student::counttotalscore(double &total)

void student::getscores(char **name,double &chinese, double &math, double &english)

float student::total()

void student::showstudent(char *name,double ch,double ma,double en,double total)

float *funb(float *pnum,int n)

} }

}float* p=pnum;

return p; }

int main(int argc, const char * ar**)

while (i

//    列印儲存的資料

cout<

for (int i=0; i

printf("%.2f \n",stu[i].total()); }

//排序後的順序

cout<

float *p = funb(a, n);

for (int j=0; j

for (int i=0; i

if (p[j]==stu[i].total()) }

} //    student stu1;

//    stu1.student("dingxiaowei", 90, 91);

//    stu1.addenglishscore();

//    char *name1;

//    double ch1,ma1,en1,total1;

//    stu1.getscores(&name1,ch1, ma1, en1);

//    stu1.counttotalscore(total1);

//    stu1.showstudent(name1, ch1, ma1, en1,total1);

////    

//    

//    student stu2;

//    stu2.student("wangnin", 90, 92);

//    stu2.addenglishscore();

//    char *name2;

//    double ch2,ma2,en2,total2;

//    stu2.getscores(&name2,ch2, ma2, en2);

//    stu2.counttotalscore(total2);

//    stu2.showstudent(name2, ch2, ma2, en2,total2);

//    

//    

//    

//    if (total1>=total2)

//    else

return 0; }

暑假學習 作業總結一

題目一 1.如何判斷乙個素數?100 200之間的素數怎麼判斷?素數判斷是除了1和本身,不能被其他數整除,初等數論,乙個整數不能整除他的平方數之內的整數就是素數。可以利用迴圈來完成。感覺程式的關鍵是什麼時候輸出結果,即注意 break和continue的使用。int i,n,m for i 100 ...

python學習作業筆記四

usr bin env python coding utf 8 time 2018 8 16 10 20 author 迭代器 可以迭代的資料都可以稱之為iterable物件 可迭代物件 from collections import iterable print isinstance iterab...

python學習作業筆記十一

usr bin env python coding utf 8 time 2018 8 20 17 01 author 多程序 from multiprocessing import process import os 子程序要執行的 def run proc name print run chil...