行,以往的经验教训后,。成员main性能、变数、命名等基本概念应该有一个初步的了解

下面,我们就可以开始我们自己的第一个定义的函数。

仿照头等舱、操作的第二个教训。添加一个新的项目的解决方案Lession006

第一课main.cpppublic.h复制过来

然后例如以下图示意的那样增加到项目中来:

右键单击项目 在加入栏 选择现有项

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemVyZ2x1cmtlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

选择刚刚复制过来的代码,点击加入

尽管是第一个自定的函数,难度还是不要太大了,就弄一个显示斐波纳契数列的函数吧

首先将项目设置为启动项目,方便调试:

右键单击项目。选择 设为启动项目

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemVyZ2x1cmtlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

在main.cpp中输入例如以下代码:

#include <stdio.h>

int main(int argc, char* argv[], char* env[])
{
Fibonacci(10);
return 0;
} void Fibonacci(unsigned int nTotal)
{
int nFirst = 1;
int nSecond = 1,nThird;
unsigned int i;
if (nTotal == 0){
return;//假设用户要求输出的数量为0,则什么都不输出
}
printf("%d\n", nFirst);
if (nTotal == 1)
{//假设用户要求输出的数量为1,则到此为止
return;
}
//先把头两个数输出出来
printf("%d\n",nSecond);
if (nTotal <= 2)//假设用户指定输出数量不超过2个,则到此为止
return;
for (i = 2; i < nTotal;i++)
{
nThird = nFirst + nSecond;
printf("%d\n", nThird);
nFirst = nSecond;
nSecond = nThird;
}
}

然后选择项目-生成 或者按下F7键

一切正常的话就能够看到例如以下编译错误:

1>------ 已启动生成:  项目: Lession006, 配置: Debug Win32 ------
1> main.cpp
1>e:\vsproject\c-c++lession\lession006\main.cpp(5): error C3861: “Fibonacci”: 找不到标识符
========== 生成: 成功 0 个,失败 1 个,最新 2 个。跳过 0 个 ==========

为什么会报这样的错误?

实际上这样的错误会长期伴随你,甚至贯穿你的整个职业生涯——来自你或者你的同事。

在代码main函数中。我们调用了函数Fibonacci,就是这句代码:Fibonacci(10);

它告诉程序,我想生成包括10个数的斐波纳契数列

可是编译器解释到这里的时候。Fibonacci还没有被发现。是的,它还在后面,编译器还来不及看到它。

所以它报了一个错,由于Fibonacci这个名称我不知道是啥玩意,于是它客气的说:

1>e:\vsproject\c-c++lession\lession006\main.cpp(5): error C3861: “Fibonacci”:  找不到标识符

在 e:\vsproject\c-c++lession\lession006\main.cpp 文件的第5行,这个标识符Fibonacci,我不知道该怎么办

要学会看这些错误信息,由于它能够帮助你高速定位错误,并分析原因

如今怎么办?一个本办法是将Fibonacci代码移到main前面去。

只是这样很不好。由于假设对于一个有数百上千个函数的项目,main函数那不要到最后才干開始写。

只是也不必纠结,还有另外一个办法,就是声明函数。

找到public.h

输入例如以下内容:

然后在main.cpp前面加上一个包括语句:

如今编译一切就ok了

由于当编译器解释到Fibonacci(10);的时候,它就知道,这是一个函数调用,參数是无符号整数。

这一切都是public.h文件告诉它的

#include 的含义是,告诉编译器你先读我指定的文件。然后再接着往下读我的代码。

按下ctrl+F5就能够看到例如以下内容:

正好是10个斐波纳契数

假设你想要很多其它,那么仅仅须要更改Fibonacci(10);这句中的10就能够了

你能够试一试其它数,包含负数看看有什么结果(这是下节课的内容)

关于这节课代码的详解。我接着说,今天就到这里。

版权声明:本文博主原创文章,博客,未经同意不得转载。

