谭浩强算法与基本结构_第1页
谭浩强算法与基本结构_第2页
谭浩强算法与基本结构_第3页
谭浩强算法与基本结构_第4页
谭浩强算法与基本结构_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

3.1算法计算机科学家沃思(NikiklausWirth)提出一个公式:

数据结构+算法=程序数据结构:对数据(操作对象)的描述---数据的类型和组织形式。算法:对操作步骤的描述。编写程序的本质:

对哪些数据进行什么样的一系列加工就可以达到目标。

第3章算法和基本程序设计特点:

有穷性

确定性

可行性

有输入

有输出

评价标准:

正确性

可读性

健壮性

高效率

低存储量需求

3.1.1算法——程序的灵魂算法是解决问题的一系列操作步骤的集合。3.1.2算法的表示

自然语言流程图N-S图伪代码PAD图流程图例:求三个整数的和流程图开始输出sum的值结束输入x,y,zsum=x+y+zmain(){floatx,y,z,sum;

scanf(“%f%f%f\n”,&x,&y,&z);

sum=x+y+z;

printf(“sum=%f\n”,sum);}例1例2:求三个数中最小数流程图开始输出min的值输入a,b,ca<bNmin=amin=bY结束c<minmin=cYN#include<stdio.h>main(){

int

a,b,c,min;

scanf("%d%d%d",&a,&b,&c);

if(a<b) min=a;

else min=b;

if(c<min) min=c;

printf("min=%d",min);}例2N-S图

例:求三个整数的和流程图开始输出sum的值结束输入x,y,zsum=x+y+z输出sum的值sum=x+y+z输入x,y,zN-S图例:求三个数中最小数。流程图开始输出min的值输入a,b,ca<bNmin=amin=bY结束c<minmin=cYNN-S图min=bmin=aa<bYNmin=cc<minYN输入a,b,c输出min的值3.2结构化程序设计方法基本思想:把一个复杂问题的求解过程分步进行,后一步在前一步的基础上细化,这样每步所考虑的子问题都相对易于理解和处理,每步都只用三种基本结构(顺序、选择、循环),进行复合和嵌套。结构化程序设计原则:自顶向下模块化限制Goto语言使用

——清晰第一效率第二3.3程序基本结构

顺序、选择、循环结构ABPYN

若P为真,则执行A,否则执行B。APNY

若P为真,则执行A,否则跳过A。K=K1A1A2AiAn……K2KiKn由选择结构派生出多分支结构

当型循环当P为真,反复执行A,P为假时出循环。直到型循环先执行A,再判断,若P为真,反复执行A,直到P为假出循环。3.4顺序结构程序设计

1.C语句

2.C程序语句分类:由若干语句组成,每个语句以分号结束。①控制语句②表达式语句③函数调用语句④空语句⑤复合语句9种控制语句:1.条件判断语句if()…else… switch(){…}

2.循环控制语句for()… while()…do…while()3.转移语句breakcontinuegoto

return例如:main(){inta,b;a=b=100;{

floatc=10.23;

printf("%f\n",c);}

printf("%d%d\n",a,b);}控制语句1.选择分支控制语句if()…else… switch(){…}

2.循环控制语句for()… while()…do…while()3.其他控制语句break、continue、gotoreturn说明表达式后面加一个分号,构成表达式语句x=3;y=y+5;x=a-b&&c||d;printf("x=%d,y=%d\n",x,y);sort(a,10);表达式语句

赋值语句函数调用语句注意:①分号是语句必不可少的一部分②单独的一个分号“;”构成一个空语句例如:;(空语句,是最简单的C语句)复合语句

用一对花括号“{}”括起来的若干条语句花括号中可以是说明语句、表达式语句、控制语句,也可以是复合语句例如:⑴if(a>b){max=a;min=b;}

⑵for(n=1;n<10;n++)

{p=n+p;if(p>=100)

{

printf(“%d\n”,p);break;

}

}

复合语句中如果有说明性语句,应该写在可执行语句的前面例如:

main(){inta,b;a=b=100;{floatc=10.23;

printf("%f\n",c);}

printf("%d%d\n",a,b);}要特别注意:花括号的配对花括号的位置总结结构化程序设计过程输入:将数据送入计算机输出:将计算机处理的结果数据送出到输出设备。

