當前位置:首頁 » 編程軟體 » 雞啄米的c編程入門系列

雞啄米的c編程入門系列

發布時間: 2022-06-27 09:16:05

⑴ 68如何變為二進制數字 過程

大家應該知道比較常用的數制是十進制、二進制、八進制和十六進制。二進制就是逢二進一,每位都是小於二的數,其他進制類推。計算機存儲數據使用的是二進制編碼。

對於一個R進制的數X來說,其值可以通過下面的公式算出來:R進制計算公式,前面是整數部分,後面是小數部分,m,n為正整數,表示第i位上的數字乘以進制數的i次方。比如二進制數(11.01)2=1×21+1×20+0×2-1+1×2-2=3.25。當R進制轉換到十進制時,就這樣轉換。

那十進制怎麼轉換為R進制呢,可以將十進制數連續除以R,其每個余數就是R進制數各個數位上的數字,最後的余數是最高位。比如將68轉換成二進制數,用除2取余法:

2∟68 余數

2∟34 …………………0 低位

2∟17 …………………0

2∟8 …………………1

2∟4 …………………0

2∟2 …………………0

2∟1 …………………0

0 …………………1 高位

結果就是6810 =10001002,將68轉換為八進制數就用除8取余法。

雞啄米:C++編程入門系列之一(進制數)

十進制小數轉換成R進制小數,整數部分仍按上述方法轉換,小數部分則乘以R,然後將結果的整數位取出作為轉換最終結果的一位,再用去掉整數位的小數再乘以R,之後循環這樣執行,直到小數部分為0或者達到所要求的精度為止,取出的這些整數位第一位為最高位。例如,將十進制小數0.3125轉換成二進制小數:

0.3125×2 = 0.625 取出0,為最高位

0.625×2 = 1.25 取出1,剩下的小數為0.25

0.25×2 = 0.5 取出0

0.5×2 = 1.0 取出1,小數位為0,不再繼續

結果就是0.312510 =0.01012 。所以將十進制數68.3125轉換成二進制數就是1000100.0101。

二進制和八進制十六進制之間怎樣轉換呢?每位八進制數相當於三位二進制數,每位十六進制數相當於四位二進制數,舉個例子說明下就清楚了:

(1000100)2=(1 000 100)2=(104)8

(1000100)2=(100 0100)2=(44)16

上面這個等式反過來當然也成立,就是八進制十六進制轉換為二進制反過來計算就可以了。

下面雞啄米再跟大家說下計算機數據的存儲單位,常用的單位有「位」,「位元組」,「字」。

位:這是數據的最小單位,表示一位二進制數據。

位元組:由八位二進制數據組成。位元組是數據存儲中最常用的基本單位。我們常說內存有2G,這里的單位就是位元組。1K等於1024位元組,1M等於1024K,1G等於1024M。

字:位的組合,作為一個獨立的信息單位處理。取決於機器的類型、字長及使用者的要求。常用的固定字長有8位、16位、32位等。

機器字長:討論信息單位時,有個與機器硬體指標有關的單位就是機器字長,一般指參加運算的寄存器所含有的二進制數的位數,它代表了機器的精度,如32位、64位等。就是我們常說的32位機器還是64位機器

⑵ MFC入門書籍

《VC++深入詳解》和侯捷《深入淺出mfc》都是入門的必看書籍,沒有哪個更好,看你更喜歡哪本書的表述方式。其它較好的書籍還有:

1、《windows程序設計》,講win32api的,了解了這個再看mfc會容易一點。

2、雞啄米的《MFC教程》,對比學習,一般的控制項基本都會用的。

3、《windows核心編程》,重中之重,要多看幾遍。

c語言 多文件多函數結構

