当前位置:首页 » 编程软件 » 鸡啄米的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-05-06 21:45:20 浏览:211
一汽桌面云服务器地址 发布:2024-05-06 21:19:23 浏览:996
北京市社保官网登录密码是什么 发布:2024-05-06 21:19:15 浏览:380
c语言数组的删除 发布:2024-05-06 20:52:33 浏览:398
机械战警用什么配置好看 发布:2024-05-06 20:27:12 浏览:435
win10添加python环境变量 发布:2024-05-06 20:27:12 浏览:313
并联臂算法 发布:2024-05-06 20:02:11 浏览:623
cf跟dnf哪个需求配置高 发布:2024-05-06 20:01:23 浏览:657
什么配置皮筋能打老鼠吗 发布:2024-05-06 19:54:32 浏览:742
压缩机油压差报警 发布:2024-05-06 19:45:08 浏览:336