当前位置:首页 » 编程语言 » c语言入门经典案例
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言入门经典案例

发布时间: 2022-10-02 22:12:08

㈠ 经典c语言程序例子

题目01:在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同的单词。

(1)c语言入门经典案例扩展阅读:

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

㈡ 初学编程100个代码( C语言编程)

、学代码:前提是你的复有⼀个⽐较系统的学习.认真完成每⼀个课程中的案例.

2、读代码:分制两步⾛:前期能读懂⾃⼰写的代码. 后期能读懂他⼈写的代码和⼤致的知道底层的某些源码的含义.多去看开发⽂档(开发⽂档建议使⽤官⽅提供的英⽂版、不要使⽤中⽂⾃⼰害⾃⼰)

㈢ c语言基础知识入门书籍有哪些

1、《啊哈C语言》


这本书在c语言界的殿堂级宝藏,可谓是经典之中的经典。纵向上,从hello world衍生出计算机的发展历程,横向上不断深入,层层拔高。在短短的100多页之内,几乎就手把手教写了stdio.h stdlib.h string.h当中大部分例程,实现了二分查找、快速排序、二叉树、哈希表这些重要的数据结构和算法。

㈣ 从零开始学C语言的目 录

第1篇 C语言入门
第1章 C语言入门基础 14
1.1 计算机语言的演变 14
1.1.1 机器语言 14
1.1.2 汇编语言 14
1.1.3 高级语言 14
1.1.4 面向对象或面向问题的高级语言 15
1.2 数制、数制转换与存储 15
1.2.1 数制 15
1.2.2 数制的转换 16
1.2.3 计算机中数据的存储 17
1.3 程序设计思想——算法 18
1.3.1 算法的概念 18
1.3.2 算法的特点 18
1.3.3 算法的表示方法 19
1.3.4 算法分析 21
1.4 C语言的发展简史和特点 21
1.4.1 C语言的诞生与发展 22
1.4.2 C语言的特点 23
1.5 本章小结 24
1.6 习题 24
第2章 认识C语言程序 25
2.1 C语言程序的结构特征 25
2.2 C语言程序的书写风格 27
2.3 C语言程序的开发过程 28
2.4 Visual C++集成开发环境 29
2.4.1 熟悉Visual C++ 6.0集成开发环境 30
2.4.2 C语言在Visual C++ 6.0的开发过程 31
2.5 用Visual C++运行一个C程序 32
2.6 本章小结 33
2.7 习题 33
第2篇 C语言基础
第3章 常量、变量与标识符 34
3.1 标识符 34
3.1.1 标识的命名 34
3.1.2 保留字 34
3.2 常量 35
3.2.1 直接常量 35
3.2.2 符号常量 35
3.3 变量 36
3.3.1 变量的定义 36
3.3.2 变量的初始化 36
3.4 变量的初始化 37
3.5 本章小结 37
3.6 习题 37
第4章 数据类型 38
4.1 C语言中的数据类型 38
4.1.1 基本数据类型 38
4.1.2 构造数据类型 39
4.1.3 指针数据类型 39
4.1.4 空类型 39
4.2 整型数据 39
4.2.1 整型常量 40
4.2.2 整型变量 40
4.3 实数型数据 41
4.3.1 实数型常量 42
4.3.2 实数型变量 42
4.4 字符型数据 43
4.4.1 字符型常量 43
4.4.2 字符型变量 44
4.5 数值型数据间的混合运算 46
4.5.1 自动类型转换 46
4.5.2 强制类型转换 47
4.6 本章小结 49
4.7 习题 49
第5章 运算符及其表达式 50
5.1 算术运算符及算术表达式 50
5.1.1 算术运算符 50
5.1.2 算术表达式 52
5.2 赋值运算符及赋值表达式 52
5.2.1 赋值运算符 53
5.2.2 赋值表达式 54
5.3 关系运算符及关系表达式 55
5.3.1 关系运算符 55
5.3.2 关系表达式 56
5.4 逻辑运算符及逻辑表达式 57
5.4.1 逻辑运算符 57
5.4.2 逻辑运算规则 58
5.4.3 逻辑表达式 59
5.5 条件运算符及条件表达式 61
5.5.1 条件运算符 61
5.5.2 条件表达式 62
5.6 逗号运算符及逗号表达式 65
5.6.1 逗号运算符 65
5.6.2 逗号表达式 66
5.7 位运算符 67
5.7.1 位逻辑运算符 67
5.7.2 移位运算符 69
5.7.3 位自反赋值运算符 70
5.8 位运算符 71
5.9 本章小结 72
5.10 习题 72
第6章 输入与输出 73
6.1 C语句概述 73
6.1.1 流程控制语句 73
6.1.2 函数调用语句 77
6.1.3 表达式语句 77
6.1.4 空语句 77
6.1.5 复合语句 77
6.2 输入与输出函数 78
6.2.1 格式输出函数 78
6.2.2 格式输入函数 81
6.2.3 字符输入与字符输出函数 85
6.3 整型数据的输入与输出 87
6.3.1 整型数据的输出 87
6.3.2 整型数据的输入 89
6.4 浮点型数据的输入与输出 89
6.5 本章小结 90
6.6 习题 90
第7章 顺序结构与选择结构 91
7.1 顺序结构程序设计 91
7.2 选择结构程序设计 93
7.2.1 if语句 93
7.2.2 switch语句 98
7.3 应用举例 101
7.4 本章小结 104
7.5 习题 104
第8章 循环结构程序设计 105
8.1 while语句 105
8.2 do…while语句 107
8.3 for语句 110
8.3.1 for循环结构 110
8.3.2 for循环语句的嵌套 113
8.4 总结应用 115
8.4.1 几种循环的比较 115
8.4.2 循环语句的嵌套 116
8.4.3 应用举例 118
8.5 本章小结 121
8.6 习题 121
第9章 结构语句的转移 122
9.1 break语句 122
9.1.1 跳出switch结构 122
9.2 跳出循环结构 124
9.2.1 问题1 124
9.2.2 问题2 125
9.3 continue语句 126
9.4 goto语句 127
9.5 本章小结 128
9.6 习题 128
第3篇 C语言进阶
第10章 数组 129
10.1 数组的概述 129
10.2 一维数组 130
10.2.1 一维数组的定义 130
10.2.2 一维数组的初始化 131
10.2.3 一维数组的引用 132
10.2.4 一维数组的程序举例 133
10.3 二维数组 139
10.3.1 二维数组的定义 139
10.3.2 二维数组的初始化 140
10.3.3 二维数组的引用 142
10.3.4 数组的程序举例 144
10.4 本章小结 146
10.5 习题 146
第11章 字符数组 147
11.1 字符数组的定义 147
11.2 字符数组的初始化 147
11.3 字符数组的引用 148
11.4 字符数组与字符串的关系 148
11.5 字符数组的输入与输出 149
11.6 字符串处理函数 150
11.6.1 输入字符串函数gets 151
11.6.2 输出字符串函数puts 151
11.6.3 字符串测长度函数strlen 151
11.6.4 字符串比较函数strcmp 151
11.6.5 字符串复制函数strcpy和strncpy 152
11.6.6 字符串连接函数strcat 152
11.7 应用举例 153
11.8 本章小结 158
11.9 习题 158
第12章 函数 159
12.1 函数的初步认识 159
12.2 函数定义 161
12.2.1 无参函数定义 161
12.2.2 有参函数定义 162
12.2.3 空函数定义 162
12.3 函数参数及返回值 163
12.3.1 函数的参数 163
12.3.2 函数的返回值 165
12.4 函数的参数传递 166
12.4.1 函数参数的数值传递 166
12.4.2 函数参数的地址传递 167
12.5 应用举例 168
12.6 本章小结 170
12.7 习题 170
第13章 函数的调用 171
13.1 函数调用的一般形式 171
13.2 函数调用的形式 172
13.3 被调用函数的声明与函数原型 173
13.4 函数的嵌套调用和递归调用 176
13.4.1 函数的嵌套调用 176
13.4.2 函数的递归调用 177
13.5 变量作用域 178
13.5.1 变量作用域和生存期 178
13.5.2 局部变量和全局变量 178
13.5.3 变量存储类别 181
13.6 编译预处理 185
13.6.1 宏定义 186
13.6.2 文件包含处理 189
13.6.3 条件编译 190
13.7 本章小结 191
13.8 习题 191
第14章 指针操作 192
14.1 指针与地址 192
14.2 指针和指针变量 192
14.2.1 指针变量的定义 193
14.2.2 指针变量的引用 194
14.2.3 指针的运算 196
14.3 指针和数组 199
14.3.1 数组的指针和指向数组的指针变量 200
14.3.2 指针数组和指向指针的指针 203
14.3.3 指向字符串的指针 206
14.3.4 数组名作为函数参数 207
14.4 指针和函数 211
14.4.1 函数的指针和指向函数的指针变量 211
14.4.2 用指向函数的指针作为函数参数 212
14.4.3 指针数组作为函数参数 218
14.4.4 返回指针值的函数 219
14.4.5 字符串指针作为函数参数 220
14.5 本章小结 221
14.6 习题 221
第15章 结构体 222
15.1 结构体类型定义 222
15.1.1 结构体类型的说明 222
15.1.2 结构体类型的定义 222
15.2 结构体变量的定义与引用 224
15.2.1 结构体变量的定义与初始化 224
15.2.2 结构体变量的引用 226
15.3 结构数组 229
15.3.1 结构数组的定义 229
15.3.2 结构数组的引用 230
15.4 结构体指针 232
15.4.1 结构体指针变量的定义 232
15.4.2 结构体指针变量的引用 233
15.5 链表 236
15.5.1 链表概述 236
15.5.2 单链表建立 238
15.5.3 单链表简单操作 242
15.6 本章小结 251
15.7 习题 251
第16章 共用体 252
16.1 共用体类型定义 252
16.1.1 定义共用体 252
16.1.2 共用体的存储 253
16.2 共用体类型变量、数组和指针变量的定义 254
16.2.1 先定义共用体,再定义共用体变量、数组及指针变量 254
16.2.2 定义共用体的同时定义共用体变量、数组及指针变量 254
16.2.3 定义共用体变量、数组及指针变量时省略共用体名 255
16.3 共用体类型变量、数组和指针变量的引用 255
16.4 共用体应用举例 257
16.5 枚举类型 259
16.5.1 枚举类型的定义 259
16.5.2 枚举类型变量的赋值和引用 260
16.6 用typedef定义数据类型 262
16.7 本章小结 266
16.8 习题 266
第17章 文件 267
17.1 文件概述 267
17.1.1 文件名 267
17.1.2 文件的类型 268
17.2 文件类型指针 268
17.3 文件的打开与关闭 270
17.3.1 文件打开函数fopen() 270
17.3.2 文件关闭函数fclose() 272
17.4 文件的读写操作 272
17.4.1 字符读写函数 272
17.4.2 字符串读写函数 275
17.4.3 数据块读写函数 278
17.4.4 格式数据读写函数 281
17.5 文件的定位 282
17.5.1 文件头定位函数rewind() 282
17.5.2 文件随机定位函数fseek() 283
17.5.3 测试当前位置函数ftell() 284
17.6 文件的检测 285
17.6.1 文件末尾检测函数feof() 285
17.6.2 文件读写出错检测函数ferror() 286
17.6.3 清除文件末尾和出错标志函数clearerr() 287
17.7 本章小结 287
17.8 习题 287
第4篇 案例实战
第18章 学生成绩管理系统设计 288
18.1 学生成绩管理系统功能 288
18.2 功能模块的描述 288
18.2.1 数据结构 288
18.2.2 main()主函数 289
18.2.3 score *creatlink()创建动态链表 289
18.2.4 void print(score *head)显示学生信息 290
18.2.5 score *add(score *head,score *stu)向链表中添加学生数据 290
18.2.6 score *search(score *head)查询学生成绩 290
18.2.7 score *dele(score *head)删除数据 291
18.2.8 score *sortdata(score *head)对数据进行排序 291
18.2.9 save(score *p1)保存数据 291
18.2.10 score *load(score *head)从文件中读取数据 291
18.2.11 score *statistics(score *head)成绩统计 292
18.2.12 int menu(int k)菜单 292
18.2.13 用到的头文件和全局变量 292
18.3 程序代码 292
18.3.1 主函数main()代码 292
18.3.2 创建链表函数creatlink() 293
18.3.3 显示学生信息函数print() 296
18.3.4 向链表中添加学生数据函数add() 296
18.3.5 查询学生成绩函数search 298
18.3.6 删除数据函数dele 299
18.3.7 对数据进行排序函数sortdata() 300
18.3.8 保存数据函数save() 303
18.3.9 从文件中读取数据函数loadfile() 303
18.3.10 成绩统计函数statistics() 304
18.4 程序运行 306
18.4.1 编辑学生成绩 306
18.4.2 显示学生成绩 306
18.4.3 保存学生成绩信息 307
18.4.4 查询学生的成绩 307
18.4.5 添加学生的成绩 307
18.4.6 删除学生的成绩 307
18.4.7 学生成绩排序 308
18.4.8 从文件中读取学生的成绩 308
18.4.9 统计学生的成绩 308
18.5 本章小结 308
附录A ASCII字符集 309
附录B 运算符的优先级与结合性 311
附录C C语言常用库函数 314