C++編程入門系列之二十四(C++程序設計必知:多文件結構和編譯預處理命令)分類標簽: C++ 編程入門 -
雞啄米上一講給大家講了常引用、常對象和對象的常成員,今天給大家講下編程入門知識--多文件結構和編譯預處理命令。
一.C++程序的多文件結構
之前雞啄米給大家看了很多比較完整的C++程序的例子,大家可能發現了,它們的結構基本上可以分為三個部分:類的聲明、類的成員函數的實現和主函數。因為代碼比較少,所以可以把它們寫在一個文件中,但是我們實際進行軟體開發時,程序會比較復雜,代碼量比較大,
一個程序按結構至少可以劃分為三個文件:類的聲明文件(*.h文件)、類的實現文件(*.cpp文件)和主函數文件(使用到類的文件),如果程序更復雜,我們會為每個類單獨建一個聲明文件和一個實現文件。這樣我們要修改某個類時就直接找到它的文件修改即可,不需要其他的文件改動。
雞啄米在第十九講中講生存期時有個時鍾類的例子,現在雞啄米給大家看下將那個程序按照上面說的結構分到三個文件里:
// 文件1:Clock類的聲明,可以起名為Clock.h
#include <iostream>
using namespace std;
class Clock //時鍾類聲明
{
public: //外部介面
Clock();
void SetTime(int NewH, int NewM, int NewS); //三個形參均具有函數原型作用域
void ShowTime();
~Clock(){}
private: //私有數據成員
int Hour,Minute,Second;
};
// 文件2:Clock類的實現,可以起名為Clock.cpp
#include "Clock.h"
//時鍾類成員函數實現
Clock::Clock() //構造函數
{
Hour=0;
Minute=0;
Second=0;
}
void Clock::SetTime(int NewH,int NewM,int NewS)
{
Hour=NewH;
Minute=NewM;
Second=NewS;
}
void Clock::ShowTime()
{
cout<<Hour<<":"<<Minute<<":"<<Second<<endl;
}
// 文件3:主函數,可以起名為main.cpp
#include "Clock.h"
//聲明全局對象g_Clock,具有文件作用域,靜態生存期
Clock g_Clock;
int main() //主函數
{
cout<<"文件作用域的時鍾類對象:"<<endl;
//引用具有文件作用域的對象:
g_Clock.ShowTime();
g_Clock.SetTime(10,20,30);

Clock myClock(g_Clock); //聲明具有塊作用域的對象myClock,並通過默認拷貝構造函數用g_Clock初始化myClock
cout<<"塊作用域的時鍾類對象:"<<endl;
myClock.ShowTime(); //引用具有塊作用域的對象
}
在vs2010中如何生成這三個文件呢?我們可以點菜單中Project->Add Class,在彈出的對話框中選擇c++ class,然後由彈出個對話框,在class name處填上類名點finish就可以了,這樣.h文件和.cpp文件會自動生成,我們也可以點Project->Add New Item,在彈出的對話框中選擇Header File(.h)或C++ File(.cpp)來生成.h文件或.cpp文件。
Clock.cpp和main.cpp都使用#include "Clock.h"把類Clock的頭文件Clock.h包含進來。#include指令的作用就是將#include後面的文件嵌入到當前源文件該點處,被嵌入的文件可以是.h文件也可以是.cpp文件。如果不包含Clock.h,Clock.cpp和main.cpp就不知道Clock類的聲明形式,就無法使用此類,所以所有使用此類的文件都應該包含聲明它的頭文件。關於#include指令下面雞啄米會講。
上面的程序在編譯時,由Clock.cpp和Clock.h編譯生成Clock.obj,由main.cpp和Clock.h編譯生成main.obj,然後就是鏈接過程,Clock.obj和main.obj鏈接生成main.exe可執行文件。如果我們只修改了類的實現文件,那麼只需重新編譯Clock.cpp並鏈接就可以,別的文件不用管,這樣就提高了效率。在Windows系統中的C++程序用工程來管理多文件結構,而Unix系統一般用make工具管理,如果大家從事Unix系統軟體開發,就需要自己寫make文件。
二.編譯預處理程序
編譯器在編譯源程序以前,要由預處理程序對源程序文件進行預處理。預處理程序提供了一些編譯預處理指令和預處理操作符。預處理指令都要由「#」開頭,每個預處理指令必須單獨佔一行,而且不能用分號結束,可以出現在程序文件中的任何位置。
1.#include指令
#include指令也叫文件包含指令,用來將另一個源文件的內容嵌入到當前源文件該點處。其實我們一般就用此指令來包含頭文件。#include指令有兩種寫法:
#include <文件名>
使用這種寫法時,會在C++安裝目錄的include子目錄下尋找<>中標明的文件,通常叫做按標准方式搜索。
#include "文件名"
使用這種寫法時,會先在當前目錄也就是當前工程的目錄中尋找""中標明的文件,若沒有找到,則按標准方式搜索。
2.#define和#undef指令
如果你學過C語言,就會知道用#define可以定義符號常量,比如,#define PI 3.14 這條指令定義了一個符號常量PI,它的值是3.14。C++也可以這樣定義符號常量,但一般更常用的是在聲明時用const關鍵字修飾。C語言還用#define定義參數宏,來實現簡單的函數運算,比如,#define add(x,y) (x+y) 這條指令說明如果我們用到add(1,2)則預處理後就會用(1+2)代替,C++中一般用內聯函數來實現。
#undef用來刪除由#define定義的宏,使其不再起作用。
3.條件編譯指令
用條件編譯指令可以實現某些代碼在滿足一定條件時才會參與編譯,這樣我們可以利用條件編譯指令將同一個程序在不同的編譯條件下生成不同的目標代碼。例如,我們可以在調試程序時加入一些調試語句,用條件編譯指令控制只有在debug模式下這些調試語句才參與編譯,而在release模式下不參與編譯。
條件編譯指令有5中形式:
a.第一種形式:
#if 常量表達式
程序正文 //當「 常量表達式」非零時本程序段參與編譯
#endif
b.第二種形式:
#if 常量表達式
程序正文1 //當「 常量表達式」非零時本程序段參與編譯
#else
程序正文2 //當「 常量表達式」為零時本程序段參與編譯
#endif
c.第三種形式:
#if 常量表達式1
程序正文1 //當「 常量表達式1」非零時本程序段參與編譯
elif 常量表達式2
程序正文2 //當「常量表達式1」為零、「 常量表達式2」非零時本程序段參與編譯
...
elif 常量表達式n
程序正文n //當「常量表達式1」、...、「常量表達式n-1」均為零、「 常量表達式n」非零時本程序段參與編譯
#else
程序正文n+1 //其他情況下本程序段參與編譯
#endif
d.第四種形式:
#ifdef 標識符
程序段1
#else
程序段2
#endif
如果「標識符」經#defined定義過,且未經undef刪除,則編譯程序段1,否則編譯程序段2。
e.第五種形式:
#ifndef 標識符
程序段1
#else
程序段2
#endif
如果「標識符」未被定義過,則編譯程序段1,否則編譯程序段2。
4.define操作符
define是預處理操作符,不是指令,所以不能用#開頭。使用形式為:define(標識符)。如果括弧里的標識符用#define定義過,並且沒有用#undef刪除,則define(標識符)為非0,否則為0。可以這樣使用:
#if !define(HEAD_H)
#define HEAD_H
我們在包含頭文件時,有時多次重復包含同一個頭文件,比如下面這種情況:
// main.cpp文件
#include "file1.h"
#include "file2.h"
int main()
{

}
// file1.h文件
#include "head.h"

