學習C (一)

來源:互聯網
上載者:User
int _tmain(int argc, _TCHAR* argv[])
{

char str[20],str2[20];
cout<<str<<endl; //由於分配了空間,沒有寫入資料,在輸出地時候讀沒有寫入資料的地址就回出現亂碼
for(int i=0;i<20;i++)
{
str[i]='a';
//if(i==10)
//{
// str[10]='\0';//字串遇到了\0,就會結束,所以strlen(str)=10
//}
}
str[19]='\0';//結束字串,沒有這一句就回出現亂碼

strcpy(str2,str);//將一個字串賦給列一個相等容量的字串是會出現亂碼的,因為字串的最後一位必須是\0
cout<<str<<" , "<<sizeof(str)<<" , "<<strlen(str)<<" , "<<str2<<endl;

int k = 5;
k = k + (++k);
cout<<k<<endl;

int b1;
cin>>b1;
return 0;
}



輸出結果如下:







char str[20];

定義一個長度為20的字元數組,系統會分配20個連續的空間給str;開始的時候每個空間裡面都沒有值;

str指向數組的第一個空間,str相當於一個常量指標,所以不能寫str=?;



sizeof(str)表式str所佔的空間長度,char str[20]表示長度為20,也就是說sizeof(str)的值在定義的時候就已經定了,

就是字元創數組的長度。



strlen(str)表示str中字元的個數,這裡有19個,最後一個\0不算。



int k = 5;
k = k + (++k);

最後k=12;這個的確不太好理解





理解:可以這樣理解i++和++i:
對於一個運算式;如果有++i;就相當於在運算式之前加入一行代碼i=i+1;
同理有i++;相當於在運算式後面加入一行代碼i=i+1

int k = 5; k = k + (++k);相當於int k=5;k=k+1;k=k+k;

測試題:遞迴實現猴子偷桃問題

//猴子吃桃問題。猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個。
//第二天又將剩下的桃子吃掉一半,又多吃一個。以後每天都吃了前一天剩下的一半零一個。
//到第10天,只剩下一個桃子了。編程試求第一天共摘了多少桃子。
int Eat(int currentCount,int i)
{
if(i==10)
{
return currentCount;
}else{
currentCount=(currentCount+1)*2;
i++;
}
return Eat(currentCount,i);
}

cout<<Eat(1,10)<<endl;

得出第一天摘了1534個桃子。

最後一招猴子偷桃,竟然偷了1534個。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.