起泡法 求解。。。

东方石头 2012-11-08 08:05:55
本人学了C的起泡法后感觉很有意思,于是乎自己试着改错了,调试着学习一下,没想到遇见了一些问题,还请各位大侠的帮助。 程序的开始 重复部分我就省略不写了。

版本0:
int a[10];
int i,j,t;
printf("input the number:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++)
{
for(i=0;i<9-j;i++)
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
printf("the sorted number:");
for(i=0;i<10;i++)
printf("%d,",a[i]);
printf("\n");
}
这是书上的正解。。。输出一行结果 正确我也理解!

版本一:int a[10];
int i,j,t;
printf("input the number:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++)
{
for(i=0;i<9-j;i++)
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
printf("the sorted number:");
for(i=0;i<10;i++)
printf("%d,",a[i]);
printf("\n");
}
}
这样也能理解 把每一次的输出结果输出来。。
版本二:int a[10];
int i,j,t;
printf("input the number:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++)
{
for(i=0;i<9-j;i++)
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf("the sorted number:");
for(i=0;i<10;i++)
printf("%d,",a[i]);
printf("\n");
}
}
}
这个输入10个数后 输出的结果不理解 求详细的说明。
版本三:int a[10];
int i,j,t;
printf("input the number:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++)
{
for(i=0;i<9-j;i++)
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
printf("the sorted number:");
for(i=0;i<10;i++)
printf("%d,",a[i]);
printf("\n");
}
}
}
}
这个的输出结果 我直接无语了 不知道该怎么解释才行


以上的各个版本自己都试了一下 后两个不是很理解 求详细的解释 并比较以上的各个版本给出合理的解释!
本人一初学菜鸟 希望得到大侠的帮助 先谢谢了!






...全文
152 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
转角天边 2012-11-09
  • 打赏
  • 举报
回复
版本2和3只是把排序的过程也输出来了,有什么不理解
daiyier 2012-11-09
  • 打赏
  • 举报
回复
只要你的for循环很数据交换是对的,那就没问题,你的问题只是你对你输出的结果不理解而已,好好想想吧,就是从a[0]开始,相邻的两个书进行比较,如果前面的数字大于后面的数字,那就交换,继续往后比较,知道最后两个数字也比较了,这只是一轮,一共要比较9轮。
JiMoKuangXiangQu 2012-11-09
  • 打赏
  • 举报
回复
引用 7 楼 summybloom 的回复:
引用 2 楼 JiMoKuangXiangQu 的回复: 版本二: 经过简单测试,没有发现错误,下面是我的测试的版本二代码: C/C++ code12345678910111213141516171819202122232425262728293031#include <stdio.h> int main(void){ int a[10]/* = { 1, 5, 2, 100, -1,……
至少我测试了的几组数据是正确的. 我贴上来的代码里面,被注释掉的数据就是我测试的其中的一组.
东方石头 2012-11-08
  • 打赏
  • 举报
回复
引用 2 楼 JiMoKuangXiangQu 的回复:
版本二: 经过简单测试,没有发现错误,下面是我的测试的版本二代码: C/C++ code12345678910111213141516171819202122232425262728293031#include <stdio.h> int main(void){ int a[10]/* = { 1, 5, 2, 100, -1, 2, 3, 14, 4, -6 ……
版本二和版本三 你做出的结果正确吗 是10个数的排序吗???不可能吧 版本0和一是正确的 二和三也能运行 但结果不正确。。。
帅文浩 2012-11-08
  • 打赏
  • 举报
回复
用Tab调整代码的各行位置,或者在VC6.0或者VS上编好直接粘贴。
newtee 2012-11-08
  • 打赏
  • 举报
回复
把执行过程自己写一遍就理解了 大家都这么过来的
JiMoKuangXiangQu 2012-11-08
  • 打赏
  • 举报
回复
引用 1 楼 summybloom 的回复:
[quote=引用 楼主 summybloom 的回复:] 怎么发帖以后 统一的左对齐了 让这个程序不是那么的好看了 辛苦并麻烦各位大侠了!
这个,回复的框上面有一个鼠标放在上面就会弹出 C# 等等的一大串,选种所有代码,然后点C/C++的哪个就行了,然后"提交回复".
JiMoKuangXiangQu 2012-11-08
  • 打赏
  • 举报
回复
版本三也没发先错误 我测试的代码:
#include <stdio.h>

int main(void)
{
	int a[10]/* = { 1, 5, 2, 100, -1, 2, 3, 14, 4, -6 }*/;
	int i, j, t;

	printf("input the number:\n");
	for(i=0;i<10;i++)
		scanf("%d",&a[i]);
	printf("\n");

	for(j=0;j<9;j++)
	{
		for(i=0;i<9-j;i++)
		{
			if(a[i]>a[i+1])
			{
				t=a[i];
				a[i]=a[i+1];
				a[i+1]=t;
				printf("the sorted number:");
				for(i=0;i<10;i++)
					printf("%d,",a[i]);
				printf("\n");
			}
		}          
	}

	return 0;
}
JiMoKuangXiangQu 2012-11-08
  • 打赏
  • 举报