㈤ 谁能给我一个c语言的枚举例子,不要课本的,,

13 号又是星期五是一个不寻常的日子吗?
13 号在星期五比在其他日少吗?为了回答这个问题,写一个程序来计算在n 年里13日落在星期一,星期二......星期日的次数.这个测试从1900 年1 月1 日到1900+n-1 年12 月31 日.n 是一个非负数且不大于400.
这里有一些你要知道的:
1900 年1 月1 日是星期一.
4,6,11 和9 月有30 天.其他月份除了2 月有31 天.闰年2 月有29 天,平年2 月有28 天.
年份可以被4 整除的为闰年(1992=4*498 所以 1992 年是闰年,但是1990 年不是闰年)
以上规则不适合于世纪年.可以被400 整除的世纪年为闰年,否则为平年.所以,1700,1800,1900 和2100 年是平年,而2000 年是闰年.

输入一个整数
输出七个在一行且相分开的整数,它们代表13 日是星期六,星期日,星期一.....星期五的次数.
OK?

㈥ C语言经典编程282例的目录

第1章 初识C语言 1
实例001 第一个C语言程序 2
实例002 一个完整的C语言程序 2
实例003 输出名言 3
实例004 用TC 2.0打开文件 4
实例005 计算正方形的周长 5
第2章 简单的C程序 6
实例006 输出一个正方形 7
实例007 输出一个三角形 8
实例008 一个简单的求和程序 9
实例009 求10! 10
实例010 3个数由小到大排序 11
实例011 猴子吃桃 13
实例012 阳阳买苹果 14
第3章 算法入门 15
实例013 任意次方后的最后三位 16
实例014 计算某日是该年的第几天 16
实例015 婚礼上的谎言 18
实例016 百元买百鸡 19
实例017 打渔晒网问题 20
实例018 判断三角形的类型 22
实例019 直接插入排序 23
实例020 希尔排序 25
实例021 冒泡排序 26
实例022 快速排序 27
实例023 选择排序 28
实例024 归并排序 29
实例025 二分查找 31
实例026 分块查找 32
实例027 哈希查找 34
实例028 斐波那契数列 37
实例029 哥德巴赫猜想 38
实例030 尼科彻斯定理 39
第4章 常用数据类型 41
实例031 数值型常量的使用 42
实例032 字符型变量的使用 42
实例033 求100~200之间的素数 43
实例034 利用#输出三角形 44
实例035 十进制转换为二进制 45
实例036 n进制转换为十进制 46
实例037 小球下落问题 48
实例038 巧分苹果 49
实例039 老师分糖果 50
实例040 IP地址形式输出 51
实例041 特殊的完全平方数 52
实例042 一数三平方 54
实例043 求等差数列 55
实例044 亲密数 56
实例045 自守数 57
第5章 运算符与表达式 60
实例046 求二元一次不定方程 61
实例047 可逆素数 63
实例048 判断闰年 64
实例049 黑纸与白纸 65
实例050 阿姆斯特朗数 67
实例051 最大公约数和最小公倍数 67
实例052 求一元二次方程的根 69
实例053 自然对数的底e的计算 70
实例054 满足abcd=(ab+cd)2的数 70
实例055 整数加减法练习 71
实例056 判断整倍数 73
实例057 阶梯问题 73
实例058 乘积大于和的数 74
实例059 求各位数之和为5的数 75
第6章 数据输入与输出函数 77
实例060 使用字符函数输入/输出字符 78
实例061 输出相对的最小整数 79
实例062 将小写字母转换为大写字母 80
实例063 水池注水问题 80
实例064 用*号输出图案 81
实例065 输出一个字符的前驱字符 82
实例066 求学生总成绩和平均成绩 83
实例067 回文素数 84
第7章 选择和分支结构程序设计 86
实例068 判断偶数 87
实例069 判断字母是否为大写 88
实例070 检查字符类型 89
实例071 求最低分和最高分 90
实例072 模拟自动售货机 91
实例073 计算工资 93
实例074 平方和值判断 94
实例075 加油站加油 95
实例076 简单计算器 97
第8章 循环结构 98
实例077 使用while语句求n! 99
实例078 使用while为用户提供
菜单显示 100
实例079 一元钱的兑换方案 102
实例080 特殊等式 103
实例081 打印乘法口诀表 104
实例082 平方和运算的问题 105
实例083 求从键盘中输入字符的个数 106
实例084 打印杨辉三角 108
实例085 求总数问题 109
实例086 彩球问题 110
实例087 新同学年龄 112
实例088 灯塔数量 113
实例089 计算12+22+…+102 114
实例090 循环显示随机数 115
实例091 卖西瓜 116
实例092 银行存款问题 117
实例093 统计不及格的人数 118
实例094 猜数字游戏 119
第9章 数组 123
实例095 求各元素之和 124
实例096 使用二维数组保存数据 125
实例097 计算字符串中有多少个单词 126
实例098 不使用strcpy()函数实现
字符串复制功能 127
实例099 逆序存放数据 129
实例100 相邻元素之和 130
实例101 选票统计 131
实例102 使用数组统计学生成绩 132
实例103 查找数组中的最值 134
实例104 判断一个数是否存在数组中 135
实例105 求二维数组对角线之和 136
实例106 模拟比赛打分 137
实例107 矩阵的转置 139
实例108 设计魔方阵 141
实例109 字符升序排列 142
实例110 在指定位置插入字符 144
实例111 删除字符串中的连续字符 146
实例112 统计各种字符个数 147
实例113 字符串替换 148
实例114 回文字符串 150
实例115 字符串加密和解密 151
实例116 对调最大数与最小数位置 153
第10章 函数编程基础 155
实例117 输出两个数中的最大值 156
实例118 判断素数 157
实例119 递归解决年龄问题 158
实例120 递归解决分鱼问题 159
实例121 小数分离 160
实例122 求任意数的n次幂 161
实例123 固定格式输出当前时间 163
实例124 设计函数计算学生平均身高 164
实例125 求数组元素中的最小值 165
实例126 打印1~5的阶乘 166
实例127 求最大公约数和最小公倍数 167
实例128 求直角三角形的斜边 168
实例129 相对的最小整数 169
实例130 当前时间转换 170
实例131 显示程序运行时间 171
实例132 显示当前日期及时间 172
实例133 设置DOS系统日期 173
实例134 设置DOS系统时间 174
实例135 读取并设置BIOS的时钟 175
实例136 任意大写字母转小写 176
实例137 字符串复制到指定空间 176
实例138 查找位置信息 177
实例139 复制当前目录 179
实例140 产生唯一文件 180
实例141 不同亮度显示 181
实例142 字母检测 182
实例143 建立目录 183
实例144 删除目录 184
实例145 对数组进行升序和降序排序 185
实例146 设置组合键 187
实例147 获取当前日期与时间 188
实例148 获取当地日期与时间 189
实例149 获取格林尼治平时 190
实例150 设置系统日期 191
实例151 获取BIOS常规内存容量 193
实例152 读/写BIOS计时器 194
实例153 获取CMOS密码 195
实例154 获取Ctrl+Break消息 197
实例155 鼠标中断 198
实例156 设置文本显示模式 200
实例157 显卡类型测试 204
实例158 获取系统配置信息 206
实例159 访问系统temp中的文件 209
实例160 控制扬声器声音 210
实例161 获取Caps Lock键状态 211
实例162 获取环境变量 212
实例163 贪吃蛇游戏 213
实例164 五子棋游戏 219
实例165 弹力球游戏 227
第11章 指针 235
实例166 使用指针实现整数排序 236
实例167 指向结构体变量的指针 237
实例168 使用指针输出数组元素 238
实例169 使用指针查找数列中的
最大值和最小值 240
实例170 使用指针的指针输出字符串 241
实例171 使用指向指针的指针对
字符串排序 242
实例172 使用返回指针的函数查找
最大值 244
实例173 使用指针连接两个字符串 245
实例174 用指针实现逆序存放数
组元素值 247
实例175 用指针数组构造字符串数组 248
实例176 用指针函数输出学生成绩 249
实例177 寻找相同元素的指针 251
实例178 查找成绩不及格的学生 252
实例179 使用指针实现冒泡排序 254
实例180 输入月份号并输出英文月份名 255
实例181 使用指针插入元素 256
实例182 使用指针交换两个数组
中的最大值 257
实例183 输出二维数组有关值 259
实例184 输出二维数组任一行
任一列值 260
实例185 将若干字符串按照字母
顺序输出 262
实例186 用指向函数的指针比较大小 263
实例187 寻找指定元素的指针 265
实例188 字符串的匹配 266
第12章 常用数据结构 269
实例189 比较计数 270
实例190 找出最高分 271
实例191 信息查询 272
实例192 候选人选票程序 274
实例193 计算开机时间 276
实例194 取出整型数据的高字节数据 277
实例195 使用共用体存放学生和
老师信息 278
实例196 使用共用体处理任意类型数据 279
实例197 输出今天星期几 281
实例198 创建单向链表 282
实例199 创建双向链表 284
实例200 创建循环链表 287
实例201 使用头插入法建立单链表 289
实例202 双链表逆序输出 291
实例203 约瑟夫环 293
实例204 创建顺序表并插入元素 294
实例205 合并两个链表 296
实例206 单链表节点逆置 298
实例207 应用栈实现进制转换 300
实例208 用栈实现行编辑程序 303
实例209 用栈设置密码 306
实例210 括号匹配检测 310
实例211 用栈及递归计算多项式 313
实例212 链队列 315
实例213 循环缓冲区问题 318
实例214 简单的文本编辑器 321
第13章 位运算操作符 326
实例215 使二进制数特定位翻转 327
实例216 将输入的数左移两位并输出 327
实例217 编写循环移位函数 328
实例218 取出给定16位二进制数
的奇数位 330
实例219 取一个整数的后四位 331
实例220 求一个数的补码 332
实例221 普通的位运算 333
实例222 整数与0异或 334
第14章 存储管理 335
实例223 使用malloc()函数分配内存 336
实例224 调用calloc()函数动态分
配内存 337
实例225 为具有3个数组元素的
数组分配内存 338
实例226 为二维数组动态分配内存 338
实例227 商品信息的动态存放 340
第15章 预处理和函数类型 341
实例228 用不带参数的宏定义求
平行四边形面积 342
实例229 使用宏定义实现数组值
的互换 343
实例230 编写头文件包含圆面积的
计算公式 344
实例231 利用宏定义求偶数和 345
实例232 利用文件包含设计输出模式 346
实例233 使用条件编译隐藏密码 347
第16章 文件读写 349
实例234 关闭所有打开的文件 350
实例235 同时显示两个文件的内容 352
实例236 创建文件 353
实例237 格式化读写文件 355
实例238 创建临时文件 357
实例239 成块读写操作 358
实例240 随机读写文件 360
实例241 以行为单位读写文件 362
实例242 查找文件 364
实例243 重命名文件 364
实例244 删除文件 366
实例245 删除文件中的记录 367
实例246 文件内容复制 369
实例247 错误处理 370
实例248 合并两个文件信息 373
实例249 统计文件内容 375
实例250 读取磁盘文件 376
实例251 将数据写入磁盘文件 378
实例252 显示目录内同类型文件 379
实例253 文件分割 382
实例254 文件加密 384
实例255 自毁程序 386
实例256 明码序列号保护 388
实例257 非明码序列号保护 389
实例258 恺撒加密 391
实例259 RSA加密 394
实例260 获取当前磁盘空间信息 396
实例261 DES加密 398
实例262 获取系统配置信息 403
实例263 获取寄存器信息 405
第17章 图形图像处理 407
实例264 绘制直线 408
实例265 绘制矩形 409
实例266 绘制表格 411
实例267 绘制立体窗口 412
实例268 绘制椭圆 414
实例269 绘制圆弧线 415
实例270 绘制扇区 417
实例271 绘制空心圆 418
实例272 绘制箭头 419
实例273 绘制正弦曲线 420
实例274 绘制彩带 421
实例275 绘制黄色网格填充的椭圆 423
实例276 绘制红色间隔点填充的
多边形 424
实例277 绘制五角星 425
实例278 颜色变换 427
实例279 彩色扇形 428
实例280 输出不同字体 429
实例281 相同图案的输出 431
实例282 设置文本及背景颜色 433

