浙江大学C颜晖原版C3课件

合集下载

C语言程序设计(第三版)何钦铭-颜晖主编-知识点清单

C语言程序设计(第三版)何钦铭-颜晖主编-知识点清单

C语言知识点清单(杭电姚晔整理)第1章基本数据类型和表达式1.1 关键字和标识符标识符(p8)1.2 基本数据类型常用数据类型(p21,p122),字符型数据(p50,p123),原码反码补码(p120),实型数据的存储(p121)1.3 常量和变量常量和变量的定义(p21),整型字符型实型常量与变量(p123)1.4 输入和输出函数printf(p23),scanf(p27),字符型数据的输入和输出(scanf/printf/getchar/putchar/p51/p128),整型数的输入输出(scanf/printf格式控制p125),实型数的输入输出(scanf/printf格式控制p127) 1.5 常用库函数常用数学函数(p28)1.6 运算符和表达式算术运算(p22),赋值运算(p23),关系运算(p25),逻辑运算(p52),位运算(p140),长度运算符(p142),算术表达式(p131),赋值表达式(p133),关系表达式(p134),逻辑表达式(p136),条件表达式(p139),逗号表达式(p139),运算符的优先级与结合性(p142),复合语句(P33),自动类型转换(p130),强制类型转换(p130)第2章控制结构与语句2.1 结构化程序设计数据表达(p5),流程控制(p6),主要语法单位(p9),C语言的特点(p12)2.2 顺序结构顺序控制结构(p6)2.3 选择结构if-else语句(p26,p45),多分支else-if语句(p47,p60),switch语句(p57)2.3 循环结构for语句(p32),while语句(p69),do-while语句(p73),循环嵌套(p79),循环语句的选用(p82) 2.4 转向语句break语句(p59,p75),continue语句(p76)第3章函数3.1 函数的定义函数首部(p97),函数体(p98),函数原型声明(p100),问题分析思想(p105),模块化设计(p106/p239)3.2 函数的调用调用过程(p98),调用形式(p99),参数传递(p99),返回结果(p100,p104)3.3 嵌套与递归函数的嵌套调用(p238),递归函数基本概念(p241),递归程序设计(p244)3.4 函数与变量局部变量和全局变量(p108),变量生命周期(p112),变量存储的内存分布(p113),静态变量(p113),外部变量(p258),静态全局变量(p258),变量的存储类型及作用域(附录p340)第4章数组4.1 一维数组一维数组的定义和引用(p149),一维数组的初始化(p151),一维数组的编程(p152)4.2 二维数组二维数组的定义和引用(p160),二维数组的初始化(p161),二维数组的编程(p162)4.3 字符串字符数组(p167),字符串(p168),字符串处理函数(gets/puts/strcpy/strcat/strcmp/strlen/p203) 4.4 数组与函数数组名作为函数参数(p196),冒泡排序(p199),命令行参数(p273)第5章指针5.1 指针基本知识地址与指针(p181),指针变量的定义(p182),指针的基本运算(p184),指针变量的初始化(p186) 5.2 指针与数组指针、数组和地址的关系(p192)5.3 指针与字符串字符串与字符指针(p201),用指针数组操作多个字符串(p270)5.4 指针数组与多级指针指针数组的概念(p265),指向指针的指针(p266),二维数组的指针形式(p268),5.5 指针与函数指针作为函数参数(p188),指针实现动态内存分配(malloc/free/p209),指针作为函数返回值(p278),指向函数的指针(p278)第6章结构体6.1 结构体的概念结构的定义(p219),结构变量的定义和初始化(p221),结构变量的使用(p223)6.2 结构体数组结构数组操作(p226)6.3 结构体指针结构指针的概念(p229),结构指针做函数参数(p230)6.4 单向链表链表的概念(p285),单向链表的常用操作(p286)第7章文件7.1 文件概述文件的概念(p299),文本文件与二进制文件(p300),文件结构与文件类型指针(p301),文件处理步骤(p304)7.2 打开与关闭文件打开文件(p306),关闭文件(p308)7.3 文件读写函数字符方式读写函数fgetc/fputc(p309),字符串方式读写函数fgets/fputs(p311),格式化方式读写函数fscanf/fprintf(p314),数据块方式读写函数fread/fwrite(p315),文件定位函数rewind/fseek/ftell(p317),检测文件指针状态函数feof/ferror/clearerr(p317)第8章其他知识点8.1 编译预处理文件包含(p249),常用标准头文件(p251),宏基本定义(p247),带参数的宏定义(p248),条件编译(p252)8.2 共用体联合变量(附录p339)8.3 枚举枚举变量(附录p339)。

