免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 3239|回复: 7
收起左侧

[软件] TC2.0库函数查询V1.0软件

[复制链接]

7658

主题

1160

铜板

2299

好友

技术员

为地信喝彩!

积分
106249
QQ
发表于 2010-5-23 13:12 | 显示全部楼层 |阅读模式
Snap1.jpg

TC2.0库函数查询V1.0软件.rar

231 KB, 下载次数: 4

地质啷http://weibo.com/943569550

7658

主题

1160

铜板

2299

好友

技术员

为地信喝彩!

积分
106249
QQ
 楼主| 发表于 2010-5-23 13:16 | 显示全部楼层

VC6.0上机实验手册【最新版】

VC实验补充手册

实验要求:
能够熟练使用VC6.0开发环境;

特别要求:
在实验中遇到困难时,切忌不要动不动就问老师,而是应该先思考。如果确实不能解决困难,先与坐在旁边的同学讨论,而无论这个同学在以前是否认识。如果有同学问你问题,无论你是否能解决这个问题,都应该和他讨论。如果讨论了仍然不能解决问题,就一起问老师。讨论问题的好处在于能够深刻的理解问题,记住问题。

实验内容:
Visual C++为用户开发C程序提供了一个集成环境,这个集成环境包括:源程序的输入和编辑,源程序的编译和连接,程序运行时的调试和跟踪,项目的自动管理,为程序的开发提供各种工具,并具有窗口管理和联机帮助等功能。
使用Visual C++集成环境上机调试程序可分成如下几个步骤:启动Visual C++集成环境;生成和编辑源程序;编译链接源程序;运行程序。下面详细介绍一下Visual C++的上机操作方法。

1、启动Visual C++
当在桌面上建立了VC++的图标后,可通过鼠标双击该图标启动VC++;若没有建立相应的图标,则可以通过菜单方式启动VC++,即用鼠标单击“开始”菜单,选择“程序”,选择“Microsoft Visual Studio 6.0”,选择“Microsoft Visual C++ 6.0”启动VC++。
VC++启动成功后,就产生如图1.1所示的VC++集成环境。
VC++集成环境是一个组合窗口。窗口的第一部分为标题栏;第二部分为菜单栏,其中包括“File(文件)”、“Edit(编辑)”、“View(视图)”、“Insert(插入)”、“Project(项目)”、“Build(编译、连接和运行)”、“Tools(工具)”、“Windows(窗口)”、“Help(帮助)”等菜单。第三部分为工具栏,其中包括常用的工具按钮;第四部分为状态栏。还有几个子窗口。
2、生成源程序文件
生成源程序文件的操作步骤为:
(1)选择集成环境中的“File”菜单中的“New”命令,产生“New”对话框。
(2)单击此对话框的左上角的File(文件)选项卡,选择C++ Source File选项。
(3)设置源文件保存路径
若将源文件保存在默认的文件存储路径下,则可以不必更改Location(目录)文本框,但如果想在其他地方存储源程序文件则需在对话框右半部分的Location(目录)文本框中输入文件的存储路径,也可以单击右边的省略号(…)来选择路径(例如输入“E:\\sperls\\vc试验手册\\”,表示源程序文件将存放在“E:\\sperls\\vc试验手册\\”子目录下,当然,这么做还必须有个前提,就是你的电脑上必须已经建立了“E:\\sperls\\vc试验手册” 这个文件夹)。
图1.3中源文件的保存路径就为:E:\\sperls\\vc试验手册\\。
(4)然后,我们在右上方的File(文件)文本框输入准备编辑的源程序文件的名字,例如图1.4中我们给源程序文件命名为frist.c, 当然,读者完全可以指定其他的路径名和文件名。
注意:我们指定的文件名后缀为.c,如果输入的文件名为frist.cpp,则表示要建立的是C++源程序。如果不写后缀,系统会默认指定为C++源程序文件,自动加上后缀.cpp,因此,我们编写二级C语言程序不能省略后缀.c。
3、编辑源程序
单击图1.4中的OK按钮后,弹出下面的编辑框,如图1.5所示,就可以输入程序代码了
图1.5中,我们输入的程序代码如下:
#include "stdio.h"
main( )
{
       printf("Hello,Spels!\\n")
}
在输入过程中我们故意出了一个错误。输入完毕后,我们就进入步骤6。

4、编译和调试程序
单击主菜单栏中的Build(编译),在其下拉菜单中选择Compile frist.c(编译frist.c)项。
单击Compile frist.c(编译frist.c)命令后,屏幕上出现一个如下对话框
内容是This build command requires an active project workspace,Would you like to create a default project workspace?(此编译命令要求一个有效的项目工作区,你是否同意建立一个默认的项目工作区)单击是(Y)按钮,表示同意由系统建立默认的项目工作区。
屏幕如果继续出现“将改动保存到E:\\sperls\\vc试验手册\\frist.c”,单击是(Y)。
屏幕下面的调试信息窗口指出源程序有无错误,本例显示1error(s), 0 warning(s),我们现在开始程序的调试,发现和改正程序中的错误,编译系统能检查程序中的语法错误,语法错误分为两类:一类是致命错误,以error表示,如果程序有这类错误,就通不过编译,无法形成目标程序,更谈不上运行了;另一类是轻微错误,以warning(警告)表示,这类错误不影响生成目标程序和可执行程序,但有可能影响运行的结果,因此也应当改正,使程序既无error,又无warning。
用鼠标单击调试信息窗口中右侧的向上箭头,可以看到出错的位置和性质。
进行改错时,双击调试信息窗口中的报错行,这时在程序窗口中出现一个粗箭头指向被报错的程序行(第3行),提示改错位置。