㈦ c语言问题: 什么是算法试从日常生活中找3个例子,描述它们的算法。 详细点,谢谢!

c语言中的算法是指:一系列解决问题的清晰指令,用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。通俗说就是解决问题的方法和步骤。

描述算法的例子:

  1. 问题:从上海去到北京。

    其中的算法:做汽车、做飞机、或者徒步。

  2. 问题:喝茶。

    其中的算法:先找到茶叶,再烧一壶开水,然后将茶叶放到杯子里,将开水倒入杯中,等茶叶泡好。

  3. 问题:开车。

    其中的算法:首先要打开车门,驾驶员坐好,插上车钥匙,发动汽车。

㈧ C语言的经典编程例子


程序员》推荐C++ 图书三人谈

主持人:熊节(透明),《程序员》杂志编辑,C-View成员
嘉 宾:孟岩(梦魇),联想公司掌上设备事业部应用开发处任职,C-View成员。与侯捷先生合译《C++ Standard Library》一书
金尹(恶魔),上海天宇公司CTO,在《程序员》连载有“自由与繁荣的国度”系列文章

透明:“学C++用哪本书入门”,这是被问得最多的一个问题。但是哪一本书是最好的入门书?似乎很难找到答案。《C++ Primer》太厚,《Effective C++》对读者要求比较高,《Essential C++》又常常被批评为“太浅”。
其实说穿了:no silver bullet。想从一本书学会C++,那是不可能的。有朋友问我如何学C++,我会建议他先去找本数据结构书,把里面的习题全部用C++做一遍,然后再去看《Effective C++》。myan经常说“要在学习初期养成好习惯”,我对此颇不以为然。
个人认为,《Essential C++》适合作教材,《C++ Primer》适合作参考书,《Effective C++》适合作课外读物。

