//題目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...