根据VC给出的错误提示,在相应的位置修改错误,例如本例中将在第5行添加一个分号,再选择Compile frist.c项重新编译,此时编译信息告诉我们:0 error(s),0 warning(s),既没有致命错误(error),也没有警告错误(warning),编译成功,这时产生一个frist.obj文件,见下面的调试信息窗口。
5、程序构建
在得到了目标程序后,我们就可以对程序进行连接了,选择主菜单Build(构建)->Build frist.exe(构建 frist.exe)。
6、程序运行
选择“Build”菜单中的“Execute”命令,则在VC++集成环境的控制下运行程序,如图1-12所示。被启动的程序在控制台窗口下运行,与Windows中运行DOS程序的窗口类似。图1-13是执行程序后,弹出DOS窗口中显示的程序执行结果。

注意:第二行Press any key to continue并非程序所指定的输出,而是VC6.0在输出完运行结果后系统自动加上的一行信息,通知用户:“按任何一键以便继续”。当你按下任何一键后,输出窗口消失,回到VC6.0主窗口,此时可以继续对源程序进行修改补充或进行其他的工作。

7、关闭程序
当完成程序编写后,选择File(文件)->Close Workspace(关闭工作区),屏幕提示:

单击是(Y),退出当前的程序编辑窗口。
  
8、 打开程序文件
如果我们需要打开已经保存的文件,在VC6.0中选择File->Open菜单或按Ctrl+O键,或单击工具栏中的Open小图标来打开Open对话框。


从弹出的对话框中选择所需的文件,打开该文件,程序显示在编辑窗口。
  
如果在修改后,仍保存在原来的文件中,可以选择File(文件)->Save(保存),或用Ctrl+S快捷键或单击工具栏中的小图标来保存文件。另外,如果不想将源程序存放到原先指定的文件中,可以不选Save项,而选择Save As(另存为)项,并在弹出的Save As对话框中指定文件路径和文件名。

补充:VC6.0系统工具栏有几图标分别对应Compile(编译)、Build(构建),当进行Compile(编译)后,!Execute(执行)也变得可用,我们也可以不使用菜单中的相应选项,而单击这些工具栏图标进行操作。此外,还有相应的快捷键Compile(Ctrl+F7)、Build(F7)和!Execute(Ctrl+F5)。

本资料版权归个人所有,欢迎转载,但必须注明出处,谢谢合作!

VC6.0上机实验手册【最新版】.rar

755 KB, 下载次数: 1

地质啷http://weibo.com/943569550

7658

主题

1160

铜板

2299

好友

技术员

为地信喝彩!

积分
106249
QQ
 楼主| 发表于 2010-5-23 13:24 | 显示全部楼层

谭浩强C语言教程word版

1    C语言概述    2
1.1    C语言的发展过程    2
1.2    当代最优秀的程序设计语言    2
1.3    C语言版本    2
1.4    C语言的特点    3
1.5    面向对象的程序设计语言    3
1.6    C和C++    3
1.7    简单的C程序介绍    4
1.8    输入和输出函数    5
1.9    C源程序的结构特点    6
1.10    书写程序时应遵循的规则    6
1.11    C语言的字符集    6
1.12    C语言词汇    7
1.13    Turbo C 2.0集成开发环境的使用    8
1.13.1    Turbo C 2.0简介和启动    8
1.13.2    Turbo C 2.0集成开发环境    8
1.13.3    File菜单    9
1.13.4    Edit菜单    10
1.13.5    Run菜单    11
1.13.6    Compile菜单    12
1.13.7    Project菜单    13
1.13.8    Options菜单    14
1.13.9    Debug菜单    18
1.13.10    Break/watch菜单    19
1.13.11    Turbo C 2.0的配置文件    20
2    程序的灵魂—算法    1
2.1    算法的概念    1
2.2    简单算法举例    1
2.3    算法的特性    4
2.4    怎样表示一个算法    4
2.4.1    用自然语言表示算法    4
2.4.2    用流程图表示算法    4
2.4.3    三种基本结构和改进的流程图    8
2.4.4    用N-S流程图表示算法    9
2.4.5    用伪代码表示算法    10
2.4.6    用计算机语言表示算法    11
2.5    结构化程序设计方法    11

........


对计算机二级感兴趣的可以看看,很好的资料,全国计算机二级C语言学习教程《谭浩强》,免费提供,欢迎下载!

谭浩强C语言教程word版.rar

677 KB, 下载次数: 7

地质啷http://weibo.com/943569550

7658

主题

1160

铜板

2299

好友

技术员

为地信喝彩!

积分
106249
QQ
 楼主| 发表于 2010-5-24 21:17 | 显示全部楼层

经典C语言程序设计100例

【程序1】
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去
       掉不满足条件的排列。
2.程序源代码:
main()
{
int i,j,k;
printf("\\n");
for(i=1;i<5;i++)    /*以下为三重循环*/
  for(j=1;j<5;j++) 
   for (k=1;k<5;k++)
    {
     if (i!=k&&i!=j&&j!=k)    /*确保i、j、k三位互不相同*/
     printf("%d,%d,%d\\n",i,j,k);
    }
}


【程序2】
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高
    于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提
    成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于
    40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于
    100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。      
2.程序源代码:
main()
{
long int i;
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf("%ld",&i);
bonus1=100000*0.1;bonus2=bonus1+100000*0.75;
bonus4=bonus2+200000*0.5;
bonus6=bonus4+200000*0.3;
bonus10=bonus6+400000*0.15;
  if(i<=100000)
   bonus=i*0.1;
  else if(i<=200000)
      bonus=bonus1+(i-100000)*0.075;
     else if(i<=400000)
         bonus=bonus2+(i-200000)*0.05;
        else if(i<=600000)
            bonus=bonus4+(i-400000)*0.03;
           else if(i<=1000000)
               bonus=bonus6+(i-600000)*0.015;
              else
               bonus=bonus10+(i-1000000)*0.01;
printf("bonus=%d",bonus);
}