C语言程序设计(第3版)何钦铭 颜 晖 第7章 数组

C语言程序设计(第3版)何钦铭 颜 晖 第7章  数组

第7章数组【练习7-1】将例7-3 程序中的break 语句去掉,输出结果有变化吗?假设输入数据不变,输出什么?解答:当去掉break 语句后,一旦找到数据将不跳出循环,而是继续往下找值为x 的元素,因此程序输出会有变化。

当输入数据仍为2 9 8 1 9 时,输出将是index is 1 index is 4。

【练习7-2】将数组中的数逆序存放。

输入一个正整数n(1<n<=10),再输入n个整数,存入数组a中,输出最大值及其对应的最小下标,下标从0开始。

试编写相应程序。

解答:#include<stdio.h>int main(void){int i,n,temp;int a[10];printf("Input n:");scanf("%d",&n);页脚内容1printf("Input %d integer:",n);for(i=0;i<n;i++)scanf("%d",&a[i]);printf("After reversed:");for(i=0;i<n/2;i++){temp=a[i];a[i]=a[n-1-i];a[n-1-i]=temp;}for(i=0;i<n;i++)printf("%d ",a[i]);return 0;}【练习7-3】求最大值及其下标。

输入一个正整数n(1<n<=10),再输入n个整数,存入数组a中,将先数组a中的这n个数逆序存放,在按顺序输出数组a中的n各元素。

试编写相应程序。

解答:#include<stdio.h>页脚内容2int main(void){int i,index,n;int a[10];printf("Enter n:");scanf("%d",&n);printf("Enter %d integrs:",n);for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=n-1;i>=0;i++)printf("%d ",a[i]);return 0;}【练习7-4】找出不是两个数组共有的元素。

C语言程序设计(何钦铭_颜晖_主编)ppt课件

C语言程序设计(何钦铭_颜晖_主编)ppt课件

printf("%d, %x\n", 012, 012);
return 0;
}
0……01010
精选ppt课件2021
32
例6-2(2) 输入整型数据
# include <stdio.h> int main(void) {
int a, b;
input a, b: 17 17 15 17 f, 17
printf("input a, b:");
'\n' '\101' '\x41' 'A'
所有字符都可以用转义字符表示
精选ppt课件2021
26
6.2.2 变量
在程序运行过程中,其值可以被改变的量。
变量必须先定义,后使用 定义变量时要指定变量名和数据类型 变量应该先赋值,后引用
精选ppt课件2021
27
变量名:合法的标识符
变量的定义
整型、实型、字符型数据的存储
6.1.2 基本数据类型
整型、实型、字符型
精选ppt课件2021
4
6.1.1 数据的存储-整型数据
设整数在内存中用2个字节存储
1 000 0001 1000 0001 0 000 0001 1000 0001
符号位 1:负数 0:正数
精选ppt课件2021
5
数值的表示方法-原码 反码 补码
16或32位
short [int] unsigned short [int] 16位
long [int] unsigned long [int]
32位
有符号 short
1 000 0000 0000 0000 -32768 -215

浙江大学C颜晖原版课件C3

浙江大学C颜晖原版课件C3