◆C语言中,数据输入/输出是由库函数完成。

◆使用库函数时,用预编译命令将有关“头文件”包括到源文件中。

◆标准输入输出库函数:“stdio.h”文件

3.5数据的输入输出例一、字符数据的输入输出1.putchar

函数(字符输出函数)格式:putchar(c)

参数:c为字符常量、变量或表达式

功能:把字符c输出到显示器上#include<stdio.h>main(){intc;chara;c=65;a='B';

putchar(c);putchar('\n');putchar(a);}AB格式:getchar()功能:从键盘读入一字符,遇回车结束并回显例

1#include<stdio.h>main(){intc;

printf("Enteracharacter:");c=getchar();

printf("%c--->hex%x\n",c,c);}Enteracharacter:AA--->hex412.getchar函数(字符输入函数)例

2例33.getch函数格式:getch()功能:从键盘读入一字符,

不用回车结束,不回显例:#include<stdio.h>main(){charc;c=getch();

putchar(c);}a

4.Gets函数(字符串输入函数)从键盘读入一串字符gets(字符串变量名)以回车结束5.Puts函数(字符串输出函数)将字符串显示在屏幕上并换行puts(字符串变量名)二、格式输入与输出输出若干任意类型的数据1、printf函数(格式输出)格式:printf(“格式控制串”,输出表)功能:按指定格式向显示器输出数据格式控制串:格式说明:普通字符或转义序列:%格式字符,用于指定输出格式原样输出输出表:要输出的数据(可以没有,多个时以“,”分隔)例详细说明见附表整型数据

%d输入十进制整型数%u输入无符号的十进制整型数%o输入八进制整型数%x输入十六进制整型数实型数据

%f输入小数形式的单精度实型数%e输入指数形式的单精度实型数字符型数据

%c输入单个字符%s输入一个字符串表1-printf函数格式说明dx,Xoucse,Efg%%十六进制无符号整数不带符号十进制整数十进制整数指数形式浮点小数单一字符字符串八进制无符号整数小数形式浮点小数e和f中较短一种百分号本身inta=567;printf(“%d”,a);inta=255;printf(“%x”,a);inta=65;printf(“%o”,a);inta=-1;printf(“%u”,a);chara=65;printf(“%c”,a);printf(“%s”,“ABC”);floata=567.789;printf(“%e”,a);floata=567.789;printf(“%f”,a);floata=567.789;printf(“%g”,a);printf(“%%”);567ff10165535AABC5.67789e+02567.789000567.789%表2-格式说明符.n对实数,指定小数点后位数(四舍五入)对字符串,指定实际输出位数修饰符功能m输出数据域宽,数据长度<m,左补空格;否则按实际输出输出数据在域内左对齐(缺省右对齐)-指定在有符号数的正数前显示正号(+)+输出数值时指定左面不使用的空位置自动填00在八进制和十六进制数前显示前导0,0x#在d,o,x,u前,指定输出精度为long型在e,f,g前,指定输出精度为double型l表3-附加格式说明符

若实际位数多于定义的宽度,按实际位数输出;少于则补以空格;若不指定输出宽度,按实际位数输出。例2、scanf函数(格式输入)格式:

scanf(“格式控制串”,地址表)功能:按指定格式从键盘读入数据,存入地址表指

定的存储单元中,按回车键结束说明:标准库函数,在头文件“stdio.h”中定义格式控制串:和格式输出函数的含义相同地址表:变量的地址,用取地址运算符&例

inta;

scanf(“%d”,&a);10a=10例scanf("%d:%d:%d",&h,&m,&s);

输入12:30:45则12h,30m,45s例scanf("%d,%d",&a,&b)

输入3,4

则3a,4b例scanf("%d%d%d",&a,&b,&c);

输入122436输入分隔符的指定◆格式串中两个格式符间隔字符◆格式串两个格式符无间隔字符,以空格、TAB或回车键作为分隔例#include<stdio.h>#include<math.h>main(){floata,b,c,s,area;

printf("inputa,b,c:");

scanf("%f,%f,%f",&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));

printf("area=%7.2f\n",area);}综合例题:例1输入三角形边长,求面积。公式:s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));

inputa,b,c:3,4,5area=6.00例2从键盘上输入一个字符,求出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论