恶魔:很后悔当初买了《C++ Primer》。因为从我个人角度来看,它的功能效用基本是和《The C++ Programming Language》重合。当然对于入门来说,它还是很不错的。但是《C++ Primer》太厚,一来导致看书极其不方便,二来系统学习需要花比较长的时间。对于目前这个越来越快餐化的时代来说,的确有很多不适合的地方,不过可以作为初学者的参考书。现在我以一块K3 CPU的代价把它借给了别人,希望我那位同事能够从中得到一些益处。
如果已经具备了C基础,我建议看国内的书,例如钱能的《 C++大学教程(第二版) 》。(如果没有C的基础还是看谭浩强的C语言)。这本书对C讲得还算比较清晰,有很多习题值得一做,特别是最后的struct和union两个部分。其中的一些算法比较拖沓和繁琐(比如树和链表的遍历算法),读者可以尝试修改这些例子,作为最后对C语言的一些总结测试。

梦魇:这个问题让我想起四五年前的情形。今天对于C++有一点认识的人,多半是从那几年就开始学C++了。那时根本没有品牌观念。从书店里找一本C++书,如果看着还算明白,就买下来。我记得那时候宛延闿、张国锋、麦中凡教授的书都受到很高的赞誉。我个人最早的一本C++书是Greg Perry的一本书,今天想起来,其实是一本打着C++旗号的C语言教程。对我作用最大的一本书是国防科技出版社出版的一本书,书名记不得了,作者叫斯蒂芬·布莱哈。
透明:还记得以前曾批评过一本C++书,是北航出的,整本书就没有出现过class关键字。那本书,说穿了其实只是介绍了C语言和iostream库的用法,根本不能算C++。而当时我常常推荐的一本书是电子科技大学张松梅老师的C++教程。那本书,直到今天来看也没有太大的问题,唯一的缺憾就是由于年代久远,许多东西已经过时了。而对于一本技术书籍来说,“过时”是最不可接受的。
总体来说,那时使用C++的人真是在“盲人摸象”。不过这也有好处,就是对C++的很多细节能搞清楚,以后看到经典好书时比较容易理解;当然坏处就是概念不清,甚至都不知道C++和Visual C++、Borland C++到底有什么不一样。

梦魇:整个90年代,其实大部分人对于C++的认识都似是而非。一开始是等同于Borland C++,后来是等同于Visual C++和MFC。所以一般来说,打着BC和VC旗号的书卖得很好,人们觉得这就是C++。而我比较幸运,布莱哈的那本书虽然从现在的眼光来看谈不上高超,但基本路子是对的。可能是因为原书是给UNIX程序员的培训教材,所以没有让我一开始就形成“C++ == VC++”的认识。
其实一直到1996年,我们那里搞计算机的都是唯Borland C++马首是瞻的,到了VC 4.0出来,一下子格局全变了。1997年VC5推出之后,书店里MFC书铺天盖地,学MFC的人,头抬得都比别人高一些。不过现在看来,那时候大部分的MFC书都是三流货色。我曾经有一段时间认为,那一批程序员中间有不少被误导了。根本原因就是相对的封闭。

透明:我觉得一本书的价值有两方面:第一,教给你实用的技术;第二,促使你去思考。对于一本介绍VC(或者说MFC)使用方法的书,我根本不希望它能促使我有什么思考,所以我就一定要求它在技术上精益求精完美无瑕。我刚开始用VC的时候,买的第一本书就是潘爱民老师翻译的《VC技术内幕》(第四版),没有受到那些“三流货色”的误导,应该说是很幸运的。

梦魇:1999年机械工业出版社开始出版“计算机科学丛书”,其中的《Thinking in C++》第一版受到了广泛的欢迎。其实我一直不认为这本书很出色,虽然拿过一次大奖。然而我们都得承认,这本书在C++书籍领域里第一次建立了品牌观念,很多初学者开始知道,不是随便买哪一本都一样的。再往后就是2000年的《 深入浅出MFC(第二版) 》第二版,以及侯先生在《程序员》上发表的那一篇《C++/OOP大系》,加上整个大环境的变化,品牌观念深入人心,C++书籍市场终于开始逐渐与世界同步。
回想往事,我的感觉是,那个需要战战兢兢选择入门书的时代已经过去,今天的C++初学者,大可以放心地买口碑好、自己读起来思路顺畅的书,入门不再是太大的问题。还有一些程序员已经学了几年C++,但看到今天出版的一些新书,感觉比较陌生,这也不是什么问题。侯先生经常说“凡走过必留下足迹”,所谓“走弯路”,未必不是一件好事。
至于具体的推荐表,就不好一概而论了。总之在我的印象里,《Essential C++》、《C++ Primer》、钱能教授的C++教程,都不错。甚至有人一上来就看Bjarne Stroustrup的《The C++ Programming Language》,只要他喜欢,也没什么不可以。

透明:我同意你的观点。不管怎么说,编程是门实践性非常强的学问。要想对C++对象模型有深入的了解,最好的办法就是写一串程序去看结果;要想学会OOP,也只能从项目中学。对于初学者,最好的学习方法就是不停地写程序,写真正有用的程序,写到有问题的时候就去查书,于是自然就会知道哪本书好哪本书不好。不过我们的教育制度能不能让大学里的学生们有这样的学习机会,我表示怀疑。
以我的经验,学C++有两个门槛:入门和使用。完全看不懂C++,这是一个门槛,但是只要有一本合适的入门书,很快就能跨过。要想真正用上C++,却不是件很容易的事情。尤其对于学生来说,接触到的东西多是“玩具”,很难有实战的机会。所以经常看见有人问“C++到底能做什么”,这是C++学习中一个比较麻烦的问题。我们都是做了相当长时间的C++程序之后才看到一些真正经典的书,也正是因为走了相当长的弯路之后才知道这些书的经典之所在。所谓弯路,我想也是一种必须的积累。就算一开始就看《Essential C++》和《C++ Primer》,没有两三年的时间恐怕还是难有所得。