精选版课件ppt
21
C 程序的基本结构
结构化程序设计基本要求: o 自顶向下,模块化设计; o 使用三种基本结构构造程序; o 程序书写规范,切勿随心所欲; o 清晰第一,效率第二。
▪ 思路清晰 ▪ 书写清晰(变量名、函数名、注解等) ▪ 书写使用阶梯形
精选版课件ppt
22
int merge(int a1[ ], int n1, int a2[ ], int n2) /* 把2个排好序的数组a1、a2归并到a2上 */ {
精选版课件ppt
15
例3-4 交换变量的值
例 对两个变量先输入两个值,然后交换这两个变量的值。
x
temp
y
步骤: 1 x -> temp 2 x <- y 3 temp->y
精选版课件ppt
16
例3-4 交换变量的值
对两个变量先输入两个值,然后交换这两个变量的值。 main() { int x, y, temp;
Chap3 算法与c程序设计
算法 C语句概述 C 程序的基本结构
精选版课件ppt
1
算法
程序
用编程语言编写,完成特定功能的语句的集合。
编程步骤:
1. 明确问题
2. 问题
若干具体步骤(算法)
3. 算法
程序
4. 上机调试运行
算法
解题方法或解题步骤的精确描述
算法表示:文字描述、流程图和N-S流程图
精选版课件ppt
11
C 程序的基本结构
顺序结构 语句1 ; 语句2 ; 语句3 ; ……..
语句1; 语句2;
冯.若依曼机 工作原理
——顺序执行
精选版课件ppt

C语言程序设计(第3版)何钦铭 颜 晖 第11章 指针进阶

C语言程序设计(第3版)何钦铭 颜 晖 第11章  指针进阶

第11章指针进阶【练习11-1】如何理解指针数组,它与指针、数组有何关系?为何可以用二级指针数组进行操作?解答:指针数组——存放指针的一个数组。

指针数组名也是指向常量二级指针,因为指针数组名总是指向数组的第一个元素。

【练习11-2】用指针数组处理多个字符串有何优势?可以直接输入多个字符串给为初始化的指针数组吗?为什么?解答:C语言中字符串的地址是按顺序存放的,用指针指向字符串的首地址,然后取出这个地址里面的值,然后指针加一,取出里面的值,这样就能输出整个字符串了。

用指针数组可以接收多个字符串,对这些字符串的操作可以做到相互隔离,一个指针数组的元素作为一个指针对应一个字符串。

【练习11-3】参考例11-3,使用二级指针操作改写例11-4中的程序A。

解答:#include<stdio.h>#include<string.h>void fsort(char **ch,int n);int main(void){int i;char *pcolor[]={"red","blue","yellow","green","black"};char **ch;ch=pcolor;fsort(ch,5);for(i=0;i<5;i++)printf("%s ",*(ch+i));return 0;}void fsort(char **ch,int n){int k,j;char *temp;for(k=1;k<n;k++)for(j=0;j<n-k;j++)if(strcmp(*(ch+j),*(ch+j+1))>0){temp=*(ch+j);*(ch+j)=*(ch+j+1);*(ch+j+1)=temp;}}【练习11-4】改写例11-8中的函数match(),要求返回字符串s中最后一个字符ch的位置(地址)。

C语言程序设计何钦铭颜晖第7章数组

C语言程序设计何钦铭颜晖第7章数组

C语言程序设计何钦铭颜晖第7章数组《C语言程序设计(第3版)》是由何钦铭和颜晖共同编写的一本C语言教材,主要介绍了C语言的基础知识和编程方法。

其中第7章是关于数组的内容,涵盖了数组的定义、初始化、访问元素以及数组的运算等方面。

本文将从以下几个方面对本章进行详细介绍。

首先,第7章首先介绍了数组的概念和定义。

数组是一组有序的、相同类型的数据元素的集合,通过下标来唯一标识数组中的每个元素。

章节中详细介绍了数组的声明和初始化方式,包括静态数组和动态数组的定义。

其次,本章还讲解了数组元素的访问和操作。

可以通过数组的下标来访问数组中的元素,数组的下标从0开始,依次递增。

章节通过实例演示了如何通过循环遍历数组和输入输出函数来操作数组中的元素。

同时,还介绍了数组的一些特殊运算,比如数组的拷贝和交换等操作。

接着,本章进一步讨论了多维数组的概念和使用方法。

多维数组是一种特殊的数组类型,每个元素还可以拥有多个子元素。

本章通过示例介绍了多维数组的定义和初始化方式,并且详细演示了如何通过嵌套循环来遍历多维数组。

此外,本章还介绍了C语言中常用的数组函数和头文件。

通过引入相关的头文件和函数,可以方便地进行数组的操作和处理。

例如,<stdlib.h>头文件中的rand(函数可以用来生成随机数,<string.h>头文件中的strcpy(函数可以用来拷贝字符串等。

最后,本章还提供了一些数组的应用实例,包括数组的排序、查找和统计。

通过这些实例,读者可以更好地理解如何运用数组来解决实际问题。

总的来说,第7章《数组》是《C语言程序设计(第3版)》中的一章,主要介绍了数组的概念、定义、访问和操作,以及多维数组和数组函数的使用方法。

通过本章的学习,读者可以全面掌握C语言中数组的知识和应用技巧,为后续的编程学习和实践奠定良好基础。

C语言程序设计第3版何钦铭颜晖第9章结构

C语言程序设计第3版何钦铭颜晖第9章结构

C语言程序设计(第3版)何钦铭-颜-晖-第9章--结构第9章结构【练习9-1】定义一个能够表示复数的结构类型,一个复数包括实数与虚数两个部分。

解答:struct complex{float real;float imaginary;};【练习9-2】人的出生日期由年、月、日组成,请在例 9-1 中的通讯录结构中增加一个成员:出生日期,用嵌套定义的方式重新定义该结构类型。

解答:struct date{int year;int month;int day;};struct student{int num;char name[10];struct date birthday;int computer,english,math;double average;};【练习9-3】例 9-1 中,如果要计算的是三门课程的课程平均成绩,应该如何改写程序?解答:#include<stdio.h>struct student{int num;char name[10];int computer,english,math;double average;};int main(void){int i, n;double math_sum,english_sum,computer_sum;struct student s1;printf("Input n:");scanf("%d", &n);printf("Input the student's number, name and course scores:\n"); math_sum=english_sum=computer_sum=0;for(i=1;i<=n;i++){printf("No.%d:",i);scanf("%d%s%d%d%d",&s1.num,,&s1.math,&s1.english,&s1puter );math_sum+=s1.math;english_sum+=s1.english;computer_sum+=s1puter;}printf("math_ave:%.2lf\nenglish_ave:%.2lf\ncomputer_ave:%.2lf\n",math_sum/n,english_sum/n,computer_sum/n);return 0;}【练习9-4】定义一个包含 5 名学生信息的结构数组,并对该结构数组的所有元素进行初始化。

C语言程序设计(第3版)何钦铭-颜-晖-第6章--回顾数据类型和表达式

C语言程序设计(第3版)何钦铭-颜-晖-第6章--回顾数据类型和表达式

C语言程序设计(第3版)何钦铭-颜-晖-第6章--回顾数据类型和表达式第6章回顾数据类型和表达式【练习6-1】输入一个十进制数,输出相应的八进制数和十六进制数。

例如:输入31,输出37 和1F。

解答:#include <stdio.h>int main(void){int x;scanf("%d", &x);printf("%o %x\n", x, x);return 0;}【练习6-2】在程序段:printf("input a, b: ");scanf("%o%d", &a, &b);printf("%d %5d\n", a, b); /* %5d 指定变量b 的输出宽度为5 */中,如果将scanf("%o%d", &a, &b) 改为scanf("%x%d", &a, &b),仍然输入__17 ___17__,输出是什么?解答:23 17(中间有三个空格)【练习6-3】如果字符型变量ch 的值是大写字母,怎样的运算可以把它转换为小写字母?解答:ch=ch-‘A’+‘a’;【练习6-4】证明下列等价关系。

(1)a&&(b||c) 等价于a&&b||a&&c。

(2)a||(b&&c)等价于(a||b)&&(a||c)。

(3)!(a&&b)等价于!a||!b。

(4)!(a||c)等价于!a&&!b。

解答:(1)a b c a&&(b||c) a&&b a&&c a&&b||a&&c0(假) 0(假) 0(假) 0 0 0 00(假) 0(假) 非0(真) 0 0 0 0a b a||b !(a||b) !a !b !a&&!b 0(假) 0(假) 0 1 1 1 10(假) 非0(真) 1 0 1 0 0非0(真) 0(假) 1 0 0 1 0非0(真) 非0(真) 1 0 0 0 0习题61.设float x=2.5, y=4.7; int a=7;,printf(“%.1f”, x+a%3*(int) (x+y)%2/4)的结果为 AA.2.5 B.2.8 C.3.5 D.3.82.执行下列程序段的输出结果是 D 。

浙江大学C颜晖原版c1课件

浙江大学C颜晖原版c1课件
• 程序设计语言的发展 • C语言特点 • C程序结构 • 基本的输入输出
浙江大学C颜晖原版c1
程序设计语言的发展
• 机器语言
• 汇编语言
• 高级语言
• 通用语言 fortran、 basic VB
C
C++ ( VC++ BC++ )
• 数据库语言 foxbase 、FoxPro SQL
Delphi Powerbuild
C程序结构
例1 在屏幕上显示: Programming is fun!
浙江大学C颜晖原版c1
C程序结构 例1 在屏幕上显示:
1.任何程序都有主函数 2.程序由若干语句组成
Programming is fun! # include <stdio.h>
3.语句由;结束
void main( )
பைடு நூலகம்
主函数
{
scanf("%d, %d", &m, &n) ; 要求输入: 5, 6 scanf("m=%d, n=%d", &m, &n) ; 要求输入: m=5, n=6
scanf("%d%d", &m, &n); y = y*i; /* 计算 k! */
resm = fact(m); /* 调re用tu函r数n fya;ct计算/m* !结*/ 果返回*/
resn = fact(n);
/* }调用函数fact计算n!*/
printf("%d, %d\n", resm, resn);
浙江大学C颜晖原版c1
格式控制
• 格式控制说明 %…

C语言程序设计(第3版)何钦铭 颜 晖 第5章 函数

C语言程序设计(第3版)何钦铭 颜 晖 第5章  函数

第5章函数【练习5-1】使用函数求1到n之和:输入一个正整数 n,输出1~n之和。

要求自定义和调用函数sum(n)求 1~n 之和。

若要计算 m~n(m<n)之和,又该如何定义函数?试编写相应程序。

解答:#include <stdio.h>int sum(int n);int main(void){int n;int sum;printf("Enter n:")scanf("%d", &n);printf("sum = %d\n", sum(n));return 0;}int sum(int n){int result, i;result = 0;for(i = 1; i <= n; i++)result = result + i;return result;}若要计算 m~n(m<n)之和,则需要在 main()中定义 2 个变量 m 和 n:scanf("%d%d", &m, &n);printf("sum = %d\n", sum(m, n));同时在函数定义时需设置 2 个形参:int sum(int m, int n){int result, i;result = 0;for(i = m; i <= n; i++)result = result + i;return result;}【练习5-2】使用函数找最大值:输入2个数,输出其中较大的数。

要求定义和调用函数 max(a, b)找出并返回 a、b 中较大的数。

试编写相应程序。

解答:#include <stdio.h>double max(double a, double b);int main(void){int a, b;printf(“Input a and b:”);scanf("%lf%lf",&a, &b);printf("max= %lf\n", max(a, b));return 0;}double max(double a, double b){if(a > b)return a;elsereturn b;}【练习5-3】数字金字塔:输入一个正整数 n,输出n行数字金字塔。

C语言程序设计(第3版)何钦铭 颜 晖 第9章 结构

C语言程序设计(第3版)何钦铭 颜 晖 第9章  结构

第9章结构【练习9-1】概念一个能够表示复数的结构类型,一个复数包括实数与虚数两个部份。

解答:struct complex{float real;float imaginary;};【练习9-2】人的诞生日期由年、月、日组成,请在例9-1 中的通信录结构中增加一个成员:诞生日期,用嵌套概念的方式从头概念该结构类型。

解答:struct date{int year;int month;int day;};struct student{int num;char name[10];struct date birthday;int computer,english,math;double average;};【练习9-3】例9-1 中,假设是要计算的是三门课程的课程平均成绩,应该如何改写程序?解答:#include<>struct student{int num;char name[10];int computer,english,math;double average;};int main(void){int i, n;double math_sum,english_sum,computer_sum;struct student s1;printf("Input n:");scanf("%d", &n);printf("Input the student's number, name and course scores:\n");math_sum=english_sum=computer_sum=0;for(i=1;i<=n;i++){printf("No.%d:",i); scanf("%d%s%d%d%d",&,,&,&,&;math_sum+=;english_sum+=;computer_sum+=;}printf("math_ave:%.2lf\nenglish_ave:%.2lf\ncomputer_ave:%.2lf\n",math_sum/n ,english_sum/n,computer_sum/n);return 0;}【练习9-4】概念一个包括5 名学生信息的结构数组,并对该结构数组的所有元素进行初始化。

浙江大学《C程序设计》本科教学课件(何钦铭版)jc_chap04

浙江大学《C程序设计》本科教学课件(何钦铭版)jc_chap04

图形初始化 鼠标初始化 输出计算器外观 鼠标控制计算器的使用
结束 简单计算器的流程图
第4章 大型综合程序范例解析
简单计算器
界面外观 :
第4章 大型综合程序范例解析
简单计算器
界面设计:
(1)背景采用浅蓝色,用灰色作底色和红色作前景色画一个bar3d图 形,模拟立体效果;
(2)第1行是数据输入和结果输出的信息显示框,使用bar函数,用 黄色填充;
第4章 大型综合程序范例解析
简单计算器
数据结构设计: 简单计算器进行加减乘除运算的函数compute()
中,定义以下主要标志变量:
(1) sign:表示'+'、'-'、'*'、'/'等运算符的整数变量。 值为0表示当前未单击过运算符。 (2) flag:输入数据时是否单击了小数点。单击了小 数点,flag为1,否则为0。
第4章 大型综合程序范例解析
简单计算器-函数设计
picture.c
void picture()
绘制计算 器界面
① 使用图形函数绘制计算器外框
② 调用公用函数bottonup()绘制弹 起效果的按钮
③ 调用系统outtextxy()输出按钮 标签
④ 调用系统outtextxy()输出使用 说明等信息
初始化,接着显示简单计算器外观,并接受用户的 鼠标控制使用。如果单击了鼠标右键,则程序关闭 图形方式并结束运行。
第4章 大型综合程序范例解析
简单计算器
主程序流程:
void main() {
GraphInit(); initmouse(); picture(); compute (); closegraph(); }

C语言程序设计(第3版)何钦铭-颜-晖-第5章--函数

C语言程序设计(第3版)何钦铭-颜-晖-第5章--函数

第5章函数【练习5-1】使用函数求1到n之和:输入一个正整数n,输出1〜n之和。

要求自定义和调用函数sum(n)求1〜n之和。

若要计算m〜n(m<n)之和,又该如何定义函数?试编写相应程序。

解答:#include<stdio.h>intsum(intn);intmain(void){intn;intsum;printf("Entern:")scanf("%d",&n);printf("sum=%d\n",sum(n));return0;}intsum(intn){intresult,i;result=0;for(i=1;i<=n;i++)result=result+i;returnresult;}若要计算m〜n(m<n)之和,则需要在main()中定义2个变量m和n:scanf("%d%d",&m,&n);printf("sum=%d\n",sum(m,n));同时在函数定义时需设置2个形参:intsum(intm,intn){intresult,i;result=0;for(i=m;i<=n;i++)result=result+i;returnresult;}【练习5-2】使用函数找最大值:输入2个数,输出其中较大的数。

要求定义和调用函数max(a,b)找出并返回a、b中较大的数。

试编写相应程序。

解答:#include<stdio.h>doublemax(doublea,doubleb);intmain(void)inta,b;printf(“Inputaandb:”);scanf("%lf%lf",&a,&b);printf("max=%lf\n",max(a,b));return0;}doublemax(doublea,doubleb){if(a>b)returna;elsereturnb;}【练习5-3】数字金字塔:输入一个正整数n,输出n行数字金字塔。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浙江大学C颜晖原版C3
C 程序的基本结构
• 顺序结构 • 选择结构 • 循环结构
浙江大学C颜晖原版C3
C 程序的基本结构
பைடு நூலகம்
• 顺序结构
语句1 ; 语句2 ; 语句3 ;
……..
语句1; 语句2;
冯.若依曼机工作原 理
——顺序执行
浙江大学C颜晖原版C3
例3-4 交换变量的值
对两个变量先输入两个值,然后交换这两个变量的值。
do {

scanf (“%d” , &x); /* 输入一个数 */

count ++;
/* 每输入一个数,记一下数 */

if (x>0)
/* 判断输入数〉0否 */
sum = sum + x; /* 是〉0,则加到累加和中 */

} while ( count <100 ); /* 未输入完100个数,则重复 */
浙江大学C颜晖原版C3
C 程序的基本结构
• 顺序结构 • 选择结构
满足
不满足
条件?
语句1 ;
语句2 ;
条件
满足
不满足
语句1 语句2
浙江大学C颜晖原版C3
选择结构
例 输入变量x,计算y值。 1 当 x>=0
y= -1 当 x<0
main( ) {
int x, y;
scanf(“%d”,&x); if (x>0) y = 1; else y = -1; printf(“x=%d, y=%d”, x, y); }
if (n1>0){ for (i=0; i<n2; i++) b[i]=a2[i]; i=0; while (i<n1&&j<n2){ if (a1[i]>b[j]){ a2[k]=b[j]; j++; } else{ a2[k]=a1[i]; if (a1[i]==b[j]) j++; i++; } k++;
printf ( “%d” , sum );
/* 浙输江大出学累C颜加晖原和版C*3 /
C语句概述
C语言的五类语句 • 1 函数调用语句 • 2 表达式语句 • 3 空语句 • 4 复合语句 • 5 程序结构控制语句
C语言的所有语句必须以分号 ; 结束
浙江大学C颜晖原版C3
C语句概述
1 函数调用语句
scanf( ”%d%d”, &a , &b ); printf( "%d" , x );
2 表达式语句
x = 3; i++;
3 空语句
;
浙江大学C颜晖原版C3
C语句概述
• 4复合语句 { statement 1; statement 2; …… statement n; }
5 程序结构控制语句
条件控制(第四章) 循环控制(第五章)
浙江大学C颜晖原版C3
例3-1 算法描述 (流程图)
开始 输入一个数
流向线
该数 >0 N
起止框
Y 累加
处理框
输入完100个
N

Y
输出累加和
判断框
结束
浙江大学C颜晖原版C3
例3-1 算法描述(N-S流程图)
输 入 一 个 数
处理
该 数 〉 0
判断
满 足
不 满 足
加 到 累 加 和 中
输 入 完 1 0 0 个 数 否
满足
y=1
浙江大学C颜晖原版C3
x>0 不满足
y = -1
C 程序的基本结构
• 顺序结构 • 选择结构 • 循环结构
满足 条件?
不满足
重复执行的语句;
后一语句;
浙江大学C颜晖原版C3
循环结构
void main( ) {
int i, max, x;
i=9;
scanf("%d", &x)
max = x;
temp
y
浙江大学C颜晖原版C3
例3-4 交换变量的值
例 对两个变量先输入两个值,然后交换这两个变量的值。
x
步骤: 1 x -> temp 2 x <- y 3 temp->y
temp
y
浙江大学C颜晖原版C3
例3-4 交换变量的值
对两个变量先输入两个值,然后交换这两个变量的值。 main() { int x, y, temp; scanf(“%d%d”, &x, &y); temp = x; x = y; y = temp; printf(“first=%d, second=%d”, x, y); }
浙江大学C颜晖原版C3
算法与程序
• 程序=算法+数据结构 + 结构化程序设计方法 + 语言工具和环境
浙江大学C颜晖原版C3
例3-1
从键盘中输入100个整数,对其中的正整数进行累 加,最后输出结果。
算法描述(自然语言)
⑴ 输入一个数; ⑵ 如果该数 > 0,累加它; ⑶ 如果100个数没有输入完,转步骤(1); ⑷ 输入完100个数后,输出累加和。
• 思路清晰 • 书写清晰(变量名、函数名、注解等) • 书写使用阶梯形
浙江大学C颜晖原版C3
int merge(int a1[ ], int n1, int a2[ ], int n2) /* 把2个排好序的数组a1、a2归并到a2上 */ {
int i,j=0,k=0, b[10];
if (n2==0) for ( ; j<n1; j++,k++) a2[k]=a1[j];
重复
输 出 累 加 和
浙江大学C颜晖原版C3
算法的C语句实现
void main( ) {
int x; int count; int sum;
/* 存放输入数的单元 */ /* 存放输入个数的单元 */ /* 存放累加和的单元 */
作准 备 工
count = 0; sum = 0; /* 工作单元初值 */
while ( i > 0 ){
骤重 复 步
}
scanf (“%d”, &x); if ( x > max ) max = x; i --;
printf("max number is %d" ,max);
}
浙江大学C颜晖原版C3
C 程序的基本结构
• 结构化程序设计基本要求:
• 自顶向下,模块化设计; • 使用三种基本结构构造程序; • 程序书写规范,切勿随心所欲; • 清晰第一,效率第二。
Chap3 算法与c程序设计
• 算法 • C语句概述 • C 程序的基本结构
浙江大学C颜晖原版C3
算法
• 程序
用编程语言编写,完成特定功能的语句的集合。
• 编程步骤:
1. 明确问题
2. 问题
若干具体步骤(算法)
3. 算法
程序
4. 上机调试运行
• 算法
解题方法或解题步骤的精确描述 算法表示:文字描述、流程图和N-S流程图
x
temp
y
步骤:
1 x -> temp
浙江大学C颜晖原版C3
例3-4 交换变量的值
例 对两个变量先输入两个值,然后交换这两个变量的值。
x
temp
y
步骤: 1 x -> temp 2 x <- y
浙江大学C颜晖原版C3
例3-4 交换变量的值
例 对两个变量先输入两个值,然后交换这两个变量的值。
x
步骤: 1 x -> temp 2 x <- y 3 temp->y
相关文档
最新文档