c语言高级编程及实例剖析
C语言功能强大,具有丰富灵活的控制与数据结构、简洁而高效的语句表达、清晰的程序结构、良好的移植性、较小的空间开销等优点,已被广泛应用于系统软件与应用软件的开发中。.
本书以深化程序设计语言C语言为目的,以具体常见的计算机硬件与操作系统为背景,讲述在微机上编写精巧、美观、友好的应用软件。本书内容与实例并进,对C语言编程做了深入和具体的探讨。涉及的知识面广,从内存管理,到文本屏幕界面设计,再到文件操作、图形图像操作、中断、通信技术、基本总线接口编程和游戏开发应用,几乎涵盖了C语言编程的方方面面。通过对本书的学习,读者将对C语言高级编程有一个深刻的理解和掌握。
本书在内容安排上采用内容与实例并进的方式。每一章中,先讲述相关内容,然后通过实例解析讲述内容的具体应用。实例解析注重对实例的分析,对方法的详细讲解,以及对知识点的归纳总结。本书对各个实例以需求分析、源代码解析、运行结果和归纳总结为主线进行剖析,通过实例来讲解知识点,又通过相应的知识点来分析实例。通过研读,读者可以很快掌握此方面的知识,并较快将其应用到工程开发中。在结构安排上,充分考虑了层次性和内容上的循序渐进。
本书包括9章,主要内容如下。
第1章为内存管理,主要针对优化内存使用、提高内存的使用效率、提高程序运行速度。该章介绍了PC的存储器结构和基本的堆管理函数,包括学生信息数据库实例和巧用内存管理创建通信录实例。通过本章的学习,读者将对亡语言的内存管理有一个清晰的了解和认识。
第2章为文本屏幕界面设计,包括文本方式控制、窗口设置和文本屏幕输出函数、清屏和光标操作函数、屏幕移动与存取函数、状态查询函数等内容。该章还详细剖析了创建弹出式菜单实例、文本方式下拉式菜单和将屏幕分为两个窗口进行对话的实例。通过本章的学习,读者可以掌握如何对文本屏幕界面进行操作。..
第3章为文件高级操作,介绍标准文件的基本输入输出操作和一些实用的文件处理方法,包括文件的加密与解密、文件的分割与合并等。通过本章的学习,读者将会逐步掌握一些实用的文件处理技巧。
第4章为图形图像,介绍如何使用Turbo C提供的图形函数绘制基本的图形(包括画点、线、矩形和条形图,画圆、椭圆和扇形图等)、对图形的颜色控制函数、封闭图形的填色函数及有关画图函数、屏幕操作函数、图形方式下的文本输出函数、动画技术、菜单生成技术、图形程序使用环境、直接存储存取和SVGA编程,还介绍使用这些基本图形的实际应用,图形图像综合应用——用动画演示排序算法。通过本章的学习,读者将逐步掌握如何使用C语言绘制图形。
第5章为中断,介绍中断的基本概念、鼠标中断编程的应用、键盘中断编程的应用和用中断方式制作的菜单等。通过本章的学习,读者将掌握对鼠标和键盘的中断控制。
第6章为通信技术,主要介绍Winsock编程基础、Cscoket编程技术、串并口编程,双机连接方法等,并通过双机并口通信实例和网络通信编程实例的剖析讲述了通信技术的实际应用。通过本部分的学习,读者将逐步掌握通信技术。
第7章为基本总线接口编程,主要介绍ISA总线、PCI总线、PCI总线配置和采用中断方式的信号采集程序。通过本章的学习,读者将对总线接口编程有一定了解。
第8章为游戏开发,介绍DOS环境下的C语言游戏编程,是综合实例。魔方游戏实例,实际上是对直接写屏、中断、多任务、内存技术、动画技术、显示技术和优化算法等各种编程技术,及内存、声卡、键盘、鼠标等各种硬件原理和硬件编程的综合应用。
第9章是综合开发实例——信息管理系统。本部分将重点向读者介绍如何采用模块化程序设计思想来设计一个综合的C程序,提高读者编写大型程序的能力。
本书主要针对C语言程序设计的高级读者,适合已经熟悉和掌握了C语言的基础知识,想用C语言开发更完美的软件,更为深入地了解C语言的一些细节和使用技巧的读者。本书可以使学习过C语言语法的初学者快速成长为C语言编程高手,也可以作为工程人员的参考手册。
本书由王为青、刘变红编着,参与本书编辑和修改的还有徐强、刘艳伟、吴洋、房明浩、严雨、王亮、梅乐夫、刘艳袆等同志。在此,对以上人员致以诚挚的谢意!
由于本书涉及的范围比较广泛,作者的经验有限,书中难免有不足或错误之处,敬请各位读者批评指正。
‘贰’ C语言中递归调用的实例以及讲解。
下面演示一个斐波那契数列前N项和#include <stdio.h>
#define COL 10 //一行输出10个
long scan()
{ //输入求fibonacci函数的第N项
int n;
printf("Input the N = ");
scanf("%d",&n);
return n;
}
long fibonacci(int n)
{ //fibonacci函数的递归函数
if (0==n||1==n) { //fibonacci函数递归的出口
return 1;
}
else {
return fibonacci(n-1)+fibonacci(n-2);
//反复递归自身函数直到碰到出口处再返回就能计算出第n项的值
}
}
int main(void)
{
int i,n;
n = scan();
printf("Fibonacci数列的前%d项\n", n);
for (i=0; i<n;) //输出fibonacci函数前n项每项的值
{
printf("%-10ld",fibonacci(i++)); //调用递归函数并且打印出返回值
if(i%COL==0)
{ //若对COL取余等于0就换行,也就是控制每行输出多少个,
//而COL=10就是每行输出10个
printf("\n");
}
}
printf("\n");
return 0;
}
‘叁’ 哪本C语言入门的书比较好
如果你英语很棒,你完全可以看
Herbert
Schildt着
戴健鹏译
《ANSI
C祥解》
Herbert
Schildt着
英文名《C
How
to
program,second
Edition》
这些都是很好的书,你能看懂就看吧
看不懂就谭浩强的吧,他也是参考这些书的,别说他的不好,他只是没把难的写出来,如果对一个新手直接给个几万行的代码,你能认为你有信心学下去?
不用简单的问题举例,非要用很难实现的问题给你当例题讲,你能听懂?
你还有继续学下去的勇气么?
到时你什么都听不懂,你还想学么?
你能把他书后的各题完全搞懂,轻松搞定的话那就很不错了,以后再想深入就不难了,没有书能完全介绍C语言的,现在高级语言功能太强了,超过了C,所以C只当基础来学,几乎所有书后都有,其他函数如有需要,可查看函数手册,所以除非你看懂外文书,否则还是老实点吧,别一口想吃成胖子,到时得不偿失!
‘肆’ C语言高级编程及实例剖析的介绍
本书结合实例,深入浅出地介绍了C语言在主要应用领域的编程技术。全书共9章,分别为内存管理、文本屏幕界面设计、文件高级操作、图形图像、中断、通信技术、基本总线接口编程、游戏开发和综合开发实例——信息管理系统。
‘伍’ c语言计算机图形编程的程序求各种实例(并说明一下啊)谢谢谢!!
1》DDA法画直线的例子:void CMyView::OnDdaline()
{
CDC* pDC=GetDC();//获得设备指针
int xa=100, ya=300, xb=300, yb=200,c=RGB(0,255,0);//定义直线的两端点,直线颜色
int x,y;
float dx, dy, k;
dx=(float)(xb-xa), dy=(float)(yb-ya);
k=dy/dx, y=ya;
if(abs(k)<1)
{
for (x=xa;x<=xb;x++)
{pDC->SetPixel (x,int(y+0.5),c); <br> y=y+k;}
}
if(abs(k)>=1)
{
for (y=ya;y<=yb;y++)
{pDC->SetPixel (int(x+0.5),y,c); <br> x=x+1/k;}
}
ReleaseDC(pDC);
}
void CMyView::OnBresenhamline()
{
CDC* pDC=GetDC();
int x,y,i,e,dx,dy,t;
int x1=100,y1=200,x2=350,y2=100,c=RGB(0,0,255);
dx=abs(x2-x1),dy=abs(y2-y1),e=2*dy-dx;
x=x1,y=y2;
if(dx>dy)
{
for(i=0;i<=dx;i++)
{
pDC->SetPixel(x,y,c);
x++;
if(e>=0)
{y++;<br> e=e+2*dy-2*dx;}else e=e+dy;
}
}
else
{
t=dx;
dx=dy;
dy=t;
for(i=0;i<=dx;i++)
{
pDC->SetPixel(x,y,c);
x++;
if(e>=0)
{y++;<br> e=e+2*dy-2*dx;}else e=e+dy;
}
}
}2》中心画圆法 做园 void CMyView::OnMidpointcircle()
{ CDC* pDC=GetDC();
int xc=100,int yc=200,float R=50,float alpha=1;
int i;
float sinalpha,cosalpha,xi,yi,xii,yii,steps;
sinalpha=sin(pi*alpha);
cosalpha=cos(pi*alpha);
xi=xc+R;
yi=yc;
steps=360;
for(i=0;i<steps;i++)//每隔45°确定一个园上的点。
{
xii=xc+(xi-xc)*cosalpha-(yi-yc)*sinalpha;//确定第一点xii,yii.其与圆心的连线和 xi,yi与圆心的连线夹角45°
yii=yc+(xi-xc)*sinalpha+(yi-yc)*cosalpha;
pDC->MoveTo(xi,yi);
pDC->LineTo(xii,yii);
xi=xii;
yi=yii;
}
}3》 bresenham法画圆void CMyView::OnBresenhamcircle()
{
// TODO: Add your command handler code here
CDC* pDC=GetDC();
int xc=300, yc=300, r=40, c=RGB(0,0,255);
int x,y,p; x=0,y=r,p=3-2*r;
while(x<y)
{
pDC->SetPixel(xc+x, yc+y, c);
pDC->SetPixel(xc-x, yc+y, c);
pDC->SetPixel(xc+x, yc-y, c);
pDC->SetPixel(xc-x, yc-y, c);
pDC->SetPixel(xc+y, yc+x, c);
pDC->SetPixel(xc-y, yc+x, c);
pDC->SetPixel(xc+y, yc-x, c);
pDC->SetPixel(xc-y, yc-x, c);
if (p<0)
p=p+4*x+6;
else
{
p=p+4*(x-y)+10;
y-=1;
}
x+=1;
}
if(x==y)
pDC->SetPixel(xc+x, yc+y, c);
pDC->SetPixel(xc-x, yc+y, c);
pDC->SetPixel(xc+x, yc-y, c);
pDC->SetPixel(xc-x, yc-y, c);
pDC->SetPixel(xc+y, yc+x, c);
pDC->SetPixel(xc-y, yc+x, c);
pDC->SetPixel(xc+y, yc-x, c);
pDC->SetPixel(xc-y, yc-x, c);
ReleaseDC(pDC);
}与图形相关的还有很多很多,扫描线填充法,种子填充法 等等想要真正了解的话 推荐一本书!《计算机图形学》以上程序只能说明引用方法,毕竟很对关于以上程序的东西 都在自己做的头文件里。