// file2.h文件
#include "head.h"

// head.h文件
...
class A
{
...
}
...
main.cpp包含了file1.h文件,file1.h又包含了head.h文件,main.cpp還包含了file2.h文件,file2.h也包含了head.h文件,那麼main.cpp就包含了兩次head.h文件,在編譯時就會報錯,說head.h中的類A重復定義了。這時我們可以在被重復包含的文件head.h中使用條件編譯指令,用一個唯一的標識符來標識head.h文件是否已經編譯過,如果已經編譯過則不會重復編譯了。雞啄米給大家改寫下上面的head.h文件:
// head.h文件
#ifndef HEAD_H
#define HEAD_H
...
class A
{
...
}
...
#endif
在這個改好的head.h文件中,上來會先判斷HEAD_H是否被定義過,如果沒有被定義過,則head.h文件還沒參與過編譯,就編譯此文件中的源代碼,同時定義HEAD_H,標記head.h文件已經參與過編譯。如果HEAD_H已經被定義過,則說明此文件已經參與過編譯,編譯器會跳過本文件左右內容編譯其他部分,類A也不會有重復定義的錯誤了。

⑷ 如何才能快速入門C++編程

找個好的入門教程吧,別用那種翻譯的或內容太細太多的,那樣使人覺得太復雜而失去信心,也沒必要,找個深入淺出的大概都講到的即可,學完就可以寫簡單的程序,然後看看別人寫的代碼就慢慢熟悉了,可以看看雞啄米的C++編程入門系列。希望能夠幫到你。

⑸ C++中Delete用法:請問int *p=new int(5); 此時delete的形式是delete []p還是delete p;

new int(5)這里的5不是代表有5個元素的數組,而是表示動態分配一個int型內存,然後為其初始化為5,delete的形式是delete p。如果是new int[5],則表示分配一個有5個元素的數組對象,delete的話是delete []p。關於C++動態內存分配的內容可以看下雞啄米博客的《雞啄米:C++編程入門系列之三十一(數組、指針和字元串:動態內存分配和釋放)》。希望可以幫到你。

⑹ c++入門用什麼書

c++入門最好找個深入淺出的教程,不用找那種翻譯過來的內容太多太細的教程,那種的只會考驗你的耐性,很難堅持一次看完,只要基本知識點都涵蓋了就行,至於那些厚書可以當做工具書來用。給你推薦「雞啄米:C++編程入門系列」,還不錯。希望可以幫到你。

⑺ 初學者所需要的編程入門書籍,請推薦推薦

