几年前做家教写的C教程(之四专讲了指针与汉诺塔问题)
C语言学习宝典(4)
指针:可以有效的表示复杂的数据结构,能动态的分配动态空间,方便的使用字符串,有效的使用数组,能直接处理内存单元
不掌握指针就没有掌握C语言的精华
地址:系统为每一个变量分配一个内存单元,内存区的每一个字节有一个编号,这就是“地址”
指针的定义; 基类型 * 指针变量名
例如 int *pointer;
可以使用赋值语句使一个指针变量得到另一个变量的地址,从而使它指向一个该变量。
例1 通过指针变量访问整形变量
/*******************
功能:通过指针变量访问整形变量
*********************/
#include <stdio.h>
void main()
{
int a,b;
int *pointer1,*pointer2;
a=;b=;
pointer1=&a;
pointer2=&b;
printf("%d %d\n",a,b);
printf("%d %d\n",*pointer1,*pointer2);
}
例2 对于a,b两个整数,按先大后小的顺序输出
/*******************
功能:利用指针函数比较两个数的大小,输出
*******************/
#include <stdio.h>
void main()
{
void swap(int *p1,int *p2);
int a,b;
int *pointer1,*pointer2;
scanf("%d%d",&a,&b);
pointer1=&a;
pointer2=&b;
if(a<b)
swap(pointer1,pointer2);
printf("%d\n%d\n",a,b);
}
void swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
例3 Hanoi(汉诺塔)古代有一个梵塔,塔内有3个座A,B,C.开始A上有64个盘子,盘子大小不等,大的在下,小的在上边,有一个老和尚想把64个盘子从A移动到C座上,在移动的过程中始终保持大盘在下,小盘在上边。
/********************
功能:递归解决Hanoi塔问题
********************/
#include <stdio.h> void main() { void Hanoi(int n,char one,char two,char three); int m; printf("Input The Number Of The Diskes:\n"); scanf("%d",&m); printf("The Step Of Moving %d Diskes:\n",m); Hanoi(m,'A','B','C'); } void Hanoi(int n,char one,char two,char three) {//将n个盘从第一座移动到第二座再移动到第三座 void move(char x,char y); if(n==) move(one,three); else
{ Hanoi(n-,one,three,two); move(one,three); Hanoi(n-,two,one,three); }
} void move(char x,char y)
{ printf("%c-->%c\n",x,y); }
几年前做家教写的C教程(之四专讲了指针与汉诺塔问题)的更多相关文章
- 几年前做家教写的C教程(之一)
C语言学习宝典 首先让我们认识什么是C语言. C语言是一种计算机开发语言,是一种非常基础的开发语言.能够用C语言做很多事情.C语言是顺序执行的程序. 程序应该包括数据描述,数据操作. C语言的数据类型 ...
- 几年前做家教写的C教程(之五专讲结构体与文件操作)
C语言学习宝典(5) 结构体: 将不同类型的数据组合成为一个有机的整体,这个整体就是一个结构体. 例如: Struct student { Int name; Char sex; Float scor ...
- 几年前做家教写的C教程(之三专讲了递归和斐波那契)
C语言学习宝典(3) 数组: 一维数组的定义: 类型说明符 数组名[常量表达式] 例如: int a[10]; 说明:(1)数组名的命名规则和变量名相同,遵循标示符命名规则 (2)在定义数组时需要 ...
- 几年前做家教写的C教程(之二)
C语言学习宝典(2) 认识C语言中的运算符: (1)算术运算符 (+ - * / %) (2)关系运算符 (> < == >= <= != ) (3 ...
- Java-Runoob-高级教程-实例-方法:03. Java 实例 – 汉诺塔算法-un
ylbtech-Java-Runoob-高级教程-实例-方法:03. Java 实例 – 汉诺塔算法 1.返回顶部 1. Java 实例 - 汉诺塔算法 Java 实例 汉诺塔(又称河内塔)问题是源 ...
- 利用递归解决“汉诺塔的移动”问题(使用python来做的,其它语言也行)
有a,b,c三个柱子,n个盘子. def move(n, a, b, c): if n == 1: print('move', a, '-->', c) else: move(n-1, a, c ...
- Git学习记录 力做全网最强入门教程
目录 Git学习记录 力做全网最强入门教程 什么是GitHub? 什么是Git? Git的配置 Git的安装(只介绍windos操作系统下) Git的配置 至此我们的入门教程到此结束,更新中级教程要等 ...
- 做中学之Vim实践教程
做中学之Vim实践教程 Vim VIM是一个非常好的文本编辑器,很多专业程序员使用VIM编辑代码,即使以后你不编写程序,只要跟文本打交道,都应该学学VIM,可以浏览参考一下普通人的编辑利器--Vim这 ...
- UltraISO做U盘启动盘教程
用UltraISO做U盘启动盘教程 注意:制作前请先备份u盘内重要文件 vista.win7系统需要以管理员身份运行UltraISO,其他系统直接运行即可 1.打开UltraISO选择iso镜像文件 ...
随机推荐
- 【poj1742】 Coins
http://poj.org/problem?id=1742 (题目链接) 题意 给出n钟纸币,每种纸币面值为a[i],数量为c[i],问能够成多少数值小于等于m的数. Solution 先想到了容斥 ...
- Outlook2016 新装进阶操作指南
启动图片自动下载 键盘上同时按下WIN+R,弹出运行输入框,输入outlook,回车后打开Outlook 依次点击左上角文件,选项,信任中心,信任中心设置,自动下载 在窗口右边反勾选"在HT ...
- Python 面向对象 中高级
类成员: #字段 普通字段 属于对象 执行只能通过对象访问 静态字段 属于类 执行 既可以通过对象访问,也可以通过类访问 class Foo: def __init__(self,name): # 字 ...
- elk系列4之kibana图形化操作
preface 我们都搭建了ELK系统,且日志也能够正常收集的时候,那么就配置下kibana.我们可以通过kibana配置柱状图,趋势图,统计图,圆饼图等等各类图.下面就拿配置统计图和柱状图为例,结合 ...
- jQuery动态增删改查表格信息,可左键/右键提示
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 学习.Net的经典网站
学习.Net的经典网站 收藏 还不错推荐给大家 原文-- 名称:快速入门 地址:http://chs.gotdotnet.com/quickstart/ 描述:本站点是微软.NET技术的快速入门网站, ...
- eclipse中SSH三大框架环境搭建<二>
通过上一篇博客我们可以轻松搭建strtus2的环境,接下来由我来继续介绍spring的环境搭建以及spring注入的简单使用 相关链接:eclipse中SSH三大k框架环境搭建<一> ec ...
- ArcEngine地图窗口指定区域导出指定DPI多格式---delphi/C#实现
delphi/C#实现,其他语言稍微改下就行了.AE的编码各个语言都差不多,这里也没用到某一语言的特性. 函数特点: 1.可以精确导出指定范围的图形要素 2.支持多格式.TIF, .EMF,.GIF, ...
- WampServer 的phpmyadmin数据
WampServer首次安装的时候phpmyadmin的密码是为空 设置密码 1.安装成功后,通过 phpmyadmin 进入mysql,点击上面的 [用户] 菜单,在用户[root]主机[local ...
- log4net各种Filter使用【转】
log4net各种Filter使用[转] log4net里面的filter类常用的为: 1.DenyAllFilter 拒绝所用的日志输出 <filte ...