恶魔:有两句十分有道理的话,一是我大学的C语言老师说的“写程序不如说是抄程序”,另一句是一网友说的“好的设计来自借鉴,天才的设计来自剽窃”。对于我这个理性批判主义者来说,这两句话的确不太适合。但是无论从哪个角度来讲,对于初学者来说,剽窃大师的作品是通向成功的最快捷径。
我个人认为,对于C++的初学者来说,首先要确定自己专业领域内主要使用的特性的方向。因为C++的特性如此众多,初学者想贪多基本是不可能成功的。C++的编程范式基本可以分为ADT+PP、GP和OO三个方向。对于ADT+PP范式来说,初学者的主要问题不是学习C++,而是学习C的使用。对于这样的初学者,国内的几本书还是写得比较清楚,符合中国人的习惯,比如谭浩强的《C语言教程》、钱能的《C++语言大学教程》。这两本书我首推第一本,因为这一本我潜心研究了一年,这本书当中很多程序是可以剽窃的,而且可以对这些程序进行加工和提升。比如结构这一章中,它所给出的用struct来实现链表、二叉树的算法是相当蹩脚的。学习ADT+PP的初学者将这本书揣摩透以后可以尝试修改这两个程序。另外这本书的第二版稍微涉及了一些关于“类”的内容。学习ADT+PP的初学者,可以不被OO中的一些专有特性扰乱自己的思路,对于类层次扁平、无继承、无多态的程序编写是有很大好处的。

透明:你好象比较推崇国内教授写的书。现在社会上有种不好的风气:一捧就捧上天,一贬就贬下地。就好象对待谭教授的书,前几年是奉为经典,这几年又有很多人使劲批评。学C++更是有点“崇洋媚外”,总是觉得初学就应该看《Essential C++》。我看这种观点也是片面的。

恶魔:当然《Essential C++》也值得看看。但是我个人觉得这本书没有谭浩强的《C语言教程》来得好。主要原因是:第一,C++的所有特性都点到了,但是不深,看了以后会三心二意没有方向;第二,可以抄袭借鉴的例子太少。《C语言教程》中有很多有趣的问题,比如猴子吃桃、汉诺塔等等,这些例子对于刚刚涉及C/C++语言编程的人来说是学习编程很好的例子。《Essential C++》只能是前两本书看透以后,作为学习C++特性的一个过渡性的书籍。让读者真正领略到什么是C++的编程、和C编程的不同点在哪里。

透明:我发现一个很有趣的现象:初学者往往喜欢问“哪本书比较好”,这让我很是不解。这有点像一个刚学打篮球的人问“王治郅和科比谁比较厉害”。当然科比更厉害一些。但如果你是想学打篮球,这两个人都非常非常有资格教你,你跟谁学都能学得很强——关键不是在于你选哪个老师,而是在于你自己用多少功夫去学。

透明:回到原来话题。学会了C++的语法,能看懂C++代码之后,必须有些书来指导进阶(或者叫指点迷津)。我觉得《设计模式》很好,能够让读者看到一些精妙的用法。不过正如我经常说的,模式带来的麻烦和好处一样多,甚至麻烦还要更多。而且,C++本身的问题使得在C++中使用GoF模式愈加麻烦。

梦魇:《Design Patterns》这本书绝对是不可以没有的,而且中英文版都不可少。最初我看中文版,说实话看不懂,但是也不觉得人家翻译得不好,所以就想,大概是原文就很难懂,加上自己水平有限。于是总是想着再找几本patterns的书来看。后来找到几本书,口碑还不错,不过水平高下,一比就出来了,还是那本《Design Patterns》最经典,最耐看。英文版出来之后,两个版本对照看,明白多了。现在觉得,其实就设计模式来讲,把这本看明白了就很不错了,不用再花费很多心思找其他的书。我现在的包里始终夹着这本书,随身携带,有备无患。
至于说设计模式的副作用,和可能带来的弊端,我的体会也挺多。不过是这样,我们想一想,究竟什么情况下设计模式可以用得很好呢?一种是有经验丰富的人引导,比如要是Robert Martin带队,你在某个地方用错了设计模式,他就会指出来,说这里不对,将来会产生什么样的弊端。对于他来说,丰富的实践经验足以支持他进行“预测型”设计。但是大部分人没这个能力,因此我们只好走第二条路和第三条路,就是“试探型”设计和“重构型”设计。遇到一个问题,你觉得用某种模式挺合适的,就大胆地用了,成功是积累经验,发现不好,出了问题了,只好改回来,那也是积累教训。这叫做“试探型”。至于重构,应该算是最有组织、成功率最高的工程化方法。先把问题“quick and dirty”地解决了,所有的暗礁都暴露出来,然后再根据实际情况采用合适的模式优化设计。现在XP和UP都高度重视refactory,UP在Elaboration和Construction阶段都鼓励抽出专门的iterations进行重构。所以说如果组织快速的软件开发,当然比较倾向于这条路——打成功率嘛。

透明:讲到重构,我顺便说说《Refactoring》这本书的影响。从工程本身的角度来说,你所谓的“重构型设计”是没有什么问题的。但中国的开发者(也包括我在内)往往比较冲动,比较容易相信银弹的存在。曾经有那么一段时间,我在Java中尝试过了重构的方法之后,又拿到C++中去尝试。结果发现,在Java中速度非常快的重构过程,到C++中就被减慢了。究其原因,就是因为C++和Java的约束条件不同。拿着Java中成功的案例直接套C++,不失败才怪。
所以,我必须说:《Refactoring》这本书很有价值。但对于C++程序员来说,它的价值是让你思考,思考这种方法的可行性。如果一个C++程序员没有打算迁移到Java,那么我必须告诉他:《Refactoring》这本书不是让你照着它用的,甚至不是让你去相信它的。对于C++程序员,《Refactoring》全书可以放心相信的只有第13章,其他的部分,都必须非常谨慎地对待。

梦魇:我还要就“试探型”的方法多说两句,我觉得对于个人发展来讲,“试探”也是必不可少的,撞墙不可怕,高水平的人不都是撞出来的吗?你失败了一次,就知道这个模式有什么潜在的问题,下次再用,就会多看几步,像下棋似的。撞的多了,路数就出来了。
我不知道你们是否有这个感觉:用错了模式,吃了亏,再回过头去翻翻《Design Patterns》,看到人家早就指出来这个问题,不过就是那么几句话,原来看上去干巴巴的,现在觉得句句都讲到心坎上,GoF的形象马上就高大起来,还带着光环,感觉是既兴奋又懊悔。

透明:现在回头来看,我更欣赏myan推荐给我的《Designing Object-Oriented C++ Applications Using Booch Method》。这本书能够帮助C++程序员理清思路培养习惯,可惜国内没有引进。相比后来商业味浓厚的UML系列书籍,我觉得这本书对于面向对象的阐释精辟独到,至今未有能出其右者。

梦魇:刚才我们两人都说到Robert Martin,他可是我的榜样。那本1995年的《Designing Object Oriented C++ Application》,我觉得是每一个C++软件工程师都应该反复研读的书。可惜不仅国内没有引进,在国外的名气也不大。如果你觉得面向对象的那些道理你好像都明白,可就是一遇到实际问题就使不上劲,那这本书就是你的最佳导师。
提到理清思路,还有一本书不得不提,就是Andrew Koenig的《Ruminations On C++》。每个人都应该问自己,我学了这么多年的C++,究竟什么是C++最基本的设计理念?遇到问题我第一个直觉是什么?第一个试探型的解决方案应该具有那些特点?如果你不能给出明确的答案,就应该认真地去读这本书,读完了你就有了“主心骨”。