回复
版本二: 经过简单测试,没有发现错误,下面是我的测试的版本二代码:
#include <stdio.h>

int main(void)
{
	int a[10]/* = { 1, 5, 2, 100, -1, 2, 3, 14, 4, -6 }*/;
	int i, j, t;

	printf("input the number:\n");
	for(i = 0; i < 10; i++)
		scanf("%d", &a[i]);
	printf("\n");

	for (j = 0; j < 9; j++)
	{
		for (i = 0; i < 9-j; i++)
		{
			if (a[i] > a[i+1])
			{
				t = a[i];
				a[i] = a[i+1];
				a[i+1] = t;
			}
			printf("the sorted number:");
			for (i = 0; i < 10; i++)
				printf("%d,", a[i]);
			printf("\n");
		}
	}

	return 0;
}
东方石头 2012-11-08
  • 打赏
  • 举报
回复
[quote=引用 楼主 summybloom 的回复:] 怎么发帖以后 统一的左对齐了 让这个程序不是那么的好看了 辛苦并麻烦各位大侠了!
算法设计与分析 作者-王红梅 出版社-清华大学出版社 出版日期-07 1 2006. 共262页 目录 第 1 章 绪论 1 .1 算法的基本概念 1 . 1 . 1 为什么要学习算法 1 . 1 . 2 算法及其重要特性 1 . 1 . 3 算法的描述方法 1 . 1 . 4 算法设计的一般过程 1 . 1 . 5 重要的问题类型 1 .2 算法分析 1 . 2 . 1 渐进符号 1 . 2 . 2 最好、 最坏和平均情况 1 . 2 . 3 非递归算法的分析 1 . 2 . 4 递归算法的分析 1 . 2 . 5 算法的后验分析 1 .3 实验项目— — —求最大公约数 阅读材料— — —人工神经网络与 BP 算法 习题 1 第 2 章 NP 完全理论 2 .1 下界 2 . 1 . 1 平凡下界 2 . 1 . 2 判定树模型 2 . 1 . 3 最优算法 2 .2 算法的极限 2 . 2 . 1 易解问题与难解问题 2 . 2 . 2 实际问题难以求解的原因 2 . 2 . 3 不可解问题 2 .3 P 类问题和 NP 类问题 2 .3 .1 判定问题 2 .3 .2 确定性算法与 P 类问题 2 .3 .3 非确定性算法与 NP 类问题 2 .4 NP 完全问题 2 .4 .1 问题变换与计算复杂性归约 2 .4 .2 NP 完全问题的定义 2 .4 .3 基本的 NP 完全问题 2 .4 .4 NP 完全问题的计算机处理 2 .5 实验项目— — —SAT 问题 阅读材料— — —遗传算法 习题 2 第 3 章 蛮力法 3 .1 蛮力法的设计思想 3 .2 查找问题中的蛮力法 3 .2 .1 顺序查找 3 .2 .2 串匹配问题 3 .3 排序问题中的蛮力法 3 .3 .1 选择排序 3 .3 .2 起泡排序 3 .4 组合问题中的蛮力法 3 .4 .1 生成排列对象 3 .4 .2 生成子集 3 .4 .3 0 / 1 背包问题 3 .4 .4 任务分配问题 3 .5 图问题中的蛮力法 3 .5 .1 哈密顿回路问题 3 .5 .2 TSP 问题 3 .6 几何问题中的蛮力法 3 .6 .1 最近对问题 3 .6 .2 凸包问题 3 .7 实验项目— — —串匹配问题 阅读材料— — —蚁群算法 习题 3 第 4 章 分治法 4 .1 概述 4 .1 .1 分治法的设计思想 4 .1 .2 分治法的求解过程 4 .2 递归 4 .2 .1 递归的定义 4 .2 .2 递归函数的运行轨迹 4 .2 .3 递归函数的内部执行过程 4 .3 排序问题中的分治法 4 .3 .1 归并排序 4 .3 .2 快速排序 4 .4 组合问题中的分治法 4 .4 .1 最大子段和问题 4 .4 .2 棋盘覆盖问题 4 .4 .3 循环赛日程安排问题 4 .5 几何问题中的分治法 4 .5 .1 最近对问题 4 .5 .2 凸包问题 4 .6 实验项目— — —最近对问题 阅读材料— — —鱼群算法 习题 4 第 5 章 减治法 5 .1 减治法的设计思想 5 .2 查找问题中的减治法 5 .3 排序问题中的减治法 5 .4 组合问题中的减治法 5 .5 实验项目— — —8 枚硬币问题 阅读材料— — —粒子群算法 习题 5 第 6 章 动态规划法 6 .1 概述 6 .2 图问题中的动态规划法 6 .3 组合问题中的动态规划法 6 .4 查找问题中的动态规划法 6 .5 实验项目— — —最大子段和问题 阅读材料— — —文化算法 习题 6 第 7 章 贪心法 7 .1 概述 7 .2 图问题中的贪心法 7 .3 组合问题中的贪心法 7 .4 实验项目— — —霍夫曼编码 阅读材料— — —模拟退火算法 习题 7 第 8 章 回溯法 8 .1 概述 8 .2 图问题中的回溯法 8 .3 组合问题中的回溯法 8 .4 实验项目— — —0/ 1 背包问题 阅读材料— — —禁忌搜索算法 习题 8 第 9 章 分支限界法 9 .1 概述 9 .2 图问题中的分支限界法 9 .3 组合问题中的分支限界法 9 .4 实验项目— — —电路布线问题 阅读材料— — —免疫算法 习题 9 第 10 章 概率算法 10 .1 概述 10 .1 .1 概率算法的设计思想 10 .1 .2 随机数发生器 10 .2 舍伍德(Sherwood)型概率算法 10 .2 .1 快速排序 10 .2 .2 选择问题 10 .3 拉斯维加斯( Las Vegas)型概率算法 10 .3 .1 八皇后问题 10 .3 .2 整数因子分解问题 10 .4 蒙特卡罗(Monte Ca rlo)型概率算法 10 .4 .1 主元素问题 10 .4 .2 素数测试问题 10 .5 实验项目— — —随机数发生器 阅读材料— — —DNA 计算与 DNA 计算机 习题 10 第 11 章 近似算法 11 .1 概述 11 .1 .1 近似算法的设计思想 11 .1 .2 近似算法的性能 11 .2 图问题中的近似算法 11 .2 .1 顶点覆盖问题 11 .2 .2 TSP 问题 11 .3 组合问题中的近似算法 11 .3 .1 装箱问题 11 .3 .2 子集和问题 11 .4 实验项目— — —TSP 问题的近似算法 阅读材料— — —量子密码技术 习题 11 第 12 章 计算复杂性理论 12 .1 计算模型 12 .1 .1 图灵机的基本模型 12 .1 .2 k 带图灵机和时间复杂性 12 .1 .3 离线图灵机和空间复杂性 12 .2 P 类问题和 NP 类问题 12 .2 .1 非确定性图灵机 12 .2 .2 P 类语言和 NP 类语言 12 .3 NP 完全问题 12 .3 .1 多项式时间变换 12 .3 .2 Cook 定理 12 .4 实验项目— — —NP 完全问题树 阅读材料— — —算法优化策略
这本经典、畅销的数据结构教材详细介绍了数据抽象的基础知识,强调作为面向对象方法基础原理的规范和实施之间的区别。书中使用的软件工程原则和概念以及UML图便于增强学生的理解。 ◆ 详细介绍了数据抽象,强调规范和实现之间的区别 ◆ 广泛介绍了各种面向对象的编程技术 ◆ 重点是核心的数据结构,而不是非必要的C++语言语法 ◆ 说明了类和ADT在问题解决过程中的作用 ◆ 诠释了ADT的主要应用,如查找航班图、事件驱动的模拟和八皇后问题 ◆ 大部分章节中的例子都使用了标准模板库(STL) ◆ 介绍了递归 ◆ 附录中提供了基本的C++语法,以帮助学生从其他语言转换为C++ 第1章 数据抽象:墙 1 1.1 面向对象的概念 2 1.1.1 面向对象分析与设计 2 1.1.2 面向对象解决方案的特征 3 1.2 获得更好的解决方案 4 1.2.1 内聚 5 1.2.2 耦合 5 1.3 规范 6 1.3.1 操作契约 7 1.3.2 特殊情况 8 1.3.3 抽象 9 1.3.4 信息隐藏 10 1.3.5 最小且完整的接口 11 1.4 抽象数据类型 12 1.4.1 设计ADT 14 1.4.2 涉及其他ADT的ADT 17 1.5 ADT包 18 1.5.1 确定行为 18 1.5.2 指定数据和操作 19 1.5.3 ADT的模板接口 22 1.5.4 使用ADT包 24 C++片段1 C++类 29 C1.1 待解决的问题 30 C1.1.1 私有数据字段 31 C1.1.2 构造函数和析构函数 32 C1.1.3 方法 32 C1.1.4 防止编译错误 33 C1.2 实现解决方案 34 C1.3 模板 35 C1.4 继承 37 C1.4.1 基类和派生类 38 C1.4.2 重写基类方法 40 C1.5 虚方法和抽象类 42 C1.5.1 虚方法 42 C1.5.2 抽象类 43 第2章 递归:镜子 45 2.1 递归解决方案 46 2.2 返回值的递归 48 2.2.1 递归值函数:n的阶乘 49 2.2.2 箱式跟踪 52 2.3 执行动作的递归 55 2.4 递归与数组 62 2.4.1 逆置数组项 63 2.4.2 折半查找 64 2.4.3 查找数组中的最大值 68 2.4.4 查找数组中第k个最小值 69 2.5 组织数据 71 2.6 更多示例 75 2.6.1 Fibonacci数列(兔子繁殖) 75 2.6.2 组织游行队伍 78 2.6.3 从n个事物中选出k个 79 2.7 递归和效率 81 第3章 基于数组的实现 91 3.1 办法 92 3.1.1 核心方法 93 3.1.2 使用大小固定的数组 93 3.2 ADT包的基于数组的实现 94 3.2.1 头文件 95 3.2.2 定义核心方法 96 3.2.3 测试核心方法 98 3.2.4 实现更多方法 101 3.2.5 删除项的方法 103 3.2.6 测试 106 3.3 在实现中使用递归 107 3.3.1 getIndexOf方法 107 3.3.2 getFrequencyOf方法 108 C++片段2 指针、多态和内存分配 113 C2.1 变量的内存分配和方法的前期绑定 114 C2.2 需要解决的问题 115 C2.3 指针与程序的自由存储 116 C2.3.1 释放内存 118 C2.3.2 避免内存泄漏 119 C2.3.3 避免悬挂指针 122 C2.4 虚方法和多态 124 C2.5 数组的动态分配 126 第4章 基于链表的实现 129 4.1 预备知识 130 4.2 ADT包的基于链表的实现 133 4.2.1 头文件 134 4.2.2 定义核心方法 135 4.2.3 实现更多方法 138 4.3 在基于链表的实现中使用递归 143 4.4 测试多个ADT实现 145 4.5 比较基于数组的实现和基于链表的实现 148 第5章 作为问题求解技术的递归 155 5.1 定义语言 156 5.1.1 语法知识基础 156 5.1.2 两种简单的语言 158 5.2 代数表达式 160 5.2.1 代数表达式的类型 160 5.2.2 前缀表达式 162 5.2.3 后缀表达式 166 5.2.4 完全括号化表达式 168 5.3 回溯 168 5.3.1 查找航线 168 5.3.2 八皇后问题 173 5.4 递归和数学归纳法的关系 179 5.4.1 递归阶乘函数的正确性 179 5.4.2 Hanoi塔的工作量 180 第6章 栈 189 6.1 ADT栈 190 6.1.1 在设计解决方案期间开发ADT 190 6.1.2 ADT栈的规范 192 6.2 栈的简单应用 197 6.2.1 检查括号匹配 197 6.2.2 识别语言中的字符串 199 6.3 栈在代数表达式中的应用 200 6.3.1 计算后缀表达式 201 6.3.2 中缀表达式与后缀表达式的等价转换 202 6.4 使用栈查找航班图 205 6.5 栈和递归的关系 212 C++片段3 异常 221 C3.1 背景知识 222 C3.2 断言 223 C3.3 抛出异常 224 C3.4 处理异常 227 C3.4.1 多个catch块 228 C3.4.2 未捕获的异常 229 C3.5 程序员定义的异常类 232 第7章 实现ADT栈 235 7.1 基于数组的实现 236 7.2 基于链表的实现 239 7.3 在实现中使用异常 243 第8章 列表 247 8.1 指定ADT列表 248 8.2 使用列表操作 252 8.3 ADT列表的模板接口 255 第9章 实现列表 259 9.1 基于数组的ADT列表实现 260 9.1.1 头文件 261 9.1.2 实现文件 262 9.2 基于链表的ADT列表实现 266 9.2.1 头文件 266 9.2.2 实现文件 268 9.2.3 在LinkedList的方法中使用递归 275 9.3 两种实现的比较 279 第10章 算法的效率 283 10.1 什么是好的解决方案 284 10.2 测量算法的效率 285 10.2.1 算法的执行时间 286 10.2.2 算法增长率 287 10.2.3 分析与大O表示法 288 10.2.4 正确分析问题 291 10.2.5 查找算法的效率 293 第11章 排序算法及其效率 299 11.1 基本排序算法 300 11.1.1 选择排序 300 11.1.2 起泡排序 303 11.1.3 插入排序 305 11.2 较快排序算法 307 11.2.1 归并排序 307 11.2.2 快速排序 312 11.2.3 基数排序 319 11.3 各种排序算法的比较 321 C++片段4 类关系和重用 325 C4.1 回顾继承 326 C4.1.1 类的公有、私有和受保护部分 331 C4.1.2 公有、私有和受保护继承 332 C4.1.3 is-a和as-a关系 333 C4.2 包含:has-a关系 334 C4.3 回顾抽象基类 335 第12章 有序表及其实现 339 12.1 指定ADT有序表 340 12.1.1 ADT有序表的模板接口 342 12.1.2 使用有序表的操作 343 12.2 基于链表的实现 344 12.2.1 头文件 344 12.2.2 实现文件 345 12.2.3 基于链表的实现的效率 348 12.3 使用ADT列表的实现 348 12.3.1 包含 349 12.3.2 公有继承 352 12.3.3 私有继承 356 第13章 队列和优先队列 363 13.1 ADT队列 364 13.2 ADT队列的简单应用 367 13.2.1 读取字符串 367 13.2.2 识别回文 368 13.3 ADT优先队列 369 13.4 应用:模拟 371 13.5 面向位置和面向值的ADT 379 第14章 队列和优先队列的实现 387 14.1 ADT队列的实现 388 14.1.1 使用ADT列表的实现 388 14.1.2 基于链表的实现 390 14.1.3 基于数组的实现 394 14.1.4 比较实现 399 14.2 ADT优先队列的实现 400 C++片段5 运算符重载和友元访问 405 C5.1 重载运算符 406 C5.1.1 重载=进行赋值 408 C5.1.2 重载+进行连接 410 C5.2 友元访问和<<的重载 411 第15章 树 415 15.1 术语 416 15.1.1 树的类型 417 15.1.2 树的高度 419 15.1.3 满二叉树、完全二叉树和平衡二叉树 421 15.1.4 二叉树的最大和最小高度 422 15.2 ADT二叉树 425 15.2.1 二叉树的遍历 425 15.2.2 二叉树的操作 428 15.2.3 ADT二叉树的模板接口 430 15.3 ADT二叉查找树 432 15.3.1 二叉查找树的操作 433 15.3.2 查找二叉查找树 434 15.3.3 创建二叉查找树 435 15.3.4 遍历二叉查找树 437 15.3.5 二叉查找树操作的效率 437 第16章 树的实现 443 16.1 二叉树中的节点 444 16.1.1 基于数组的表示 444 16.1.2 基于链表的表示 446 16.2 ADT二叉树基于链表的实现 447 16.2.1 头文件 447 16.2.2 实现 450 16.3 ADT二叉查找树基于链表的实现 458 16.3.1 ADT二叉查找树操作的算法 458 16.3.2 BinarySearchTree类 469 16.4 在文件中保存二叉查找树 471 16.5 树排序 474 16.6 一般树 474 C++片段6 迭代器 479 C6.1 迭代器 480 C6.1.1 常见的迭代器操作 481 C6.1.2 使用迭代器操作 482 C6.1.3 实现迭代器 483 C6.2 迭代器的高级功能 485 第17章 堆 489 17.1 ADT堆 490 17.2 堆的基于数组的实现 493 17.2.1 基于数组的堆操作的算法 494 17.2.2 实现 498 17.3 ADT优先队列的堆实现 502 17.4 堆排序 504 第18章 字典及其实现 511 18.1 ADT字典 512 18.2 可能的实现 517 18.2.1 ADT字典的基于数组的有序实现 519 18.2.2 ADT字典的二叉查找树实现 521 18.3 选择实现 523 18.4 散列 529 18.4.1 散列函数 532 18.4.2 解决冲突 534 18.4.3 散列的效率 539 18.4.4 如何确立散列函数 542 18.4.5 字典遍历:散列的低效操作 543 18.4.6 使用散列和分离链实现ADT字典 544 第19章 平衡查找树 551 19.1 平衡查找树 552 19.2 2-3树 553 19.2.1 遍历2-3树 555 19.2.2 查找2-3树 556 19.2.3 在2-3树中插入数据 558 19.2.4 从2-3树中删除数据 562 19.3 2-3-4树 567 19.3.1 查找和遍历2-3-4树 569 19.3.2 在2-3-4树中插入数据 569 19.3.3 从2-3-4树中删除数据 572 19.4 红-黑树 573 19.4.1 查找和遍历红-黑树 575 19.4.2 红-黑树的插入和删除 575 19.5 AVL树 577 第20章 图 583 20.1 术语 584 20.2 将图作为ADT 587 20.3 图的遍历 591 20.3.1 深度优先查找 592 20.3.2 广度优先查找 593 20.4 图的应用 595 20.4.1 拓扑排序 595 20.4.2 生成树 598 20.4.3 最小生成树 600 20.4.4 最短路径 603 20.4.5 回路 606 20.4.6 一些复杂问题 608 第21章 外部存储中的数据处理 615 21.1 了解外部存储 616 21.2 排序外部文件的数据 618 21.3 外部字典 624 21.3.1 确定外部文件的索引 626 21.3.2 外部散列 629 21.3.3 B-树 632 21.3.4 遍历 639 21.3.5 多索引 640 C++片段7 标准模板库 647 C7.1 STL容器 648 C7.1.1 STL容器适配器 649 C7.1.2 顺序容器 650 C7.1.3 关联容器 654 C7.2 STL算法 657 附录A 回顾C++基础 659 附录B 编程中的重要主题 697 附录C 统一建模语言 719 附录D 软件生命周期 727 附录E 数学归纳法 733 附录F 算法验证 737 附录G C++文件基础 741 附录H C++头文件和标准函数 751 附录I C++文档系统 755 附录J ASCII字符代码 757 附录K 针对Java编程人员的C++知识 759 附录L 针对Python编程人员的C++知识 767
内容简介 本书全面介绍了应用C语言进行开发的各种技术和技巧,全书共分12章,内容包括基础知识、指针、数据结构、算法、数学应用、文件操作、库函数应用、图形图像、系统调用、加解密与安全性、游戏、综合应用等。全书共提供300个实例,每个实例都突出了其实用性。   本书既可作为C程序的初学者学习用书,也可作为程序开发人员、相关培训机构老师和学生的参考用书。 第1章 基础知识 1 1.1 进制转换 2 实例001 十进制转换为十六进制 2 实例002 十进制转换为二进制 3 实例003 n进制转换为十进制 4 实例004 以IP地址形式输出 5 1.2 条件判断 6 实例005 3个数由小到大排序 6 实例006 a2+b2 8 实例007 整倍数 9 实例008 判断闰年 10 实例009 阶梯问题 11 实例010 评定成绩 12 实例011 整数加减法练习 13 实例012 模拟ATM机界面程序 14 1.3 多重循环打印图形 17 实例013 用#打印三角形 17 实例014 用*打印图形 18 实例015 绘制余弦曲线 20 实例016 打印乘法口诀表 21 实例017 打印杨辉三角 22 1.4 循环的数学应用 23 实例018 序列求和 23 实例019 简单的级数运算 24 实例020 用while语句求n! 25 实例021 特殊等式 26 实例022 求一个正整数的所有因子 27 实例023 一元钱兑换方案 28 实例024 对调数问题 29 实例025 数平方和运算的问题 30 1.5 数组 31 实例026 逆序存放数据 32 实例027 相邻元素之和 33 实例028 选票统计 34 实例029 模拟比赛打分 35 实例030 对调最大与最小数位置 36 实例031 二维数组行列互换 37 实例032 使用数组统计学生成绩 39 实例033 打印5阶幻方 40 1.6 字符和字符串操作 41 实例034 统计各种字符个数 41 实例035 字符串倒置 43 实例036 字符串替换 44 实例037 回文字符串 45 实例038 不用strcat连接两个字符串 46 实例039 删除字符串中连续字符 47 实例040 字符升序排列 49 实例041 在指定的位置后插入字符串 50 1.7 函数 51 实例042 求字符串中字符的个数 51 实例043 递归解决年龄问题 53 实例044 求学生的平均身高 54 实例045 分数计算器程序 55 1.8 趣味计算 57 实例046 加油站加油 57 实例047 小球下落问题 58 实例048 灯塔数量 59 实例049 买苹果问题 60 实例050 猴子吃桃 61 实例051 老师分糖果 62 实例052 新同学的年龄 63 实例053 百钱百鸡问题 64 实例054 彩球问题 65 实例055 求总数问题 66 1.9 宏定义与位运算 67 实例056 用宏定义实现值互换 67 实例057 普通的位运算 69 实例058 循环移位 70 第2章 指针 73 2.1 指针变量 74 实例059 使用指针实现数据交换 74 实例060 使用指针实现整数排序 75 实例061 指向结构体变量的指针 76 2.2 指针与数组 77 实例062 使用指针输出数组元素 77 实例063 用指针实现逆序存放数组元素值 79 实例064 输出二维数组有关值 80 实例065 输出二维数组任一行任一列值 81 实例066 使用指针查找数列中最大值、最小值 83 实例067 用指针数组构造字符串数组 84 实例068 将若干字符串按照字母顺序输出 85 2.3 指针与函数 86 实例069 用指向函数的指针比较大小 86 实例070 使用返回指针的函数查找最大值 88 实例071 使用指针函数求学生成绩 89 实例072 寻找指定元素的指针 90 实例073 寻找相同元素的指针 91 2.4 字符串与指针 92 实例074 使用指针实现字符串复制 92 实例075 字符串的连接 94 实例076 字符串插入 95 实例077 字符串的匹配 96 2.5 指向指针的指针 97 实例078 使用指针的指针输出字符串 98 实例079 实现输入月份号输出该月份英文名 99 实例080 使用指向指针的指针对字符串排序 100 第3章 数据结构 103 3.1 结构体 104 实例081 结构体简单应用 104 实例082 找最高分 106 实例083 平均成绩 108 实例084 比较计数 109 实例085 信息查询 110 实例086 计算开机时间 111 3.2 链表 112 实例087 创建单向链表 112 实例088 创建双向链表 114 实例089 创建循环链表 117 实例090 双链表逆置 118 实例091 双链表逆序输出 120 实例092 约瑟夫环 122 实例093 创建顺序表并插入元素 123 实例094 向链表中插入结点 125 实例095 从链表中删除结点 126 实例096 合并两个链表 129 实例097 单链表就地逆置 130 实例098 头插入法建立单链表 132 3.3 栈和队列 133 实例099 应用栈实现进制转换 133 实例100 用栈设置密码 135 实例101 栈实现行编辑程序 138 实例102 括号匹配检测 141 实例103 用栈及递归计算多项式 143 实例104 链队列 144 实例105 循环缓冲区问题 147 3.4 串与广义表 149 实例106 串的模式匹配 149 实例107 简单的文本编辑器 151 实例108 广义表的存储 154 实例109 广义表的复制 156 3.5 二叉树 160 实例110 二叉树的递归创建 160 实例111 二叉树的遍历 162 实例112 线索二叉树的创建 164 实例113 二叉排序树 166 实例114 哈夫曼编码 167 3.6 图及图的应用 169 实例115 图的邻接表存储 170 实例116 图的深度优先搜索 172 实例117 图的广度优先搜索 175 实例118 Prim算法求最小生成树 177 实例119 迪杰斯特拉算法 180 第4章 算法 183 4.1 简单问题算法 184 实例120 任意次方后的最后三位 184 实例121 计算π的近似值 184 实例122 小于500的所有勾股数 185 实例123 能否组成三角形 186 实例124 偶数拆分 187 实例125 乘积大于和的数 188 实例126 求各位上和为5的数 189 实例127 计算某日是该年第几天 190 4.2 排序算法 191 实例128 直接插入排序 192 实例129 希尔排序 193 实例130 起泡排序 194 实例131 快速排序 195 实例132 选择排序 197 实例133 归并排序 198 4.3 查找算法 199 实例134 顺序查找 199 实例135 二分查找 201 实例136 分块查找 202 实例137 哈希查找 203 4.4 定理与猜想 206 实例138 斐波那契数列 206 实例139 角谷猜想 207 实例140 哥德巴赫猜想 208 实例141 四方定理 209 实例142 尼科彻斯定理 210 4.5 逻辑推理与判断 211 实例143 魔术师的秘密 211 实例144 婚礼上的谎言 212 实例145 谁讲了真话 213 实例146 黑纸与白纸 215 实例147 判断坏球 216 第5章 数学应用 221 5.1 素数问题 222 实例148 求100~200的素数 222 实例149 可逆素数 223 实例150 回文素数 224 5.2 整数趣题 225 实例151 阿姆斯特朗数 225 实例152 特殊的完全平方数 226 实例153 求1000以内的完全数 227 实例154 三重回文数 228 实例155 亲密数 229 实例156 自守数 230 实例157 满足abcd=(ab+cd)2的数 231 实例158 神奇的数字6174 232 实例159 一数三平方 233 5.3 数学问题求解 234 实例160 求等差数列 234 实例161 求整数的绝对值 235 实例162 正弦、余弦、正切值 236 实例163 自然对数的底e的计算 237 实例164 最大公约及最小公倍数 238 实例165 求解二元一次不定方程 239 实例166 二分法求解方程 241 实例167 牛顿迭代法解方程的根 242 5.4 矩阵 243 实例168 打印特殊方阵 243 实例169 求3×3矩阵对角元素之和 244 实例170 矩阵的加法运算 245 实例171 矩阵的乘法运算 246 实例172 打印n阶螺旋方阵 247 5.5 生活中的数学 249 实例173 求车运行速度 249 实例174 卖西瓜 250 实例175 打渔晒网问题 251 实例176 水池注水问题 252 实例177 捕鱼和分鱼问题 253 实例178 递归解分鱼问题 254 实例179 巧分苹果 255 第6章 文件操作 257 6.1 文件读写操作 258 实例180 读取磁盘文件 258 实例181 将数据写入磁盘文件 259 实例182 格式化读写文件 260 实例183 成块读写操作 262 实例184 随机读写文件 263 实例185 以行为单位读写文件 265 6.2 文件内容操作 266 实例186 复制文件内容到另一文件 267 实例187 错误处理 268 实例188 合并两个文件信息 270 实例189 统计文件内容 271 6.3 文件的创建、查找及删除 272 实例190 创建文件 273 实例191 创建临时文件 274 实例192 查找文件 275 实例193 重命名文件 275 实例194 删除文件 276 实例195 删除文件中的记录 277 6.4 文件相关操作 279 实例196 关闭打开的所有文件 279 实例197 同时显示两个文件的内容 281 实例198 显示目录内同类型文件 282 实例199 文件分割 284 实例200 文件加密 286 第7章 库函数调用 289 7.1 时间转换和操作函数 290 实例201 固定格式输出当前时间 290 实例202 当前时间转换 291 实例203 显示程序运行时间 292 实例204 获取DOS系统时间 293 实例205 设置DOS系统日期 293 实例206 设置DOS系统时间 294 实例207 读取并设置bios的时钟 295 7.2 数学函数 296 实例208 求相对的最小整数 296 实例209 求直角三角形斜边 297 实例210 小数分离 298 实例211 求任意数n次幂 299 7.3 字符串、字符函数 300 实例212 函数实现字符匹配 300 实例213 任意大写字母转小写 301 实例214 字符串复制到指定空间 302 实例215 查找位置信息 303 7.4 其他函数 304 实例216 复制当前目录 304 实例217 产生惟一文件 305 实例218 不同亮度显示 306 实例219 字母检测 307 实例220 建立目录 308 实例221 删除目录 309 实例222 数字检测 310 实例223 快速分类 311 实例224 访问系统temp中的文件 313 实例225 设置组合键 314 第8章 图形图像 317 8.1 基本图形 318 实例226 绘制直线 318 实例227 绘制表格 319 实例228 绘制矩形 321 实例229 绘制椭圆 322 实例230 绘制圆弧线 323 实例231 绘制扇区 324 实例232 绘制空心圆 325 实例233 画一个箭头 326 实例234 绘制正弦曲线 327 实例235 绘制彩带 329 8.2 色彩填充及使用 330 实例236 黄色网格填充的椭圆 330 实例237 红色间隔点填充多变形 332 实例238 绘制五角星 333 实例239 颜色变换 334 实例240 彩色扇形 335 实例241 输出不同字体 336 8.3 屏幕操作 338 实例242 相同图案的输出 338 实例243 设置文本及背景颜色 340 实例244 简单的键盘画图程序 342 实例245 鼠标绘图 344 实例246 艺术清屏 346 8.4 图形动画 349 实例247 图形时钟 349 实例248 火箭发射 351 实例249 运动的问候语 352 实例250 正方形下落 353 实例251 跳动的小球 354 实例252 旋转的五角星 356 实例253 变化的同心圆 358 实例254 小球碰撞 359 8.5 图形综合实例 361 实例255 圆形精美图案 361 实例256 直线精美图案 362 实例257 心形图案 363 实例258 钻石图案 365 实例259 雪花 366 实例260 直线、正方形综合 368 第9章 系统相关 371 9.1 时间和日期 372 实例261 获取当前日期与时间 372 实例262 获取当地日期与时间 373 实例263 格林尼治平时 373 实例264 设置系统日期 374 9.2 BIOS操作 376 实例265 获取BIOS常规内存容量 376 实例266 读/写BIOS计时器 377 实例267 获取CMOS密码 377 9.3 硬件、软件中断 379 实例268 获取Ctrl+Break键消息 379 实例269 鼠标中断 380 实例270 设置文本显示模式 382 9.4 磁盘相关 385 实例271 获取当前磁盘空间信息 385 实例272 备份/恢复硬盘分区表 387 实例273 硬盘逻辑锁 390 9.5 信息获取 392 实例274 显卡类型测试 392 实例275 获取系统配置信息 393 实例276 获取环境变量 395 实例277 获取寄存器信息 396 9.6 其他 397 实例278 恢复内存文本 397 实例279 绘制立体窗口 399 实例280 控制扬声器声音 401 实例281 获取Caps Lock键状态 402 实例282 删除多级目录 403 第10章 加解密与安全性 407 10.1 程序保护 408 实例283 自毁程序 408 实例284 明码序列号保护 409 实例285 非明码序列号保护 410 10.2 加密解密 412 实例286 MD5加密 412 实例287 RSA加密 419 实例288 DES加密 420 实例289 RC4加密 424 实例290 SHA1加密 427 实例291 恺撒加密 432 第11章 游戏 435 实例292 猜数字游戏 436 实例293 24点游戏 438 实例294 贪吃蛇游戏 440 实例295 五子棋游戏 444 实例296 弹力球游戏 450 第12章 综合应用 457 实例297 学生管理系统 458 实例298 火车订票系统 465 实例299 通信录管理系统 472 实例300 图书管理系统 476 技术要点对应实例位置 487

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