-----------------------------------------------------------------------------
【程序3】
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后
       的结果满足如下条件,即是结果。请看具体分析:
2.程序源代码:
#include "math.h"
main()
{
long int i,x,y,z;
for (i=1;i<100000;i++)
  { x=sqrt(i+100);   /*x为加上100后开方后的结果*/
   y=sqrt(i+268);   /*y为再加上168后开方后的结果*/
    if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/
     printf("\\n%ld\\n",i);
  }
}
-----------------------------------------------------------------------------
【程序4】
题目:输入某年某月某日,判断这一天是这一年的第几天?
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
       情况,闰年且输入月份大于3时需考虑多加一天。
2.程序源代码:
main()
{
int day,month,year,sum,leap;
printf("\\nplease input year,month,day\\n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month)/*先计算某月以前月份的总天数*/
{
  case 1:sum=0;break;
  case 2:sum=31;break;
  case 3:sum=59;break;
  case 4:sum=90;break;
  case 5:sum=120;break;
  case 6:sum=151;break;
  case 7:sum=181;break;
  case 8:sum=212;break;
  case 9:sum=243;break;
  case 10:sum=273;break;
  case 11:sum=304;break;
  case 12:sum=334;break;
  default:printf("data error");break;
}
sum=sum+day;  /*再加上某天的天数*/
  if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/
   leap=1;
  else
   leap=0;
if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
printf("It is the %dth day.",sum);}
-----------------------------------------------------------------------------
【程序5】
题目:输入三个整数x,y,z,请把这三个数由小到大输出。
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,
       然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
2.程序源代码:
main()
{
int x,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if (x>y)
{t=x;x=y;y=t;} /*交换x,y的值*/
if(x>z)
{t=z;z=x;x=t;}/*交换x,z的值*/
if(y>z)
{t=y;y=z;z=t;}/*交换z,y的值*/
printf("small to big: %d %d %d\\n",x,y,z);
}
-----------------------------------------------------------------------------
【程序6】
题目:用*号输出字母C的图案。
1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。
2.程序源代码:
#include "stdio.h"
main()
{
printf("Hello C-world!\\n");
printf(" ****\\n");
printf(" *\\n");
printf(" * \\n");
printf(" ****\\n");
}
-----------------------------------------------------------------------------
【程序7】
题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!
1.程序分析:字符共有256个。不同字符,图形不一样。      
2.程序源代码:
#include "stdio.h"
main()
{
char a=176,b=219;
printf("%c%c%c%c%c\\n",b,a,a,a,b);
printf("%c%c%c%c%c\\n",a,b,a,b,a);
printf("%c%c%c%c%c\\n",a,a,b,a,a);
printf("%c%c%c%c%c\\n",a,b,a,b,a);
printf("%c%c%c%c%c\\n",b,a,a,a,b);}
-----------------------------------------------------------------------------
【程序8】
题目:输出9*9口诀。
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
2.程序源代码:
#include "stdio.h"
main()
{
  int i,j,result;
  printf("\\n");
  for (i=1;i<10;i++)
   { for(j=1;j<10;j++)
     {
      result=i*j;
      printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/
     }
    printf("\\n");/*每一行后换行*/
   }
}
-----------------------------------------------------------------------------
【程序9】
题目:要求输出国际象棋棋盘。
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
2.程序源代码:
#include "stdio.h"
main()
{
int i,j;
for(i=0;i<8;i++)
  {
   for(j=0;j<8;j++)
    if((i+j)%2==0)
     printf("%c%c",219,219);
    else
     printf(" ");
    printf("\\n");
  }
}
-----------------------------------------------------------------------------
【程序10】
题目:打印楼梯,同时在楼梯上方打印两个笑脸。
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
2.程序源代码:
#include "stdio.h"
main()
{
int i,j;
printf("\\1\\1\\n");/*输出两个笑脸*/
for(i=1;i<11;i++)
  {
  for(j=1;j<=i;j++)
   printf("%c%c",219,219);
  printf("\\n");
  }
}

经典C语言程序设计100例.doc

124 KB, 下载次数: 2

评分

参与人数 1威望 +20 收起 理由
guoyang + 20 感谢提供!

查看全部评分

地质啷http://weibo.com/943569550

7658

主题

1160

铜板

2299

好友

技术员

为地信喝彩!

积分
106249
QQ
 楼主| 发表于 2010-5-23 13:27 | 显示全部楼层

全国计算机二级C语言试题库

全国计算机二级C语言试题库   欢迎下载

计算机二级试题库.doc

410 KB, 下载次数: 6

地质啷http://weibo.com/943569550

7658

主题

1160

铜板

2299

好友

技术员

为地信喝彩!

积分
106249
QQ
 楼主| 发表于 2010-5-23 13:28 | 显示全部楼层

二级公共基础知识总结

二级公共基础知识总结

第一章 数据结构与算法
1.1 算法
算法:是指解题方案的准确而完整的描述。
算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。
算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。特征包括:
(1)可行性;
(2)确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义性;
(3)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止,包括合理的执行时间的含义;
(4)拥有足够的情报。
算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。
指令系统:一个计算机系统能执行的所有指令的集合。
基本运算包括:算术运算、逻辑运算、关系运算、数据传输。
算法的控制结构:顺序结构、选择结构、循环结构。
算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。
算法复杂度:算法时间复杂度和算法空间复杂度。
算法时间复杂度是指执行算法所需要的计算工作量。
算法空间复杂度是指执行这个算法所需要的内存空间。
1.2 数据结构的基本基本概念
数据结构研究的三个方面:
(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;
(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;
(3)对各种数据结构进行的运算。
数据结构是指相互有关联的数据元素的集合。
数据的逻辑结构包含:
(1)表示数据元素的信息;
(2)表示各数据元素之间的前后件关系。
数据的存储结构有顺序、链接、索引等。
线性结构条件:
(1)有且只有一个根结点;
(2)每一个结点最多有一个前件,也最多有一个后件。
非线性结构:不满足线性结构条件的数据结构。
1.3 线性表及其顺序存储结构
线性表是由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。
在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。
非空线性表的结构特征:
(1)且只有一个根结点a1,它无前件;
(2)有且只有一个终端结点an,它无后件;
(3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。结点个数n称为线性表的长度,当n=0时,称为空表。
线性表的顺序存储结构具有以下两个基本特点:
(1)线性表中所有元素的所占的存储空间是连续的;
(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
ai的存储地址为:ADR(ai)=ADR(a1)+(i-1)k,,ADR(a1)为第一个元素的地址,k代表每个元素占的字节数。
顺序表的运算:插入、删除。 (详见14--16页)
1.4 栈和队列
栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。
栈按照“先进后出”(FILO)或“后进先出”(LIFO)组织数据,栈具有记忆作用。用top表示栈顶位置,用bottom表示栈底。
栈的基本运算:(1)插入元素称为入栈运算;(2)删除元素称为退栈运算;(3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针无变化。
队列是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。Rear指针指向队尾,front指针指向队头。
队列是“先进行出”(FIFO)或“后进后出”(LILO)的线性表。
队列运算包括(1)入队运算:从队尾插入一个元素;(2)退队运算:从队头删除一个元素。
循环队列:s=0表示队列空,s=1且front=rear表示队列满
1.5 线性链表
数据结构中的每一个结点对应于一个存储单元,这种存储单元称为存储结点,简称结点。
结点由两部分组成:(1)用于存储数据元素值,称为数据域;(2)用于存放指针,称为指针域,用于指向前一个或后一个结点。
在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。
链式存储方式即可用于表示线性结构,也可用于表示非线性结构。
线性链表,HEAD称为头指针,HEAD=NULL(或0)称为空表,如果是两指针:左指针(Llink)指向前件结点,右指针(Rlink)指向后件结点。
线性链表的基本运算:查找、插入、删除。
1.6 树与二叉树
树是一种简单的非线性结构,所有元素之间具有明显的层次特性。
在树结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点,简称树的根。每一个结点可以有多个后件,称为该结点的子结点。没有后件的结点称为叶子结点。
在树结构中,一个结点所拥有的后件的个数称为该结点的度,所有结点中最大的度称为树的度。树的最大层次称为树的深度。
二叉树的特点:(1)非空二叉树只有一个根结点;(2)每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。
二叉树的基本性质:
(1)在二叉树的第k层上,最多有2k-1(k≥1)个结点;
(2)深度为m的二叉树最多有2m-1个结点;
(3)度为0的结点(即叶子结点)总是比度为2的结点多一个;
(4)具有n个结点的二叉树,其深度至少为[log2n]+1,其中[log2n]表示取log2n的整数部分;
(5)具有n个结点的完全二叉树的深度为[log2n]+1;
(6)设完全二叉树共有n个结点。如果从根结点开始,按层序(每一层从左到右)用自然数1,2,….n给结点进行编号(k=1,2….n),有以下结论:
①若k=1,则该结点为根结点,它没有父结点;若k>1,则该结点的父结点编号为INT(k/2);
②若2k≤n,则编号为k的结点的左子结点编号为2k;否则该结点无左子结点(也无右子结点);
③若2k+1≤n,则编号为k的结点的右子结点编号为2k+1;否则该结点无右子结点。
满二叉树是指除最后一层外,每一层上的所有结点有两个子结点,则k层上有2k-1个结点深度为m的满二叉树有2m-1个结点。
完全二叉树是指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。
二叉树存储结构采用链式存储结构,对于满二叉树与完全二叉树可以按层序进行顺序存储。
二叉树的遍历:
(1)前序遍历(DLR),首先访问根结点,然后遍历左子树,最后遍历右子树;
(2)中序遍历(LDR),首先遍历左子树,然后访问根结点,最后遍历右子树;
(3)后序遍历(LRD)首先遍历左子树,然后访问遍历右子树,最后访问根结点。
1.7 查找技术
顺序查找的使用情况:
(1)线性表为无序表;
(2)表采用链式存储结构。
二分法查找只适用于顺序存储的有序表,对于长度为n的有序线性表,最坏情况只需比较log2n次。
1.8 排序技术
排序是指将一个无序序列整理成按值非递减顺序排列的有序序列。
交换类排序法:(1)冒泡排序法,需要比较的次数为n(n-1)/2; (2)快速排序法。
插入类排序法:(1)简单插入排序法,最坏情况需要n(n-1)/2次比较;(2)希尔排序法,最坏情况需要O(n1.5)次比较。
选择类排序法:(1)简单选择排序法, 最坏情况需要n(n-1)/2次比较;(2)堆排序法,最坏情况需要O(nlog2n)次比较。

第二章程序设计基础
2.1 程序设计设计方法和风格
如何形成良好的程序设计风格
1、源程序文档化; 2、数据说明的方法;
3、语句的结构; 4、输入和输出。
注释分序言性注释和功能性注释,语句结构清晰第一、效率第二。
2.2 结构化程序设计
结构化程序设计方法的四条原则是:1. 自顶向下;2. 逐步求精;3.模块化;4.限制使用goto语句。
结构化程序的基本结构和特点:
(1)顺序结构:一种简单的程序设计,最基本、最常用的结构;
(2)选择结构:又称分支结构,包括简单选择和多分支选择结构,可根据条件,判断应该选择哪一条分支来执行相应的语句序列;
(3)循环结构:可根据给定条件,判断是否需要重复执行某一相同程序段。
2.3 面向对象的程序设计
面向对象的程序设计:以60年代末挪威奥斯陆大学和挪威计算机中心研制的SIMULA语言为标志。
面向对象方法的优点:
(1)与人类习惯的思维方法一致;
(2)稳定性好;
(3)可重用性好;
(4)易于开发大型软件产品;
(5)可维护性好。
对象是面向对象方法中最基本的概念,可以用来表示客观世界中的任何实体,对象是实体的抽象。
面向对象的程序设计方法中的对象是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位,由一组表示其静态特征的属性和它可执行的一组操作组成。
属性即对象所包含的信息,操作描述了对象执行的功能,操作也称为方法或服务。
对象的基本特点:
(1)标识惟一性;
(2)分类性;
(3)多态性;
(4)封装性;
(5)模块独立性好。
类是指具有共同属性、共同方法的对象的集合。所以类是对象的抽象,对象是对应类的一个实例。
消息是一个实例与另一个实例之间传递的信息。
消息的组成包括(1)接收消息的对象的名称;(2)消息标识符,也称消息名;(3)零个或多个参数。
继承是指能够直接获得已有的性质和特征,而不必重复定义他们。
继承分单继承和多重继承。单继承指一个类只允许有一个父类,多重继承指一个类允许有多个父类。
多态性是指同样的消息被不同的对象接受时可导致完全不同的行动的现象

第三章软件工程基础
3.1 软件工程基本概念
计算机软件是包括程序、数据及相关文档的完整集合。
软件的特点包括:
(1)软件是一种逻辑实体;
(2)软件的生产与硬件不同,它没有明显的制作过程;
(3)软件在运行、使用期间不存在磨损、老化问题;
(4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题;
(5)软件复杂性高,成本昂贵;
(6)软件开发涉及诸多的社会因素。
软件按功能分为应用软件、系统软件、支撑软件(或工具软件)。
软件危机主要表现在成本、质量、生产率等问题。
软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。
软件工程包括3个要素:方法、工具和过程。
软件工程过程是把软件转化为输出的一组彼此相关的资源和活动,包含4种基本活动:
(1)P——软件规格说明;
(2)D——软件开发;
(3)C——软件确认;
(4)A——软件演进。
软件周期:软件产品从提出、实现、使用维护到停止使用退役的过程。
软件生命周期三个阶段:软件定义、软件开发、运行维护,主要活动阶段是:
(1)可行性研究与计划制定;
(2)需求分析;
(3)软件设计;
(4)软件实现;
(5)软件测试;
(6)运行和维护。
软件工程的目标和与原则:
目标:在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。
基本目标:付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发软件易于移植;需要较低的费用;能按时完成开发,及时交付使用。
基本原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。
软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。
软件开发技术包括:软件开发方法学、开发过程、开发工具和软件工程环境。
软件工程管理包括:软件管理学、软件工程经济学、软件心理学等内容。
软件管理学包括人员组织、进度安排、质量保证、配置管理、项目计划等。
软件工程原则包括抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。
3.2 结构化分析方法
结构化方法的核心和基础是结构化程序设计理论。
需求分析方法有(1)结构化需求分析方法; (2)面向对象的分析的方法。
从需求分析建立的模型的特性来分:静态分析和动态分析。
结构化分析方法的实质:着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。
结构化分析的常用工具
(1)数据流图; (2)数据字典; (3)判定树; (4)判定表。
数据流图:描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统功能建模。
数据字典:对所有与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义,使得用户和系统分析员对于输入、输出、存储成分和中间计算结果有共同的理解。
判定树:从问题定义的文字描述中分清哪些是判定的条件,哪些是判定的结论,根据描述材料中的连接词找出判定条件之间的从属关系、并列关系、选择关系,根据它们构造判定树。
判定表:与判定树相似,当数据流图中的加工要依赖于多个逻辑条件的取值,即完成该加工的一组动作是由于某一组条件取值的组合而引发的,使用判定表描述比较适宜。
数据字典是结构化分析的核心。
软件需求规格说明书的特点:
(1)正确性;
(2)无岐义性;
(3)完整性;
(4)可验证性;
(5)一致性;
(6)可理解性;
(7)可追踪性。
3.3 结构化设计方法
软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,软件设计是确定系统的物理模型。
软件设计是开发阶段最重要的步骤,是将需求准确地转化为完整的软件产品或系统的唯一途径。
从技术观点来看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。
结构设计:定义软件系统各主要部件之间的关系。
数据设计:将分析时创建的模型转化为数据结构的定义。
接口设计:描述软件内部、软件和协作系统之间以及软件与人之间如何通信。
过程设计:把系统结构部件转换成软件的过程描述。
从工程管理角度来看:概要设计和详细设计。
软件设计的一般过程:软件设计是一个迭代的过程;先进行高层次的结构设计;后进行低层次的过程设计;穿插进行数据设计和接口设计。
衡量软件模块独立性使用耦合性和内聚性两个定性的度量标准。
在程序结构中各模块的内聚性越强,则耦合性越弱。优秀软件应高内聚,低耦合。
软件概要设计的基本任务是:
(1)设计软件系统结构; (2)数据结构及数据库设计;
(3)编写概要设计文档; (4)概要设计文档评审。
模块用一个矩形表示,箭头表示模块间的调用关系。
在结构图中还可以用带注释的箭头表示模块调用过程中来回传递的信息。还可用带实心圆的箭头表示传递的是控制信息,空心圆箭心表示传递的是数据。
结构图的基本形式:基本形式、顺序形式、重复形式、选择形式。
结构图有四种模块类型:传入模块、传出模块、变换模块和协调模块。
典型的数据流类型有两种:变换型和事务型。
变换型系统结构图由输入、中心变换、输出三部分组成。
事务型数据流的特点是:接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。
详细设计:是为软件结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。
常见的过程设计工具有:图形工具(程序流程图)、表格工具(判定表)、语言工具(PDL)。
3.4 软件测试
软件测试定义:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。
软件测试的目的:发现错误而执行程序的过程。
软件测试方法:静态测试和动态测试。
静态测试包括代码检查、静态结构分析、代码质量度量。不实际运行软件,主要通过人工进行。
动态测试:是基本计算机的测试,主要包括白盒测试方法和黑盒测试方法。
白盒测试:在程序内部进行,主要用于完成软件内部CAO作的验证。主要方法有逻辑覆盖、基本基路径测试。
黑盒测试:主要诊断功能不对或遗漏、界面错误、数据结构或外部数据库访问错误、性能错误、初始化和终止条件错,用于软件确认。主要方法有等价类划分法、边界值分析法、错误推测法、因果图等。
软件测试过程一般按4个步骤进行:单元测试、集成测试、验收测试(确认测试)和系统测试。
3.5 程序的调试
程序调试的任务是诊断和改正程序中的错误,主要在开发阶段进行。
程序调试的基本步骤:
(1)错误定位;
(2)修改设计和代码,以排除错误;
(3)进行回归测试,防止引进新的错误。
软件调试可分表静态调试和动态调试。静态调试主要是指通过人的思维来分析源程序代码和排错,是主要的设计手段,而动态调试是辅助静态调试。主要调试方法有:
(1)强行排错法;
(2)回溯法;
(3)原因排除法。

第四章 数据库设计基础
4.1 数据库系统的基本概念
数据:实际上就是描述事物的符号记录。
数据的特点:有一定的结构,有型与值之分,如整型、实型、字符型等。而数据的值给出了符合定型的值,如整型值15。
数据库:是数据的集合,具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序共享。
数据库存放数据是按数据所提供的数据模式存放的,具有集成与共享的特点。
数据库管理系统:一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,是数据库的核心。
数据库管理系统功能:
(1)数据模式定义:即为数据库构建其数据框架;
(2)数据存取的物理构建:为数据模式的物理存取与构建提供有效的存取方法与手段;
(3)数据操纵:为用户使用数据库的数据提供方便,如查询、插入、修改、删除等以及简单的算术运算及统计;
(4)数据的完整性、安生性定义与检查;
(5)数据库的并发控制与故障恢复;
(6)数据的服务:如拷贝、转存、重组、性能监测、分析等。
为完成以上六个功能,数据库管理系统提供以下的数据语言:
(1)数据定义语言:负责数据的模式定义与数据的物理存取构建;
(2)数据操纵语言:负责数据的操纵,如查询与增、删、改等;
(3)数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等。
数据语言按其使用方式具有两种结构形式:交互式命令(又称自含型或自主型语言)宿主型语言(一般可嵌入某些宿主语言中)。
数据库管理员:对数据库进行规划、设计、维护、监视等的专业管理人员。
数据库系统:由数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、硬件平台(硬件)、软件平台(软件)五个部分构成的运行实体。
数据库应用系统:由数据库系统、应用软件及应用界面三者组成。
文件系统阶段:提供了简单的数据共享与数据管理能力,但是它无法提供完整的、统一的、管理和数据共享的能力。
层次数据库与网状数据库系统阶段 :为统一与共享数据提供了有力支撑。
关系数据库系统阶段
数据库系统的基本特点:数据的集成性 、数据的高共享性与低冗余性 、数据独立性(物理独立性与逻辑独立性)、数据统一管理与控制。
数据库系统的三级模式:
(1)概念模式:数据库系统中全局数据逻辑结构的描述,全体用户公共数据视图;
(2)外模式:也称子模式与用户模式。是用户的数据视图,也就是用户所见到的数据模式;
(3)内模式:又称物理模式,它给出了数据库物理存储结构与物理存取方法。
数据库系统的两级映射:
(1)概念模式到内模式的映射;
(2)外模式到概念模式的映射。
4.2 数据模型
数据模型的概念:是数据特征的抽象,从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表与操作提供一个抽象的框架。描述了数据结构、数据操作及数据约束。
E-R模型的基本概念
(1)实体:现实世界中的事物;
(2)属性:事物的特性;
(3)联系:现实世界中事物间的关系。实体集的关系有一对一、一对多、多对多的联系。
E-R模型三个基本概念之间的联接关系:实体是概念世界中的基本单位,属性有属性域,每个实体可取属性域内的值。一个实体的所有属性值叫元组。
E-R模型的图示法:(1)实体集表示法; (2)属性表法; (3)联系表示法。
层次模型的基本结构是树形结构,具有以下特点:
(1)每棵树有且仅有一个无双亲结点,称为根;
(2)树中除根外所有结点有且仅有一个双亲。
从图论上看,网状模型是一个不加任何条件限制的无向图。
关系模型采用二维表来表示,简称表,由表框架及表的元组组成。一个二维表就是一个关系。
在二维表中凡能唯一标识元组的最小属性称为键或码。从所有侯选健中选取一个作为用户使用的键称主键。表A中的某属性是某表B的键,则称该属性集为A的外键或外码。
关系中的数据约束:
(1)实体完整性约束:约束关系的主键中属性值不能为空值;
(2)参照完全性约束:是关系之间的基本约束;
(3)用户定义的完整性约束:它反映了具体应用中数据的语义要求。
4.3关系代数
关系数据库系统的特点之一是它建立在数据理论的基础之上,有很多数据理论可以表示关系模型的数据操作,其中最为著名的是关系代数与关系演算。
关系模型的基本运算:
(1)插入 (2)删除 (3)修改 (4)查询(包括投影、选择、笛卡尔积运算)
4.4 数据库设计与管理
数据库设计是数据应用的核心。
数据库设计的两种方法:
(1)面向数据:以信息需求为主,兼顾处理需求;
(2)面向过程:以处理需求为主,兼顾信息需求。
数据库的生命周期:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。
需求分析常用结构析方法和面向对象的方法。结构化分析(简称SA)方法用自顶向下、逐层分解的方式分析系统。用数据流图表达数据和处理过程的关系。对数据库设计来讲,数据字典是进行详细的数据收集和数据分析所获得的主要结果。
数据字典是各类数据描述的集合,包括5个部分:数据项、数据结构、数据流(可以是数据项,也可以是数据结构)、数据存储、处理过程。
数据库概念设计的目的是分析数据内在语义关系。设计的方法有两种
(1)集中式模式设计法(适用于小型或并不复杂的单位或部门);
(2)视图集成设计法。
设计方法:E-R模型与视图集成。
视图设计一般有三种设计次序:自顶向下、由底向上、由内向外。
视图集成的几种冲突:命名冲突、概念冲突、域冲突、约束冲突。
关系视图设计:关系视图的设计又称外模式设计。
关系视图的主要作用:
(1)提供数据逻辑独立性;
(2)能适应用户对数据的不同需求;
(3)有一定数据保密功能。
数据库的物理设计主要目标是对数据内部物理结构作调整并选择合理的存取路径,以提高数据库访问速度有效利用存储空间。一般RDBMS中留给用户参与物理设计的内容大致有索引设计、集成簇设计和分区设计。
数据库管理的内容:
(1)数据库的建立;
(2)数据库的调整;
(3)数据库的重组;
(4)数据库安全性与完整性控制;
(5)数据库的故障恢复;
(6)数据库监控。
地质啷http://weibo.com/943569550

7658

主题

1160

铜板

2299

好友

技术员

为地信喝彩!

积分
106249
QQ
 楼主| 发表于 2010-5-23 13:29 | 显示全部楼层

怎样学好C语言

怎样学好C语言
《C程序设计》的内容很丰富,按照我们现在的教学大纲,教学的主要内容是基础知识、四种结构的的程序设计、函数与数组的应用和一些简单的算法。在学习时,同学们应该把主要精力放在这些部分,通过实践(练习和上机调试等熟练掌握。当然,在初学C语言时,可能会遇到有些问题理解不透,或者表达方式与以往数学学习中不同(如运算符等),这就要求不气馁,不明白的地方多问多想,鼓足勇气进行学习,待学完后面的章节知识,前面的问题也就迎刃而解了,这一方面我感觉是我们同学最欠缺,大多学不好的就是因为一开始遇到困难就放弃,曾经和好多同学谈他的问题,回答是听不懂、不想听、放弃这样三个过程,我反问,这节课你听过课吗?回答又是没有,根本就没听过课,怎么说自己听不懂呢?相应的根本就没学习,又谈何学的好?

  学习C语言始终要记住“曙光在前头”和“千金难买回头看”,“千金难买回头看”是学习知识的重要方法,就是说,学习后面的知识,不要忘了回头弄清遗留下的问题和加深理解前面的知识,这是我们学生最不易做到的,然而却又是最重要的。比如:在C语言中最典型的是关于结构化程序设计构思,不管是那种教材,一开始就强调这种方法,这时也许你不能充分体会,但是学到函数时,再回头来仔细体会,温故知新,理解它就没有那么难了。学习C语言就是要经过几个反复,才能前后贯穿,积累应该掌握的C知识。

一.学好C语言的运算符和运算顺序

  这是学好《C程序设计》的基础,C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。在学习中,只要我们对此合理进行分类,找出它们与我们在数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟。

  先要明确运算符按优先级不同分类,《C程序设计》运算符可分为15种优先级,从高到低,优先级为1 ~ 15,除第2、3级和第14级为从右至左结合外,其它都是从左至右结合,它决定同级运算符的运算顺序。下面我们通过几个例子来说明:

  (1)5*8/4%10 这个表达式中出现3种运算符,是同级运算符,运算顺序按从左至右结合,因此先计算5 *8=40,然后被4除,结果为10,最后是%(求余数)运算,所以表达式的最终结果为10%10 = 0;

  (2)a = 3;b = 5;c =++ a* b ;d =a + +* b;
  对于c=++a*b来说,按表中所列顺序,+ +先执行,*后执行,所以+ + a执行后,a的值为4,由于+ +为前置运算,所以a的值4参与运算,C的值计算式为4*5=20而不是3*5=15了;而对于d=a++*b来说,由于a + +为后置运算,所以a值为4参与运算,使得d的值仍为20,而a参与运算后其值加1,值为5。 这个例子执行后,a的值为5,b的值为5,c的值为20,d的值也是20;

  (3)(a = 3,b = 5,b+ = a,c = b* 5)
  例子中的“,”是逗号结合运算,上式称为逗号表达式,自左向右结合,最后一个表达式的结果值就是逗号表达式的结果,所以上面的逗号表达式结果为40,a的值为3,b的值为8,c的值为40。

  (4)a=5;b=6;c=a>b?a:b;
  例中的a>b?a:b是一个三目运算,它的功能是先做关系运算a>b部分,若结果为真,则取问号后a的值,否则取冒号后b的值,因此c的值应该为6,这个运算可以用来代替if…else…语句的简单应用。

二.学好C语言的四种程序结构

(1)顺序结构

  顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。
  例如;a = 3,b = 5,现交换a,b的值,这个问题就好象交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为: c = a; a = b; b = c; 执行结果是a = 5,b = c = 3如果改变其顺序,写成:a = b; c = a; b = c; 则执行结果就变成a = b = c = 5,不能达到预期的目的,初学者最容易犯这种错误。 顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算,输出三步曲的程序就是顺序结构,例如计算圆的面积,其程序的语句顺序就是输入圆的半径r,计算s = 3.14159*r*r,输出圆的面积s。不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。
(2) 分支结构

  顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。分支结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。程序流程图是根据解题分析所绘制的程序执行流程图。

  学习分支结构不要被分支嵌套所迷惑,只要正确绘制出流程图,弄清各分支所要执行的功能,嵌套结构也就不难了。嵌套只不过是分支中又包括分支语句而已,不是新知识,只要对双分支的理解清楚,分支嵌套是不难的。下面我介绍几种基本的分支结构。

①if(条件)
{
分支体
}
  这种分支结构中的分支体可以是一条语句,此时“{ }”可以省略,也可以是多条语句即复合语句。它有两条分支路径可选,一是当条件为真,执行分支体,否则跳过分支体,这时分支体就不会执行。如:要计算x的绝对值,根据绝对值定义,我们知道,当x>=0时,其绝对值不变,而x<0时其绝对值是为x的反号,因此程序段为:if(x<0) x=-x;

②if(条件)
{分支1}
else
{分支2}
  这是典型的分支结构,如果条件成立,执行分支1,否则执行分支2,分支1和分支2都可以是1条或若干条语句构成。如:求ax^2+bx+c=0的根
分析:因为当b^2-4ac>=0时,方程有两个实根,否则(b^2-4ac<0)有两个共轭复根。其程序段如下:
d=b*b-4*a*c;
if(d>=0)
{x1=(-b+sqrt(d))/2a;
x1=(-b-sqrt(d))/2a;
printf(“x1=%8.4f,x2=%8.4f\\n”,x1,x2);
}
else
{r=-b/(2*a);
i =sqrt(-d)/(2*a);
printf(“x1=%8.4f+%8.4fi\\n”r, i);
printf(“x2=%8.4f-%8.4fi\\n”r,i)
}

③嵌套分支语句:其语句格式为:
if(条件1) {分支1};
else if(条件2) {分支2}
else if(条件3) {分支3}
……
else if(条件n) {分支n}
else {分支n+1}
  嵌套分支语句虽可解决多个入口和出口的问题,但超过3重嵌套后,语句结构变得非常复杂,对于程序的阅读和理解都极为不便,建议嵌套在3重以内,超过3重可以用下面的语句。

④switch开关语句:该语句也是多分支选择语句,到底执行哪一块,取决于开关设置,也就是表达式的值与常量表达式相匹配的那一路,它不同if…else 语句,它的所有分支都是并列的,程序执行时,由第一分支开始查找,如果相匹配,执行其后的块,接着执行第2分支,第3分支……的块,直到遇到break语句;如果不匹配,查找下一个分支是否匹配。这个语句在应用时要特别注意开关条件的合理设置以及break语句的合理应用。

(3)循环结构:
  循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do –while循环和for循环。四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误,在学习中我们主要学习while、do…while、for三种循环。常用的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用,这就要清楚三种循环的格式和执行顺序,将每种循环的流程图理解透彻后就会明白如何替换使用,如把while循环的例题,用for语句重新编写一个程序,这样能更好地理解它们的作用。特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。

  在学完这三个循环后,应明确它们的异同点:用while和do…while循环时,循环变量的初始化的操作应在循环体之前,而for循环一般在语句1中进行的;while 循环和for循环都是先判断表达式,后执行循环体,而do…while循环是先执行循环体后判断表达式,也就是说do…while的循环体最少被执行一次,而while 循环和for就可能一次都不执行。另外还要注意的是这三种循环都可以用break语句跳出循环,用continue语句结束本次循环,而goto语句与if构成的循环,是不能用break和 continue语句进行控制的。

  顺序结构、分支结构和循环结构并不彼此孤立的,在循环中可以有分支、顺序结构,分支中也可以有循环、顺序结构,其实不管哪种结构,我们均可广义的把它们看成一个语句。在实际编程过程中常将这三种结构相互结合以实现各种算法,设计出相应程序,但是要编程的问题较大,编写出的程序就往往很长、结构重复多,造成可读性差,难以理解,解决这个问题的方法是将C程序设计成模块化结构。
(4)模块化程序结构

  C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写成一个C函数,然后通过主函数调用函数及函数调用函数来实现一大型问题的C程序编写,因此常说:C程序=主函数+子函数。 因些,对函数的定义、调用、值的返回等中要尤其注重理解和应用,并通过上机调试加以巩固。

三.掌握一些简单的算法

  编程其实一大部分工作就是分析问题,找到解决问题的方法,再以相应的编程语言写出代码。这就要求掌握算法,根据我们的《C程序设计》教学大纲中,只要求我们掌握一些简单的算法,在掌握这些基本算法后,要完成对问题的分析就容易了。如两个数的交换、三个数的比较、选择法排序和冒泡法排序,这就要求我们要清楚这些算法的内在含义,其中选择法排序和冒泡法排序稍难,但只要明白排序的具体过程,对代码的理解就不难了。如用选择法对10个不同整数排序(从小到大),选择法排序思路:设有10个元素a[1]~a[10],将a[1]与a[2]~a[10]比较,若a[1]比a[2]~a[10]都小,则不进行交换,即无任何操作;若a[2]~a[10] 中有一个比a[1]小,则将其中最大的一个(假设为a)与a[1]交换,此时a[1]中存放了10个中最小的数。第二轮将a[2]与a[3]~a[10]比较,将剩下9个数中的最小者a与a[2]交换,此时a[2] 中存放的10个数中第2小的数;依此类推,共进行9轮比较,a[1]到a[10]就已按从小到大的顺序存放。即每一轮都找出剩下数中的最小一个,代码如下:
for(i=1;i<=9;i++)
for(j=i+1;j<=10;j++)
if(a>a[j]
{temp=a;
a=a[j];
a[j]=temp;
}
  结语:当我们把握好上述几方面后,只要同学们能克服畏难、厌学、上课能专心听讲,做好练习与上机调试,其实C语言并不难学。
地质啷http://weibo.com/943569550

79

主题

1万

铜板

55

好友

地信院士

人生来是注定要成功的

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2067
发表于 2010-5-25 15:55 | 显示全部楼层
是什么 哦,,先看看
该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表