透明:插一句话,谈谈“推荐书”的问题。入门书基本上是放之四海而皆准的,所以推荐的意义也不大。而入门后的发展方向,每个人不同,这个时候就需要“高人”的指点。举个例子:我学C++的时候,myan还不认识我,所以也没有给我推荐书,我还是学过来了,所以即使你当时向我推荐了《Essential C++》或者《C++ Primer》,我也不会太感谢你;但在我认真研究OO的时候,你推荐Robert Martin那本书给我,对我帮助就特别大,而且我从别的地方也很难找到类似的推荐,所以我就很感谢你。
一个程序员,必须有framework的意识,要学会用framework,还要主动去分析framework(在这方面,《Design Patterns》能有一定的帮助)。但是,真正高质量、成气候的framework的书恐怕也就只有针对MFC的。从这个角度来说,MFC纵有千般不是,C++程序员都非常有必要先去用它、熟悉它、研究它,甚至借助《深入浅出MFC》这样的书来剖析它。不然,很难有framework的意识和感觉。
当然,另一个framework也很好,那就是STL。不管用不用MFC、STL,对这两个东西的掌握和理解都是极有帮助的。最近我又在看《深入浅出MFC》,虽然已经不用MFC编程了,但帮助是一定有的。

梦魇:MFC和STL方面,我还是比较推崇侯先生的两本书《深入浅出MFC》和《STL源码解析》。
《深入浅出MFC》这本书,名气自然是大得不得了,不过也有不少人批评。其实书也没有十全十美的,批评当然是少不了的,不过有的时候我看到有人评论这本书,把它跟Inside VC相比,真的是牛头不对马嘴。
你刚才其实说得很对,程序员应该有一点framework意识。而这本《深入浅出MFC》与其说是在讲MFC编程,不如说通篇是在拿MFC为例分析Application Framework的架构和脉络。所以无论你对于MFC本身是什么态度,这本书对每一个C++程序员都有很大的益处。

透明:是的。《VC技术内幕》会告诉你“DYNAMIC_CREATE这个宏怎么用”,《深入浅出MFC》则告诉你“DYNAMIC_CREATE这个宏是怎么实现的”。所以,如果你只需要在VC下写一些小应用程序,《深入浅出MFC》的价值并不太大;但是,如果你需要设计一个稍微大一点的东西(不一定是framework),MFC的设计思想就会有所帮助。

梦魇:另外,我觉得对于MFC也应该有一个公允的评价。过去是吹捧得天上有地下无,书店里铺天盖地都是MFC的书,搞得大家只知有MFC,不知有C++,甚至直到现在还有人问:“我是学MFC呢,还是学C++?VC++是不是比C++更高级的语言?”MFC成了一尊神像,阻碍了人们的视线。所以得把它从神坛上拉下来。这就是过去一两年有很多人,包括我在内批评MFC的一个目的。可是现在大家视野开阔了,.NET也出来了,MFC不再是神像了,少数人就开始以贬损MFC为乐了。我觉得这种态度是不对的。
什么叫好的框架?我觉得在十几年的时间能够象MFC这样保持稳定并且不断进步的框架就是好的框架。可能我们在一些具体的设计问题上有不同看法,觉得“这个地方这么设计不是更漂亮吗?”很多时候是的,但是这不重要,重要的是MFC成熟稳定、有十几年的成功经验,这是最了不起的东西。
另外一点,MFC中间包括着学习Win32 API编程的最佳资料。这是除了其framework方面之外的另一个亮点。我现在使用Win32 API开发,但是经常参考MFC的源代码,收获很大。

透明:STL方面,我对于剖析它的源代码兴趣并不大,毕竟里面源代码多是算法问题。所以,《STL源码剖析》我也只是随便翻翻就束之高阁了。我觉得这本书用来做计算机系的数据结构和算法教材不错,不知道有没有老师乐意这样做。
对于STL,我的态度一向都是“应用至上”。不过,我一直认为SGI STL本身就是一本精彩的书,一本数据结构和算法的经典参考书,同时也是泛型技术的参考书。想知道一个算法是如何实现的,看看STL源代码就行;想知道如何使用type traits,STL源代码里面也有例子。看别人写的书,总觉得隔着一层纱,有点挠不到痒处的感觉。SGI STL的代码写得非常漂亮,一个C++程序员如果不看看这本书,实在是可惜。

梦魇:至于STL,除了《STL源码解析》之外,我举贤不避亲,强烈推荐侯先生与我合译的那本《The C++ Standard Library》。这本书质量之高是无需怀疑的。我现在手边常备此书,随时查阅,对我帮助很大。

透明:C++和Java相比,最大的优势就是它没有一个专门的公司来管它,最大的弱点也是它没有一个专门的公司来管它。Java程序员在学会简单的语法之后,立刻进入SUN提供的framework,一边用这个现成的framework做实际开发,一边在开发过程中继续学习Java一些幽深的特性。而这个时候,C++程序员恐怕还在问“VC和BCB哪个好”呢。这无疑是浪费时间。

梦魇:刚才你说Java和C++的优劣,这个话题已经成了我们这个年代永不消失的声波了。我也不想再谈这个。不过有一点我得说清楚:现在我们很多用C++的人吃了不少苦头,探过脖子去看看Java,觉得它真是太可爱了,这种印象是不准确的。另外,Java也不简单,而且会越来越庞大复杂。在很多场合,Java还不具有竞争力。至于将来如何,我看有些Java爱好者也过分乐观了,似乎计算机科学界几十年解决不了的问题都可以借着Java的东风解决掉,恐怕没那么容易。

透明:那当然。我再次强调:No Silver Bullet。读书很重要,但古人说“行万里路,读万卷书”,还是把“行路”放在“读书”前面。尤其对于技术书籍,如果它不能帮我解决问题、不能给我带来非常实际的利益,那么我是不会去读它的。恶魔说得对,我们这个社会很快餐,我们这个行业尤其很快餐,我们也只能努力适应它。

㈨ 30分求C语言入门经典电子书

个人认为最好的还是第一种:
谭浩强C语言教程全书 Word版
其他的看你自己的需要了~~

