1. 程式人生 > 實用技巧 >刷題小知識總結點

刷題小知識總結點

1.大小寫字母互轉以及判斷:

用小寫字母減去'a'+'A'就能得到大寫字母啦。

用大寫字母加上'a'-'A'就能得到小寫字母啦。

(1).isupper()是判斷是否是大寫字母的系統函式,tolower()是將大寫字母轉換為小寫字母;
(2).strstr()是在一個字串裡面給定一個字串,尋找有沒有這個字串;

同時在C++當中,main函式是能夠遞迴的,下面是一個小寫轉大寫的例子

if(cin>>aa){
    if(ch>='a'&&ch<='z')
        ch+='A'-'a';//轉換大小寫 
        cout<<ch;
	main();//遞迴呼叫 
}

2.編譯錯誤

改為>=C11滴編譯器

3.函式floor(x)返回不超過x的最大整數;int n=floor(sqtr(m)+0.5),加0.5是為了減少誤差;

4.計算執行時間:標頭檔案:#include
clock()/CLOCKS_PER_SEC得到的是以“秒”為單位的數值;

5.要計算只包含加法和減法和乘法的整數表示式除以正整數n的餘數:可以在每步計算之後對n取餘,計算結果不變;
例如:原始:

int sum=0;
for(int i=1;i<=n;i++)
{
      int a=1;
      for(int j=1;j<=i;j++)
      a*=j;
      sum+=a;
}
cout<<sum%1000000<<endl;

每步取餘:

int sum=0;const int mod=1000000;
for(int i=1;i<=n;i++)
{
      int a=1;
      for(int j=1;j<=i;j++)
      a=(a*j%mod);
      sum=(sum+a)%mod;
}
cout<<sum<<endl;

6.scanf的輸入格式,空格和tab和回車符都是無關緊要的,所以按enter鍵並不意味著輸入的結束,在window下輸入完畢後,先按enter鍵,再按CTRL+z,最後再按enter,即可結束輸入;在Linux下,按CTRL+D;

7.從陣列a複製k個元素到陣列b,可以這樣做:memcpy(b,a,sizeof(int)k),如果是浮點數則:memcpy(b,a,sizeof(double)

k);如果是全部複製則:memcpy(b,a,sizeof(a));