可以選擇學習C++,目前C++開發方面的工作還是很多的,先找個不錯的深入淺出的入門教程看下,跟著上面的例子自己寫了運行下,然後就是學習有經驗者寫的程序,從中得到啟發。推薦雞啄米的C++編程入門系列 http://www.jizhuomi.com/catalog.asp?tags=%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8。

⑻ 求c++編程的案例,從入門到復雜的

找本書看不就行了

用網頁版本的難道你收不到么?、、

1.快速入門
〈Accelerated.C++〉2000
〈Essential C++〉2002 Lipman
兩本都是開篇就講C++/STL,絕口不提C,而且都有中文版。

2.枕頭參考
〈C++.Primer.4th〉2005 Lippman,第3版有中文版,當入門書看也無不可。
〈The.C++.Programming.Language.3rd〉Bjarne Stroustrup ,簡稱TCPL。

3.專門書籍
STL參考:〈The.C++.Standard.Library-A.Tutorial.And.Reference〉1999
號稱最好的STL參考,但我覺得很像JDK文檔。

Boost 參考:〈Beyond the C++ Standard Library - An Introction to Boost〉2005
介紹了Boost的一些重要類庫,但其餘的還是要看Boost自帶文檔。

C++ Template參考:〈C++ Templates - The Complete Guide〉2002
對template講得相當深,無愧於The Complete Guide的書名,ytam說可以作為MCD的前傳和續集。

〈C++ Common Knowledge〉 中文版, Stephen C. Dewhurst
跑杯茶怡然的看看C++裡面那些值得吹噓的知識點是個不錯的場景。

4.Effective 類
Herb Sutter, Andrei Alexandrescu合著一本:
〈C++.Coding.Standards - 101.Rules.Guidelines〉2004

Meyers的三本Effecive:
〈Effective C++ 3rd〉 2005
〈More Effective C++〉
〈Effective.STL.50.Specific.Ways.to.Improve.Your.Use.of.STL〉

〈C++ Gotchas〉2002,Stephen C. Dewhurst

對於後四本,我老覺得是在語言規范下繞來繞去,從工作角度來看是實用,從個人角度看來是無聊。

5.精力過剩類
〈Modern C++ Design - Generic Programming and Design Patterns 〉2001 Andrei Alexandrescu ,推薦,C++里最值得一讀的書。

〈C++ Template Metaprogramming Concepts,Tools and Techniques from Boost and Beyond 〉

Herb Sutter的三本Exceptional,rayman說是打擊信心用的:
〈Exceptional C++ - 47 Engineering Puzzles, Programming Problems, and Solutions 〉1999
〈More Exceptional C++〉2001
〈Exceptional C++ Style - 40.New.Engineering.Puzzles.Programming.Problems.and.Solutions〉2004

⑼ c++怎麼學編程都不會

首先下載C++的編程環境,例如VS2010等。其次,要學習C++的編程思想,網上介紹有很多的書籍,但我認為入門的部分,可以去看一個博客--雞啄米。有兩部分,一部分是C++編程入門系列,另一部分是VS2010系列MFC入門到精通教程。本人菜鳥一枚,開發C++一段時間後,覺得有很多疑惑,看了博客,有很多才明白,後期我又看了兩三遍,覺得有用的地方很多。再次,就是自己編寫一些小程序,從中發現問題,慢慢成長起來。最後,從程序的整體框架設計來思考,進行編程。

⑽ MFC 問題: C4430: 缺少類型說明符 - 假定為 int。注意: C++ 不支持默認 int

m_pTipDlg 前面為什麼不寫變數類型?還有錯誤中說得很清楚,只有常量成員變數才能在類裡面初始化,即使要將 m_pTipDlg 置為 NULL 也應該在構造函數里賦值而不是在聲明的時候。

熱點內容
解壓到當前文件夾右鍵 發布:2024-04-26 03:57:08 瀏覽:979
html5android教程視頻下載 發布:2024-04-26 03:09:59 瀏覽:867
伺服器的描述是什麼 發布:2024-04-26 03:08:32 瀏覽:394
個人加密 發布:2024-04-26 03:01:23 瀏覽:521
linuxusbgadget 發布:2024-04-26 02:52:54 瀏覽:304
我的世界空島世界伺服器地址 發布:2024-04-26 01:39:08 瀏覽:248
尼爾機械紀元加密 發布:2024-04-26 01:37:11 瀏覽:868
在控制台輸出sql語句 發布:2024-04-26 01:08:12 瀏覽:432
動畫java 發布:2024-04-26 01:02:40 瀏覽:12
得力文件夾5302 發布:2024-04-26 00:21:32 瀏覽:91