谭浩强C语言教程全书 Word版
http://bbs.topsage.com/dispbbs_121_171227_1.html
C语言趣味程序百例精解
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=158110
Sams出版 Advanced C 高级C语言开发
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=165502
C数值算法程序大全
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=158109
C语言专家编程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=158108
C语言程序设计案例精编
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=157722
C语言进阶
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=157745
C Primer Plus [SAMS]
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=176001
C Pocket Reference [O'Reilly]
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=176000
数据结构视频教程 清华大学严蔚敏主讲 全48讲 完整版 ASF格式
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=165468
数据结构C语言版视频教程 全52讲完整版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=156467
钱能 c++程序设计教程 第二版 高清PDF版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=166018
Essential C++ 中文版+英文版 侯捷译
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=167578
C++高级编程参考手册
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=145562
C++ Primer 第三版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=145858
More Effective C++ 简体中文版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=146871
C++ Templates 中文版+英文版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=176004
C++ Coding Standards[Addison Wesley]
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=175999
Absolute C++ 全彩页代码剖析
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=175578
Inside the C++ Object Model
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=175359
More Exceptional C++ [Addison Wesley]
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=175358
Exceptional C++ [Addison Wesley]
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=175357
Sams出版 C++ Unleashed
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=163617
C++ GUI Programming with QT4
http://bbs.topsage.com/dispbbs.asp?boardID=119&ID=146734
Visual C++ 6傻瓜书 快速参考
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=173217
Visual C++ 6.0 编程实例与技巧(PDF中文版)
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=173210
Visual C++ 21天自学教程
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=173174
跟我学Visual C++ 6
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174442
Visual C++ 6 数据库编程 21天自学教程 CHM
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=173173
The C++ Programming Language 第三版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=175018
Special Edition Using Visual C++ 6
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=173171
Professional MFC with VC 6
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=166005
Practical C++ Programming
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=173744
Cross-Platform Development in C++
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174168
Iterative UML Development Using VC++ 6
http://bbs.topsage.com/dispbbs.asp?boardID=124&ID=174831
Ace Programmer's Guide
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=174449
Visual C++高级界面特效制作百例
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=168630
精通GDI+编程 清华大学出版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=170571
孙鑫C++视频教程 rmvb格式 全20CD完整版
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=156290
中山大学蔡培兴 C++语言视频教程 全51讲 精品推荐
http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=158073

㈩ 经典C语言编程30例(二)

【程序31】
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续
判断第二个字母。
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
2.程序源代码:
#include
void main()
{
char letter;
printf("please input the first letter of someday\n");
while ((letter=getch())!='Y')/*当所按字母为Y时才结束*/
{ switch (letter)
{case 'S':printf("please input second letter\n");
if((letter=getch())=='a')
printf("saturday\n");
else if ((letter=getch())=='u')
printf("sunday\n");
else printf("data error\n");
break;
case 'F':printf("friday\n");break;
case 'M':printf("monday\n");break;
case 'T':printf("please input second letter\n");
if((letter=getch())=='u')
printf("tuesday\n");
else if ((letter=getch())=='h')
printf("thursday\n");
else printf("data error\n");
break;
case 'W':printf("wednesday\n");break;
default: printf("data error\n");
}
}
}
==============================================================
【程序32】
题目:Press any key to change color, do you want to try it. Please hurry up!
1.程序分析:
2.程序源代码:
#include
void main(void)
{
int color;
for (color = 0; color < 8; color++)
{
textbackground(color);/*设置文本的背景颜色*/
cprintf("This is color %d\r\n", color);
cprintf("Press any key to continue\r\n");
getch();/*输入字符看不见*/
}
}
==============================================================
【程序33】
题目:学习gotoxy()与clrscr()函数
1.程序分析:
2.程序源代码:
#include
void main(void)
{
clrscr();/*清屏函数*/
textbackground(2);
gotoxy(1, 5);/*定位函数*/
cprintf("Output at row 5 column 1\n");
textbackground(3);
gotoxy(20, 10);
cprintf("Output at row 10 column 20\n");
}
==============================================================
【程序34】
题目:练习函数调用
1. 程序分析:
2.程序源代码:
#include
void hello_world(void)
{
printf("Hello, world!\n");
}
void three_hellos(void)
{
int counter;
for (counter = 1; counter <= 3; counter++)
hello_world();/*调用此函数*/
}
void main(void)
{
three_hellos();/*调用此函数*/
}
==============================================================
【程序35】
题目:文本颜色设置
1.程序分析:
2.程序源代码:
#include
void main(void)
{
int color;
for (color = 1; color < 16; color++)
{
textcolor(color);/*设置文本颜色*/
cprintf("This is color %d\r\n", color);
}
textcolor(128 + 15);
cprintf("This is blinking\r\n");
}
==============================================================
【程序36】
题目:求100之内的素数
1.程序分析:
2.程序源代码:
#include
#include "math.h"
#define N 101
main()
{
int i,j,line,a[N];
for(i=2;ifor(i=2;i for(j=i+1;j {
if(a[i]!=0&&a[j]!=0)
if(a[j]%a[i]==0)
a[j]=0;}
printf("\n");
for(i=2,line=0;i{
if(a[i]!=0)
{printf("]",a[i]);
line++;}
if(line==10)
{printf("\n");
line=0;}
}
}
==============================================================
【程序37】
题目:对10个数进行排序
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
下次类推,即用第二个元素与后8个进行比较,并进行交换。
2.程序源代码:
#define N 10
main()
{int i,j,min,tem,a[N];
/*input data*/
printf("please input ten num:\n");
for(i=0;i{
printf("a[%d]=",i);
scanf("%d",&a[i]);}
printf("\n");
for(i=0;iprintf("]",a[i]);
printf("\n");
/*sort ten num*/
for(i=0;i{min=i;
for(j=i+1;jif(a[min]>a[j]) min=j;
tem=a[i];
a[i]=a[min];
a[min]=tem;
}
/*output data*/
printf("After sorted \n");
for(i=0;iprintf("]",a[i]);
}
==============================================================
【程序38】
题目:求一个3*3矩阵对角线元素之和
1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
2.程序源代码:
main()
{
float a[3][3],sum=0;
int i,j;
printf("please input rectangle element:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%f",&a[i][j]);
for(i=0;i<3;i++)
sum=sum+a[i][i];
printf("ijiaoxian he is %6.2f",sum);
}
==============================================================
【程序39】
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后
此元素之后的数,依次后移一个位置。
2.程序源代码:
main()
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int temp1,temp2,number,end,i,j;
printf("original array is:\n");
for(i=0;i<10;i++)
printf("]",a[i]);
printf("\n");
printf("insert a new number:");
scanf("%d",&number);
end=a[9];
if(number>end)
a[10]=number;
else
{for(i=0;i<10;i++)
{ if(a[i]>number)
{temp1=a[i];
a[i]=number;
for(j=i+1;j<11;j++)
{temp2=a[j];
a[j]=temp1;
temp1=temp2;
}
break;
}
}
}
for(i=0;i<11;i++)
printf("m",a[i]);
}
==============================================================
【程序40】
题目:将一个数组逆序输出。
1.程序分析:用第一个与最后一个交换。
2.程序源代码:
#define N 5
main()
{ int a[N]={9,6,5,4,1},i,temp;
printf("\n original array:\n");
for(i=0;i printf("M",a[i]);
for(i=0;i {temp=a[i];
a[i]=a[N-i-1];
a[N-i-1]=temp;
}
printf("\n sorted array:\n");
for(i=0;i printf("M",a[i]);
}
【程序41】
题目:学习static定义静态变量的用法
1.程序分析:
2.程序源代码:
#include "stdio.h"
varfunc()
{
int var=0;
static int static_var=0;
printf("\40:var equal %d \n",var);
printf("\40:static var equal %d \n",static_var);
printf("\n");
var++;
static_var++;
}
void main()
{int i;
for(i=0;i<3;i++)
varfunc();
}
==============================================================
【程序42】
题目:学习使用auto定义变量的用法
1.程序分析:
2.程序源代码:
#include "stdio.h"
main()
{int i,num;
num=2;
for (i=0;i<3;i++)
{ printf("\40: The num equal %d \n",num);
num++;
{
auto int num=1;
printf("\40: The internal block num equal %d \n",num);
num++;
}
}
}
==============================================================
【程序43】
题目:学习使用static的另一用法。
1.程序分析:
2.程序源代码:
#include "stdio.h"
main()
{
int i,num;
num=2;
for(i=0;i<3;i++)
{
printf("\40: The num equal %d \n",num);
num++;
{
static int num=1;
printf("\40:The internal block num equal %d\n",num);
num++;
}
}
}
==============================================================
【程序44】
题目:学习使用external的用法。
1.程序分析:
2.程序源代码:
#include "stdio.h"
int a,b,c;
void add()
{ int a;
a=3;
c=a+b;
}
void main()
{ a=b=4;
add();
printf("The value of c is equal to %d\n",c);
}
==============================================================
【程序45】
题目:学习使用register定义变量的方法。
1.程序分析:
2.程序源代码:
void main()
{
register int i;
int tmp=0;
for(i=1;i<=100;i++)
tmp+=i;
printf("The sum is %d\n",tmp);
}
==============================================================
【程序46】
题目:宏#define命令练习(1)
1.程序分析:
2.程序源代码:
#include "stdio.h"
#define TRUE 1
#define FALSE 0
#define SQ(x) (x)*(x)
void main()
{
int num;
int again=1;
printf("\40: Program will stop if input value less than 50.\n");
while(again)
{
printf("\40:Please input number==>");
scanf("%d",&num);
printf("\40:The square for this number is %d \n",SQ(num));
if(num>=50)
again=TRUE;
else
again=FALSE;
}
}
==============================================================
【程序47】
题目:宏#define命令练习(2)
1.程序分析:
2.程序源代码:
#include "stdio.h"
#define exchange(a,b) { \ /*宏定义中允许包含两道衣裳命令的情形,此时必须在最右边加上"\"*/
int t;\
t=a;\
a=b;\
b=t;\
}
void main(void)
{
int x=10;
int y=20;
printf("x=%d; y=%d\n",x,y);
exchange(x,y);
printf("x=%d; y=%d\n",x,y);
}
==============================================================
【程序48】
题目:宏#define命令练习(3)
1.程序分析:
2.程序源代码:
#define LAG >
#define SMA <
#define EQ ==
#include "stdio.h"
void main()
{ int i=10;
int j=20;
if(i LAG j)
printf("\40: %d larger than %d \n",i,j);
else if(i EQ j)
printf("\40: %d equal to %d \n",i,j);
else if(i SMA j)
printf("\40:%d smaller than %d \n",i,j);
else
printf("\40: No such value.\n");
}
==============================================================
【程序49】
题目:#if #ifdef和#ifndef的综合应用。
1. 程序分析:
2.程序源代码:
#include "stdio.h"
#define MAX
#define MAXIMUM(x,y) (x>y)?x:y
#define MINIMUM(x,y) (x>y)?y:x
void main()
{ int a=10,b=20;
#ifdef MAX
printf("\40: The larger one is %d\n",MAXIMUM(a,b));
#else
printf("\40: The lower one is %d\n",MINIMUM(a,b));
#endif
#ifndef MIN
printf("\40: The lower one is %d\n",MINIMUM(a,b));
#else
printf("\40: The larger one is %d\n",MAXIMUM(a,b));
#endif
#undef MAX
#ifdef MAX
printf("\40: The larger one is %d\n",MAXIMUM(a,b));
#else
printf("\40: The lower one is %d\n",MINIMUM(a,b));
#endif
#define MIN
#ifndef MIN
printf("\40: The lower one is %d\n",MINIMUM(a,b));
#else
printf("\40: The larger one is %d\n",MAXIMUM(a,b));
#endif
}
==============================================================
【程序50】
题目:#include 的应用练习
1.程序分析:
2.程序源代码:
test.h 文件如下:
#define LAG >
#define SMA <
#define EQ ==
#include "test.h" /*一个新文件50.c,包含test.h*/
#include "stdio.h"
void main()
{ int i=10;
int j=20;
if(i LAG j)
printf("\40: %d larger than %d \n",i,j);
else if(i EQ j)
printf("\40: %d equal to %d \n",i,j);
else if(i SMA j)
printf("\40:%d smaller than %d \n",i,j);
else
printf("\40: No such value.\n");
}
【程序51】
题目:学习使用按位与 & 。
1.程序分析:0&0=0; 0&1=0; 1&0=0; 1&1=1
2.程序源代码:
#include "stdio.h"
main()
{
int a,b;
a=077;
b=a&3;
printf("\40: The a & b(decimal) is %d \n",b);
b&=7;
printf("\40: The a & b(decimal) is %d \n",b);
}
==============================================================
【程序52】
题目:学习使用按位或 | 。
1.程序分析:0|0=0; 0|1=1; 1|0=1; 1|1=1
2.程序源代码:
#include "stdio.h"
main()
{
int a,b;
a=077;
b=a|3;
printf("\40: The a & b(decimal) is %d \n",b);
b|=7;
printf("\40: The a & b(decimal) is %d \n",b);
}
==============================================================
【程序53】
题目:学习使用按位异或 ^ 。
1.程序分析:0^0=0; 0^1=1; 1^0=1; 1^1=0
2.程序源代码:
#include "stdio.h"
main()
{
int a,b;
a=077;
b=a^3;
printf("\40: The a & b(decimal) is %d \n",b);
b^=7;
printf("\40: The a & b(decimal) is %d \n",b);
}
==============================================================
【程序54】
题目:取一个整数a从右端开始的4~7位。
程序分析:可以这样考虑:
(1)先使a右移4位。
(2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4)
(3)将上面二者进行&运算。
2.程序源代码:
main()
{
unsigned a,b,c,d;
scanf("%o",&a);
b=a>>4;
c=~(~0<<4);
d=b&c;
printf("%o\n%o\n",a,d);
}
==============================================================
【程序55】
题目:学习使用按位取反~。
1.程序分析:~0=1; ~1=0;
2.程序源代码:
#include "stdio.h"
main()
{
int a,b;
a=234;
b=~a;
printf("\40: The a's 1 complement(decimal) is %d \n",b);
a=~a;
printf("\40: The a's 1 complement(hexidecimal) is %x \n",a);
}
==============================================================
【程序56】
题目:画图,学用circle画圆形。
1.程序分析:
2.程序源代码:
/*circle*/
#include "graphics.h"
main()
{int driver,mode,i;
float j=1,k=1;
driver=VGA;mode=VGAHI;
initgraph(&driver,&mode,"");
setbkcolor(YELLOW);
for(i=0;i<=25;i++)
{
setcolor(8);
circle(310,250,k);
k=k+j;
j=j+0.3;
}
}
==============================================================
【程序57】
题目:画图,学用line画直线。
1.程序分析:
2.程序源代码:
#include "graphics.h"
main()
{int driver,mode,i;
float x0,y0,y1,x1;
float j=12,k;
driver=VGA;mode=VGAHI;
initgraph(&driver,&mode,"");
setbkcolor(GREEN);
x0=263;y0=263;y1=275;x1=275;
for(i=0;i<=18;i++)
{
setcolor(5);
line(x0,y0,x0,y1);
x0=x0-5;
y0=y0-5;
x1=x1+5;
y1=y1+5;
j=j+10;
}
x0=263;y1=275;y0=263;
for(i=0;i<=20;i++)
{
setcolor(5);
line(x0,y0,x0,y1);
x0=x0+5;
y0=y0+5;
y1=y1-5;
}
}
==============================================================
【程序58】
题目:画图,学用rectangle画方形。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
2.程序源代码:
#include "graphics.h"
main()
{int x0,y0,y1,x1,driver,mode,i;
driver=VGA;mode=VGAHI;
initgraph(&driver,&mode,"");
setbkcolor(YELLOW);
x0=263;y0=263;y1=275;x1=275;
for(i=0;i<=18;i++)
{
setcolor(1);
rectangle(x0,y0,x1,y1);
x0=x0-5;
y0=y0-5;
x1=x1+5;
y1=y1+5;
}
settextstyle(DEFAULT_FONT,HORIZ_DIR,2);
outtextxy(150,40,"How beautiful it is!");
line(130,60,480,60);
setcolor(2);
circle(269,269,137);
}
==============================================================
【程序59】
题目:画图,综合例子。
1.程序分析:
2.程序源代码:
# define PAI 3.1415926
# define B 0.809
# include "graphics.h"
#include "math.h"
main()
{
int i,j,k,x0,y0,x,y,driver,mode;
float a;
driver=CGA;mode=CGAC0;
initgraph(&driver,&mode,"");
setcolor(3);
setbkcolor(GREEN);
x0=150;y0=100;
circle(x0,y0,10);
circle(x0,y0,20);
circle(x0,y0,50);
for(i=0;i<16;i++)
{
a=(2*PAI/16)*i;
x=ceil(x0+48*cos(a));
y=ceil(y0+48*sin(a)*B);
setcolor(2); line(x0,y0,x,y);}
setcolor(3);circle(x0,y0,60);
/* Make 0 time normal size letters */
settextstyle(DEFAULT_FONT,HORIZ_DIR,0);
outtextxy(10,170,"press a key");
getch();
setfillstyle(HATCH_FILL,YELLOW);
floodfill(202,100,WHITE);
getch();
for(k=0;k<=500;k++)
{
setcolor(3);
for(i=0;i<=16;i++)
{
a=(2*PAI/16)*i+(2*PAI/180)*k;
x=ceil(x0+48*cos(a));
y=ceil(y0+48+sin(a)*B);
setcolor(2); line(x0,y0,x,y);
}
for(j=1;j<=50;j++)
{
a=(2*PAI/16)*i+(2*PAI/180)*k-1;
x=ceil(x0+48*cos(a));
y=ceil(y0+48*sin(a)*B);
line(x0,y0,x,y);
}
}
restorecrtmode();
}
==============================================================
【程序60】
题目:画图,综合例子。
1.程序分析:
2.程序源代码:
#include "graphics.h"
#define LEFT 0
#define TOP 0
#define RIGHT 639
#define BOTTOM 479
#define LINES 400
#define MAXCOLOR 15
main()
{
int driver,mode,error;
int x1,y1;
int x2,y2;
int dx1,dy1,dx2,dy2,i=1;
int count=0;
int color=0;
driver=VGA;
mode=VGAHI;
initgraph(&driver,&mode,"");
x1=x2=y1=y2=10;
dx1=dy1=2;
dx2=dy2=3;
while(!kbhit())
{
line(x1,y1,x2,y2);
x1+=dx1;y1+=dy1;
x2+=dx2;y2+dy2;
if(x1<=LEFT||x1>=RIGHT)
dx1=-dx1;
if(y1<=TOP||y1>=BOTTOM)
dy1=-dy1;
if(x2<=LEFT||x2>=RIGHT)
dx2=-dx2;
if(y2<=TOP||y2>=BOTTOM)
dy2=-dy2;
if(++count>LINES)
{
setcolor(color);
color=(color>=MAXCOLOR)?0:++color;
}
}
closegraph();
}