zerglurker的c语言教程006——第一功能的更多相关文章

  1. zerglurker的C语言教程007——代码运行的顺序

    软件开发中.代码有三种基本运行顺序: 顺序运行 代码从入口開始一条一条运行.直到返回或者结束 循环运行 在设定条件后,代码反复运行某一个或多个部分,直到达到某些条件后终止 条件运行 代码会先推断某些条 ...

  2. Swift3.0语言教程查找字符集和子字符串

    Swift3.0语言教程查找字符集和子字符串 Swift3.0语言教程查找字符集和子字符串,在字符串中当字符内容很多时,我们就需要使用到查找字符集或者子字符串的方法.以下我们将讲解3种查找字符集和子字 ...

  3. ReactiveCocoa入门教程:第一部分

    http://www.cocoachina.com/ios/20150123/10994.html 本文翻译自RayWenderlich,原文:ReactiveCocoa Tutorial--The ...

  4. Swift2.0语言教程之类的方法

    Swift2.0语言教程之类的方法 Swift2.0语言的方法 方法其实就是函数,只不过它被定义在了类中.在Swift中,根据被使用的方式不同,方法分为了实例方法和类型方法两种.这两种方法的定义也和O ...

  5. Swift2.0语言教程之类的属性

    Swift2.0语言教程之类的属性 类 虽然函数可以简化代码,但是当一个程序中出现成百上千的函数和变量时,代码还是会显得很混乱.为此,人们又引入了新的类型——类.它是人们构建代码所用的一种通用.灵活的 ...

  6. Swift2.0语言教程之函数的返回值与函数类型

    Swift2.0语言教程之函数的返回值与函数类型 Swift2.0中函数的返回值 根据是否具有返回值,函数可以分为无返回值函数和有返回值函数.以下将会对这两种函数类型进行讲解. Swift2.0中具有 ...

  7. 单片机c语言教程:C51循环语句

    单片机c语言教程第十三课 C51循环语句 循环语句是几乎每个程序都会用到的,它的作用就是用来实现需要反复进行多次的操 作.如一个 12M 的 51 芯片应用电路中要求实现 1 毫秒的延时,那么就要执行 ...

  8. Xamarin XAML语言教程XAML文件结构与解析XAML

    Xamarin XAML语言教程XAML文件结构与解析XAML XAML文件结构 在上文中,我们创建XAML文件后,会看到类似图1.16所示的结构 图1.16  结构 其中,.xaml文件和.xaml ...

  9. Swift3.0语言教程字符串与URL的数据转换与自由转换

    Swift3.0语言教程字符串与URL的数据转换与自由转换 Swift3.0语言教程字符串与URL的数据转换 Swift3.0语言教程字符串与URL的数据转换与自由转换,字符串中的字符永久保存除了可以 ...

随机推荐

  1. 3.1.2 MVC模式和URL访问

    本节课大纲: 一.什么是MVC //了解 M -Model 编写model类 对数据进行操作 使用Model类 来操作数据 V -View 编写html文件,页面呈现 C -Controller 编写 ...

  2. 安卓开发28:自定义View类

    自定义View类 通过自定义View类,可以自定义复杂的,按照自己需求的控件. 一个简单的例子 mainActivity.java 这个里面就是最普通的代码,但是给自定义的控件加上了一个onclick ...

  3. 北京联通100M光纤宽带需邀请函 实际速率12MB/S - OFweek光通讯网

    [新提醒]随身wifi无法使用FAQ(不断更新中~~~~~~) - 使用问题 - 360官方论坛 undefined 北京联通100M光纤宽带需邀请函 实际速率12MB/S - OFweek光通讯网 ...

  4. cocos2.2.3 HelloCpp TestCpp android 环境搭建 编译

    cygwin make PATH->E:\cygwin\bin JAVA_HOME->C:\Program Files\Java\jdk1.8.0_05 Eclipse->Windo ...

  5. poj 2201 构造

    这个题目的构造方法应该还算是很好想的,先给a按照从小到大排序,然后按顺序插入数据,构造一棵二叉查找树,而且50000的数据,nlogn的做法,应该还是很好的.不过这个题目的编码比想象中要麻烦一点,并且 ...

  6. IBM之MQ使用指南

    随着计算机网络和分布式应用的不断发展.远程消息传递越来越成为应用系统中必不可少的组成部分. 商业消息中间件的出现保证了消息传输的可靠性,高效率和安全性,同一时候也降低了系统的开发周期. 眼下应用最多的 ...

  7. poj 1011 Sticks ,剪枝神题

    木棒 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 118943 Accepted: 27429 Description 乔治拿 ...

  8. Web Api 2(Cors)Ajax跨域访问

    支持Ajax跨域访问ASP.NET Web Api 2(Cors)的简单示例教程演示   随着深入使用ASP.NET Web Api,我们可能会在项目中考虑将前端的业务分得更细.比如前端项目使用Ang ...

  9. POJ 2676/2918 数独(dfs)

    思路:记录每行每列每一个宫已经出现的数字就可以.数据比較弱 另外POJ 3074 3076 必须用剪枝策略.但实现较麻烦,还是以后学了DLX再来做吧 //Accepted 160K 0MS #incl ...

  10. python实现了字符串的按位异或和php中的strpad函数

    近期在写自己主动化測试,因为开发加密中用到strpad和字符串的按位异或,而python中没有这种函数和功能,所以必须自己写一套,要不自己主动化測试无法进行,所以就用python实现了一下,因为在写字 ...