当前位置: 首页 > 教学资源 > 教案模板

c语言教案模板(共19篇)

作者:zrkell | 发布时间:2020-05-17 19:20:02 收藏本文 下载本文

第1篇:C语言教案

C语言程序设计教程

课程性质:基础课

学时分配:4学时/周(授课2学时,上机2学时)适用专业及层次:非计算机专业本专科

相关课程:计算机导论、程序设计基础、数据结构

教材:《C语言程序设计教程》(第二版),李丽娟编著,人民邮电出版社,2009 推荐参考书:

C语言程序设计教程(第2版)习题解答与实验指导

王敬华编著 清华大学出版社 C语言程序设计(第2版)谭浩强

高等教育出版社 C高级实用程序设计

王士元

清华大学出版社

C语言程序设计教程(第2版)

王敬华编著 清华大学出版社

一、教学目标:

通过理论授课和上机实践,使学生掌握C程序的全部语法和程序设计的基本方法,能够比较熟练地使用C语言编写程序,培养出扎实的软件开发基本技能,并养成良好的编程风格。

通过学习了解程序设计语言、程序设计的思想、结构化程序设计方法和流程图画法、C语言的特点及基本程序结构。掌握C语言所用的基本数据类型:整型常量、实型常量、字符常量、字符串常量、符号常量和整形变量、实型变量、字符变量、指针变量。以及C语言算术运算符、逻辑运算符、位运算符、赋值运算符、地址运算符和运算符的优先级和数据类型的转换、表达式语句、格式化输入输出函数、字符输入输出函数。掌握C语言中三种基本结构及多种变换形式。在此基础上进一步掌握C语言中数组和函数的应用、掌握C语言中指针和结构体、共用体及枚举类型数据在程序设计中的应用。了解C语言中文件的使用。

二、教学重点与难点:

第一章 引言

1 C语言的发展过程 2 C语言的特点

3 简单的C语言程序 4 C语言程序的结构 5 C语言程序的执行

难点:C语言程序的结构和执行。第二章 基本的程序语句 1.用二进制表示的数

2.基本数据类型及取值范围 3.标识符、变量和常量

4.基本运算符、表达式及运算的优先级 5.标准输入/ 输出函数简介

难点:基本数据类型及取值范围、标准输入输出函数。第三章 程序的简单算法设计 1.结构化算法的性质及结构 2.结构化算法流程图 难点:流程图的画法。第四章 分支结构

1.if语句的基本结构 2.if~else语句基本结构 3.if语句的嵌套结构

4.switch语句的基本结构 难点:if语句和switch基本结构 第五章 循环结构

1.for循环语句结构 2.while循环语句结构 3.do-while循环结构

4.break和continue语句的作用 5.循环结构的嵌套 难点:各语句的功能。第六章 函数与宏定义 1.函数的概念

①函数的声明和调用

②函数的传值方式

2.变量的作用域和存储类型 3.内部函数与外部函数 4.递归函数的设计和调用 5.预处理

难点:递归函数的设计与调用 第七章 数组

1.一维数组的概念

2.二维(多维)数组的概念 3.字符数组的概念

4.数组作为函数参数的作用 5.不同类型数组的区别

难点:数组的概念,数组作为函数参数的作用 第八章 指针

1.指针的概念

2.指针与变量的关系

3.指针的使用方法和运算

4.指针的作用

5.指针与函数的关系

6.指针与数组的关系

难点:指针的概念,指针与函数和数组的关系。第九章 构造数据类型

1.了解结构数据类型的定义及使用。 2.了解结构数据类型的意义及作用。3.了解结构变量与函数的关系。4.掌握链表的作用及操作。

5.了解联合数据类型的定义及使用。 6.了解枚举类型的定义及使用。难点:链表的作用及操作 第十章 文件操作 1.能够建立新文件和更新文件内容 2.能够从顺序文件中读取数据 3.了解对文件进行操作的步骤

4.熟悉对顺序文件进行操作的方式 5.了解对随机文件进行操作的方式 6.了解对文件的低级读写操作 难点:对文件进行操作的步骤。第十一章 位运算 1.按位取反运算 2.按位左移运算 3.按位左移运算 4.按位与运算 5.按位或运算 6.按位异或运算 7.复合位运算 难点:常用的位运算

三、主要教学方法

采用多媒体方式授课结合上机实验训练。

四、教学课时

第一章 引言(2学时)1 C语言的发展过程 2 C语言的特点

3 简单的C语言程序 4 C语言程序的结构 5 C语言程序的执行

第二章 基本的程序语句(4学时)1.用二进制表示的数

2.基本数据类型及取值范围 3.标识符、变量和常量

4.基本运算符、表达式及运算的优先级 5.标准输入/ 输出函数简介

第三章 程序的简单算法设计(2学时)1.结构化算法的性质及结构 2.结构化算法流程图 第四章 分支结构(2学时)1.if语句的基本结构 2.if~else语句基本结构 3.if语句的嵌套结构

4.switch语句的基本结构 第五章 循环结构(2学时)1.for循环语句结构 2.while循环语句结构 3.do-while循环结构

4.break和continue语句的作用 5.循环结构的嵌套

第六章 函数与宏定义(2学时)1.函数的概念

①函数的声明和调用

②函数的传值方式

2.变量的作用域和存储类型 3.内部函数与外部函数 4.递归函数的设计和调用 5.预处理

第七章 数组(6学时)1.一维数组的概念

2.二维(多维)数组的概念 3.字符数组的概念

4.数组作为函数参数的作用 5.不同类型数组的区别 第八章 指针(6学时)1.指针的概念

2.指针与变量的关系

3.指针的使用方法和运算

4.指针的作用

5.指针与函数的关系

6.指针与数组的关系

第九章 构造数据类型(2学时)

1.了解结构数据类型的定义及使用。 2.了解结构数据类型的意义及作用。3.了解结构变量与函数的关系。4.掌握链表的作用及操作。

5.了解联合数据类型的定义及使用。 6.了解枚举类型的定义及使用。第十章 文件操作(2学时)

1.能够建立新文件和更新文件内容 2.能够从顺序文件中读取数据 3.了解对文件进行操作的步骤

4.熟悉对顺序文件进行操作的方式 5.了解对随机文件进行操作的方式 6.了解对文件的低级读写操作 第十一章 位运算(2学时)1.按位取反运算 2.按位左移运算 3.按位左移运算 4.按位与运算 5.按位或运算 6.按位异或运算 7.复合位运算

第2篇:教案——C语言

授课内容:C语言 授课班级: 授课教师: 授课日期:

教学目的:

1.了解C语言的产生过程和发展特点 2.初步认识C语言程序的结构 3.了解C语言的一些相关知识

教学重点:

1.C语言程序的结构 2.C语言程序的特点

教学难点

1.C语言程序的结构特点 2.C语言程序的书写格式

授课主要内容或板书设计:

第一章 C语言概述

1.1 C语言的产生过程及特点

一、C语言出现的历史背景

二、C语言的特点

1.2 C语言程序的结构及书写格式

一、简单的C程序介绍

二、C语言的一般形式

课堂教学安排

教学过程(主要教学内容及步骤)

(一)导入新课

C语言是国际上广泛流行的、很有发展前途的计算机高级语言。以前的操作系统软件主要是用汇编语言编写的,然而,汇编语言依赖于计算机硬件,程序的可读性和可执行性都比较差。为了解决这一问题,产生了C语言。本学期我们就将共同来学习C语言的一些相关知识,本堂课先来了解一下C语言程序的发展及其结构特点。

(二)新授

1.1C语言的产生过程及特点

一、C语言出现的历史背景

1.C语言是第三代语言即为面向过程的高级语言。

第一代:机器语言;第二代:汇编语言;

在C语言的基础上又发展出来了第四代语言:面向对象的程序设计语言,例如C++和VB等高级语言。

2.C语言是在B语言基础上发展起来的。

3.C语言适合作为系统描述语言,既用来写系统软件,也可用来写应用软件。例如可使用C语言编写UNIX系统。

4.C语言的可读性、可移植性强

二、C语言的特点

C语言的特点(使用角度看)

1.表达能力强且灵活。1)语法限制不严,程序设计自由度大。2)运算符丰富。

2.程序结构清晰,适合模块化设计。

3.编写简单、易学。

4.目标程序质量高。程序执行效率高。

5.可移植性高。基本上不作修改就能用于各种型号的计算机和操作系统。

6.C语言是一种结构化程序设计语言。

7.具有丰富的数据类型。

8.具备变量指针和函数指针。指针是指和机器内存地址相关的说明项。

1.2 C语言程序的结构及书写格式

一:简单的C程序介绍

例1: main(){printf(“This is a c program.n”);}

这是一个最简单的C语言程序,最后的运行结果是在屏幕上显示:This is a c program.(光标落在下一行)。

例2:

main()/*主函数*/ { int a, b, c;/*定义变量*/ scanf(“%d, %d”, &a , &b);/*输入变量a和b的值 */ c=max(a,b);/*调用max函数,将得到的值赋给c*/ printf(“max=%d”,c);/*输出c的值*/ } int max(x,y)/*定义max函数,函数值为整形,x,y为形式参数*/ int x,y;/*对形参x,y做类型定义*/ { int z;/*函数中用到的变量z,也要加以定义*/ if(x>y)z=x;else z=y;return(z);/*将z的值返回,通过max带回调用处*/} 本例题是一个比较典型的C语言程序,运行情况是:8,5↙(输入8和5给a和b)max=8(输入c的值)说明:

1.C程序是由函数构成的。

1)一个C程序至少包含一个函数(main函数)。2)函数定义是C程序的基本单位。

3)输入输出函数使用系统提供的库函数printf和scanf。2.一个函数由两部分组成。1)函数的说明部分。例:

int

max(x,y)

↓ 函数类型

函数名 函数参数

int

x,y;

↓ 形参类型

形参

★一个函数名后面必须跟一对圆括弧,函数参数可以没有如main()。2)函数体。{…},一个函数至少有一对大括号。3.一个程序总是从main函数开始执行的,位置随意。4.书写格式自由,但每个语句后必须有一个 “;”。

5.main、int为关键字,使用小写字母,C语言区分大小写。 6.使用“/*”和“*/”对语句进行注释。二:C语言的一般形式变量定义 main(){ 变量定义 程序段} userf1(){ 变量定义 程序段}… userfn(){ 变量定义 程序段} 其中userf1()~userfn()是用户定义的函数。

(三)总结扩展:

本堂课主要学习了以下几方面内容:

1.C语言出现的历史背景;

2.C语言的特点;

3.C语言程序的结构及书写格式;

通过这些内容的学习,要求我们在深入学习之前对C语言有一个整体的认识。

(四)作业布置:

第3篇:c语言教案

第一章 绪论

一、教学目标:要求学生对C语言及C语言程序有一概括的的了解,并掌握C语言环境的功能及使用方法,为以后熟练地使用它进行上机练习做准备。

二、教学重点:掌握简单C语言程序的结构,及C语言的上机步骤。

三、教学难点:C语言编程环境的熟悉。

四、课程:讲授新课。

五、学时:两学时。

六、教学过程:

第一节 C语言概述

一、C语言简史

二、C语言的特点(优点、缺点)

(1)语言简洁紧凑,使用方便、灵活。(2)运算符丰富。(3)数据结构丰富。

(4)具有结构化的控制语句。

(5)语法限制不太严格,程序设计自由度大。

(6)C语言能进行位操作,可以直接对硬件进行操作。(7)生成目标代码质量高,程序执行效率高。

第二节 C语言程序

举例如下所示: main(){ int a,b,c;scanf(“%d,%dn”,&a,&b);c=max(a,b);printf(“max=%dn”,c);} int max(int x,int y){ int z;if(x>y)z=x;else z=y;return(z);}

一、源程序的书写格式

(1)C程序是由函数构成的。一个C源程序至少仅包含一个main函数,也可包含一个main函数和若干其他函数。

(2)函数名后必须有一对圆括号“(”和“)”,这是函数的标志。(3)函数必须由左大括号“{”和“}”结束。(4)程序中的每个语句必须有一个分号“;”。

(5)C程序书写格式自由,一行内可写多个语句,一个语句可以写在多行上。

(6)C语言本身没有输入输出语句。输入输出函数由库函数scanf和printf等函数来完成。

(7)可以用/*„*/对C程序中的任何部分作诠释。

举例:举出例子,由学生说出所举例子程序书写格式的错误。学时:两课时

二、函数的定义形式

C语言函数由两部分组成。

(1)函数的首部,即函数的第一行,包括函数名,函数类型,参数名,参数类型。(2)函数体:即大括号弧内{„}的部分。如果一函数有多个大括号弧,最外层的一对{ }号函数体的范围。

举出例子:int max(int x,int y)由学生说出函数的组成。{ }

第三节 上机操作

一、上机步骤安排如下:

1、打开Turboc2环境;

2、输入程序;

3、保存文件“Alt+F”选择,F2进行保存;

4、选择compile菜单下的“compile to OBJ”,然后再选择“compile/Link EXE file”,得到EXE文件。

5、执行程序,选择Run或“Alt+F9”按“Alt+F5”得到执行结果。

布置几个程序,由学生输入,运行,检查其结果。

七、小结:通过本章的学习,要求学生必掌握C语言的书写格式及其结构介绍,并能输入程序在Turboc环境下调试运行。

八、“教学后记:在本章的学习过程中,学生基本能熟练操作Turboc环境,并能输入程序进行调试,但由于对C语言程序结构未能完全理解,调试过程常遇到错误。

第4篇:C语言教案

C语言程序设计

教 案

课程名称:C语言程序设计 适用专业:环境、信息等 适用年级:二年级 学年学期:

任课教师:顾建新、邹家宁等 编写时间:2005年3月

《C语言程序设计》

第一章 C语言概述(2学时)

本章的教学目标:

①了解C语言的历史背景。②掌握C语言的特点。③了解C程序的组成。

本章基本要求:

①学会TC启动、退出,程序输入、编译和运行。

本章各节教学具体内容

1.1 C语言出现的历史背景 教学内容:

①C语言的功能 ②C语言的发展历史

1.2 C语言的特点

1.3 简单的C程序介绍

①通过例1.1, 1.2, 1.3了解c程序

1.4 C程序上机步骤

①程序输入、编译、运行

本章教学内容的重点

①C程序的组成和特点。

本章教学内容的深化和拓宽:TC环境下菜单项功能,程序调试和程序输入的快捷方式。

本章教学方式:多媒体授课 课时分配:2学时

本章教学过程中应注意的问题:培养学生随时保存文件 本章的主要参考书目:

①C语言实用教程 ②C程序设计

本章的思考题:

①C语言的特点是什么? ②C语言的用途和构成?

《C语言程序设计》

第四章 最简单的C程序设计(4学时)

本章的教学目标及基本要求

①掌握各种类型C语句 ②掌握赋值语句

③掌握putchar()getchar()函数 ④掌握printf()scanf()函数 ⑤掌握顺序结构的程序编写

本章各节教学内容

4.1 C语句概述 4.2 赋值语句

4.3 数据输入输出的概念及在C语言中的实现 4.4 字符数据的输入输出 4.5 顺序结构程序设计举例

本章教学内容的重点:

①字符数据输入输出、格式输入输出。

本章教学内容的深化和拓宽:

①正确使用格式符,防止不正确赋值和数据溢出。

本章教学方式:多媒体授课 课时分配:

①第1、2为1学时 ②第3、4、5为3学时

本章的主要参考书目:

①C语言实用教程

②C程序设计

本章思考题:

①在printf函数中格式符的作用是什么?

②在scanf函数中忘记了变量名前面取址符号的后果是什么?

《C语言程序设计》

第六章 循环控制(4学时)

本章的教学目标及基本要求

①掌握循环控制的作用。

②熟练掌握GOTO、while、do-while、for语句使用方法。

③使用循环语句解决实际问题。

本章各节教学内容

6.1 goto 语句

6.2 while语句 6.3 do while语句 6.4 for语句 6.5 循环的嵌套

6.6 break和continue语句

教学内容的重点:

①掌握每一个语句的使用方法。

②多重循环执行流程,如何防止死循环。

教学内容的深化:

①使用循环解决实际问题。

教学方式:多媒体授课 课时分配:

①第1、2、3节2学时 ②第4节1学时 ③第5、6节1学时

本章的主要参考书目:

①C语言实用教程

②C程序设计

本章思考题:

①当型和直到型循环有什么区别 ②break和continue语句有什么区别

《C语言程序设计》

第八章 函数(4学时)

本章的教学目标及基本要求

①掌握函数定义的一般形式。

②掌握函数参数和函数的值的概念。③掌握函数的调用方式。

④熟练函数的嵌套调用和递归调用方法。⑤掌握数组作为函数参数方法。⑥掌握变量的区域性和存储类别

本章各节教学内容及学时分配

8.1 函数概述

8.2 函数调用的一般形式 8.3 函数参数和函数的值 8.4 函数的调用 8.5 函数的嵌套调用 8.6 函数的递归调用 8.7 数组作为函数参数 8.8 局部变量和全局变量 8.9 变量的存储类别 时间分配:

①第1、2、3、4节1学时 ②第5、6节1学时 ③第7节1学时 ④第8、9节1学时

本章重点与难点

①函数的递归调用

②多维数组名做函数参数。③全局变量和局部变量

教学方法与教学手段:多媒体授课 本章的主要参考书目:

①C语言实用教程

②C程序设计

本章思考题:

①数组名和普通变量作为函数参数有什么不同 ②默认的变量作用域和存储类别是什么

《C语言程序设计》

第十章 指针(6学时)

本章的教学目标及基本要求

①掌握和理解指针的概念与用途。②掌握指向变量与一维数组的指针。

③掌握多维数组的指针、指向字符串指针和指针数组。④能使用指针的应用。

本章各节教学内容及学时分配

10.1 地址和指针的概念

10.2 指向变量的指针变量 10.3 数组指针 10.4 字符串指针 10.5 指向函数的指针 10.6 指针数组

学时分配

①第1、2节1学时 ②第3节2学时 ③第4节1学时 ④第5节1学时 ⑤第6节1学时

本章重点与难点

①二维数组的指针 ②字符串指针。③指针数组。

本章教学方法与教学手段:多媒体授课 本章的主要参考书目:

①C语言实用教程

②C程序设计

本章思考题:

①指针数组和指向数组的指针有什么区别

②多维数组的数组名的意义和维度的关系是什么

《C语言程序设计》

第十二章 位运算(1学时)

本章的教学目标及基本要求

①掌握按位与运算符&和按位或运算符|。

②掌握异或运算符^、取反运算符、左移、右移运算符。③掌握位运算赋值运算符。

本章各节教学内容及学时分配

12.1 位运算符和位运算

12.2 位运算符的应用 本章为1学时

本章重点与难点

①位运算法则

②算数与逻辑右移的区别

本章教学方法与教学手段:多媒体授课 本章的主要参考书目:

①C语言实用教程

②C程序设计

本章思考题:

①位运算符和逻辑运算符的区别 ②使用位运算的优点是什么

第5篇:c语言电子教案

第三章

第三章第三章

第三章 C CC

C程序流程设计

程序流程设计程序流程设计

程序流程设计

教学目的教学目的教学目的教学目的: ::

:C流程设计是编写程序的主要内容,通过这一章的学习,使学生掌握结构化程序设计的三种结构(顺序、选择、循环),能把实际问题通过数字化,设计算法,用C语言程序中的语

句描述出来,从而解决具体问题。

重点难点

重点难点重点难点

重点难点: ::

:选择语句和嵌套的选择语句的执行过程分析;循环语句和嵌套循环语句的执行过程

分析。C程序设计中的常用算法应用。3.1 3.13.1 3.1算法

算法算法

算法

计算机尽管可完成许多极其复杂的工作但实质上这些工作都是按照人事先编好的程序的规

定进行的,所以常把程序称为计算机的灵魂。经过对程序设计方法的探讨得出如下公式:

算法

算法算法

算法+ ++

+数据结构

数据结构数据结构

数据结构= == =程序

程序程序

程序

程序就是在数据的某些特定表示方式和结构的基础上对抽象算法的具体表述。数据结构是

程序处理的对象,而处理的方法就是算法。

3.1.1

3.1.1 3.1.1

3.1.1 算法的性质与组成要素

算法的性质与组成要素算法的性质与组成要素

算法的性质与组成要素

㈠算法的性质

算法就是进行操作的方法和操作步骤。计算机程序是用某种程序设计语言描述的解题算

法。通常有以下性质:

⑴解题算法是一有穷动作序列。

⑵此动作序列只有一个初始动作。

⑶序列中的每一个动作只有一个后继动作。

⑷序列终止表示问题得到解答或没有解答。

㈡算法的组成要素

算法含有两大组成要素:

一是操作:高级语言中所描述的操作主要包括:算术运算、逻辑运算、关系运算、函数运 算、I/O操作等。

二是控制结构:算法由一系列操作组成。同一序列按不同的顺序执行,就会得出不同的结

果。控制结构即如何控制组成算法的各操作的执行顺序。三种结构是:

⑴顺序结构 执行顺序与程序的书写顺序相同。

⑵选择结构 在执行到某一语句时,要进行判断,从中选择执行路径。

⑶循环结构 一条或多条语句重复执行若干遍。

3.1.2

3.1.23.1.2

3.1.2算法的描述

算法的描述算法的描述 算法的描述

㈠流程图与算法的结构化 三种结构的流程图:

1 顺序

分支 循环语句

语句2 语句

3 条件成立

语句1 语句2 条件 0 用辗转相除法求两个数的最大公约数的流程图描述: 用流程图表示算法灵活、自由、形象直观,可以表示任何算法。但流程图中的转移会使程

序难以阅读和维护。称为BS程序(一碗面条)㈡用N-S图描述算法

N-S图的每一种基本都是一个矩形,整个算法可像堆集木一样堆成。

㈢用PAD图描述算法 PAD图即问题分析图。

㈣伪代码与逐步细化程序设计方法

流程图、N-S图、PAD图是在种描述算法的三种图形工具。还可用伪代码来描述,伪代码是用介于自然语言和计算机语言之间的的文字符号算法描述工具,无固定格式和语法规则,通常是借用某种高级的控制结构,中间操作用自然语言,也可程序设计语言。数据结构中常用这种形式的语言描述。按自顶向下的方法,从全局出发,抽象和概括算法,主要描述“做什么”,把问题分为几个子问题。逐步细化,对“如何做”作出考虑,算法中程序设计语言的成份越来越来多。3.2 3.23.2

3.2C语句描述算法 语句描述算法语句描述算法 语句描述算法

程序就是对计算机要执行的一组操作序列的描述。组成源程序的基本单位是语句:一类是

操作;一类是控制。

3.2.1表达式语句

表达式语句表达式语句

表达式语句

C语言是一种表达式语言,所有操作运算都通过表达式来实现。

表达式语句可分为以下三种基本类型: ⑴赋值语句

x=1;y=sin(x);⑵函数调用语句

printf("This is a C program.n");⑶空语句,只有一个;没有表达式的语句 Input a,b R=a%b R0 A=b;b=r;R=a%b;Out b END

如: for(x=1;x

形成流程控制结构的语句形成流程控制结构的语句 形成流程控制结构的语句

设计程序时不仅要设计合适的操作还需设计适当的流程。高级语言一般有两种流程控制:

⑴形成流程控制结构

(如if、while、for等语句)⑵简单流程转向

(如:goto break continue 语句)顺序、选择和循环是结构化程序的三种基本结构,因顺序是自然形成的,无需在程序中加 以控制。3.2.2 3.2.23.2.2 3.2.2形成流程控制结构的语句

流程控制结构的语句流程控制结构的语句 流程控制结构的语句

一、选择型结构

if„else是选择型结构的基本形式,构成二选一的控制结构处理问题时二选一往往是不够的,由if„else嵌套可形成多选一,也可用多路选择控制结构语句switch()。

二、循环控制结构

循环控制结构一般由三部分组成:⑴进入条件 ⑵退出条件 ⑶循环体循环控制结构根据进入和退出条件可分为三种: ⑴while结构:退出条件是进入条件的“反条件”

⑵do„while结构:无条件进入,执行一次后再进入循环条件。⑶for结构:和while结构类似,但结构更紧凑,允许把初始化、修正、判断写在一起,使用方便灵活。

3.2.3

3.2.33.2.3

3.2.3限定转向语句

限定转向语句限定转向语句限定转向语句

这一类语句不形成控制结构,只是简单地使流程从其所在处转向另一处。但是它不允许用

户指定转向,而是按系统事先规定的向某一点转移。这类语句有三种:

⒈break语句

从所在处转向所在循环和多路选择结构之后,即终止这些结构的执行。

⒉continue语句

使本次循环体的执行提前结束,然后再根据循环条件是否满足决定是否进入下次循环。

⒊return语句

函数值返回或调用函数后返回,由函数返回到调用函数。使程序执行在调用函数和被调用 函数之间转移。

3.2.4

3.2.4 3.2.4

3.2.4 goto

gotogoto

goto语句 语句语句 语句

goto语句是一种使流程无条件转移的语句,作用是从所在处,转向本函数内的某一处,用

标号表示转向位置。语法形式为:

goto 标号

goto语句的无条件转向功能是造成程序不清晰的一个主要原因。应有限制的使用goto语句。本书的程序都不使用goto语句。3.2.5 C基本语句一览 基本语句一览基本语句一览 基本语句一览 非限定转

非限定转非限定转 非限定转 限定转向

限定转向限定转向 限定转向 流程转移

流程转移流程转移 流程转移 循环控制

循环控制循环控制 循环控制 选择控制

选择控制选择控制 选择控制 流程控制

流程控制流程控制 流程控制 流程控制语句

流程控制语句流程控制语句 流程控制语句

表达式语句 3.2.6

3.2.63.2.6 3.2.6复合语句与停止函数 复合语句与停止函数复合语句与停止函数 复合语句与停止函数

C语言允许把一组语句括在一对花括号之中,称为复合语句。一个复合语句的花括号后不应再加分号。

如:{ int x;x=15;pritnf("%dn",x);} 在选择和循环语句中用处最大,主要是满足条件后或循环体中执行的语句比较多时就需要复合语句。

exit是一个标准的库函数,包含在"stdlib.h"头文件中。它的作用是立即停止当前程序的执行,回到操作系统状态。exit()3.2.3.2.7

7算法设计基本方法 ㈠列举法:

根据提出的问题,列举所有可能的情况,并用问题中给出的条件检验哪些是需要的,哪些

是不需要的。用于解决是否存在,有多少种可能等问题。㈡归纳法:

通过列举少量的特殊情况,通过分析,最后找出一般关系。能反映问题的本质,并且可解决列举量为无限的问题。㈢递推法:

从已知的初始条件出发,逐次推出所求各中间结果和最后结果。方程求解等问题。㈣递归:

为了降低问题的复杂程度,将问题逐层分解,最后归结为一些最简单的问题。分解过程中并没有对问题求解,而是解决了最后那些简单问题后,再沿着原来分解的逆过程逐步进行综合。㈤减半递推

将问题的规模减半,而问题的性质不变;递推是指重复减半的过程。㈥回溯法

试探,通过分析问题,找出一个解决问题的线索,然后沿着这个线索逐步试探,试探成功问题解,试探失败,逐步回退,换别的路线再进行试探。

3.3 选择型程序设

例1:电管部门收电费有如下规定:若每月用电量不超过20度,每度电收费0.25元;若超过20度,最初的20度每度电收费0.25元,超过20度的部分每度电收费0.3元,请编一个收电费的程 序。设用电的度数为x,收电费为y,根据题意可得以下计算收电费的分段函数:

该程序的编制,需根据输入的用电度数决定计算哪一段函数。类似的问题还很多:如一元二次方程求解(需根据判别式来确定根的情况);知道三边求三角形的面积(需判断这三条边的关系)。这些都是根据输入的数值来决定程序的执行走向,还有在程序执行的过程中根据变量的变化来决定程序的执行走向的情况,在以后的编程中介绍。

不带else的if语句

if„else语句使

C语言中有两种if语句,不带else和带else,首先来看不带else:

语句格式如下: if(表达式)语句

表达式:可以是C语言中合法的表达式。

语句:C语言中可执行的任意语句,如果多于一条语句,应用{}括起来。执行过程:首先判断表达式的值,如果非0(真),则执行语句,然后执 行if语句的下一语句;如果为0(假),则跳过语句,执行if语句的下一语句。(如图所示)表达式 语句

不带else语句举例:

例:.输入三个整数,分别放入a,b,c中,要求程序把数据重新按从小到大的顺序放入a,b, c 中,然后输出a,b,c中的值。main(){ int a,b,c,t;scanf("%d%d%d",&a,&b,&c);if(a>b){t=a;a=b;b=t;} if(a>c){t=a;a=c;c=t;} if(b>c){t=b;b=c;c=t;} printf("%d,%d,%dn",a,b,c);} 此程序的流程序如下:

基本思想:先把a,b两个数从小到大排列,再用a和c进行比较,然后b和c进行比较,排出从小到大次序。分析当a=3,b=1,c=-1它们值的变化情况。3.3.

含有else子句的if语句 语句形式如下: if(表达式)语句1 else 语句2

if与else必须成对出现。

表达式是C语言中合法的表达式。

语句1和语句2是C语言中可执行语句,如果是多于一条语句,应用{}括起来,语句1后不能少“;”号。

执行过程:如果表达式为非0(真)执行语句1,然后执行if语句的下一语句;如果表达式为

0(假),执行语句2,然后执行if语句下一语句。

程序举例:

当x输入6和4时程序

main(){ int x;

scanf("%d",&x);

if(x++>5)printf("%d",x);

else printf("%dn",x--);}

执行的结果?

练习题:

1.输入两个不相等的整数分别给x,y,输出其中最大的。

关系表达式:x>y

2.输入一个数判别它能否被3整除,若能输出“YES”,如不能输出“NO”。

关系表达式:x%3= =0

3.输入一个数判别它是否为偶数,若是输出“YES”,如不是输出“NO”。

关系表达式:x%2= =0

4.输入一个数判别它是否为负数,若是输出“YES”,如不是输出“NO”。

关系表达式:x

5.输入一个数判别它能否被3和7整除,若能输出“YES”,如不能输出“NO”。

关系表达式:x%3= =0&&x%7= =0

条件成立

语句1 语句2 在if语句中嵌套有的else的if语句

(一): 在不带else和带else语句的语句和语句1和语句2中出现if语句就是嵌套的if语句,通常是

在条件判断较多时采用。分析该形式语句的执行是比较困难的,需要多看程序或多编程序才行。

嵌套形式有如下:

if(表达式1)

if(表达式2)语句1

else 语句2

else 语句3

程序举例:

main()

{ int x,y;scanf("%d",&x);

if(x!=0)

if(x

else y=1;

else y=0;

printf("y=%dn",y);}

在if中嵌套不含else的if语句

(二):

该种形式的嵌套是在if语句和else之间有if语句。

嵌套形式有如下:

if(表达式1){ if(表达式2)语句1}

else 语句2

以上的{}不可没有,如果没有,就等价于:

if(表达式1)

if(表达式2)语句1

else 语句2

程序举例:求符号函数的值。

main()

{ int x,y;

scanf("%d",&x);

y=-1;if(x!=0)

{if(x>0)y=1;}

else y=0;

printf("y=%dn",y);}

在else语句中嵌套if语句

(三):

该种形式的嵌套,是else在之后的语句中有if语句。

嵌套形式有如下:

if(表达式1)语句1

else ? ? ? ? ? > =

y if(表达式2)语句2

else 语句3

等价于:

if(表达式1)语句1

else if(表达式2)语句2

else 语句3

(书写格式要求按层缩进方式,增加程序的可读性)

程序举例:(符号函数)

main(){ int x,y;

scanf("%d",&x);

if(x==0)y=0;

else if(x>0)y=1;

else y=-1;

printf("y=%dn",y);}

(学生分数等级确定)main()

{int g;

scanf("%d",&g);

if(g>=90)

printf("An");

else if(g>=80)

printf("Bn");

else if(g>=70)

printf("Cn");

else if(g>=60)

printf("Dn");

else

printf("En");}

条件表达式构成的选择结构

用C语言的if语句在程序中可构成选择结构;C语言中还提供了一种特殊的运算—条件运算

符,由此构成的表达式也可形成简单的选择结构,这种选择结构可以表达式的形式内嵌在允许

出现表达式的地方,使得可根据不同的条件使用不同的表达式。(类似于Excel中的IF()函数)

条件运算符: ? :,唯一的一个三目运算符,要求三个对象。

由条件运算符构成的条件表达式:

表达式1? 表达式2 : 表达式3

条件表达式的运算功能:

表达式1的值为非0时,求出表达式2的值,此时表达式2的值就是整个条件表达式的值; 若表达式1的值为0时,求出表达式3的值,此时表达式3的值就是整个条件表达式的值。

例如:x=5,y=10,则max=x>y?x:y的值max等于多少?

条件运算的优先级

优于赋值运算,但低于逻辑、关系、算术运算。y=x>10?100:200;

printf(“abs(x)=%d”n,x>0?(-1)*x:x)(输出x的绝对值)

程序举例:用条件表达式求三个数中的最大和最小数并输出。

main()

{ int a,b,c,max,min;

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

max=a>b?a:b;min=ac?max:c;

min=min

printf("max=%d,min=%dn",max,min);} 3.3 3.33.3 3.3.

..

.2 22 2switch switchswitch

switch语句及用

语句及用语句及用

语句及用switch

switchswitch

switch和

和和

和break

breakbreak

break构成的选择结构

构成的选择结构构成的选择结构 构成的选择结构

switch语句的格式:

switch(表达式)

{ case 常量表达式1:语句1;

case 常量表达式2:语句2;

„„

case 常量表达式n:语句n;

default

}

n+1;

:语句 说明:switch,case,default都是关键字。

语句1到语句n+1可以是一条也可是多条,也可以不写。

常量表达式和case间要有空格。

switch语句的执行过程:

首先计算表达式的值,然后在case的常量表达式中找出与其相等的标号,如有相等的执行

该标号以后的所有语句;如果没有,若有default则执行default标号后的语句,否则跳过switch

语句,什么也不做。

程序举例: main()

{int g;scanf("%d",&g);

switch(g/10)

{case 10:

case 9: printf("An");

case 8: printf("Bn");

case 7: printf("Dn");

case 6: printf("En");

default : printf("Fn");} }

在switch语句中使用break语句 由上面的程序看出,switch语句执行结果和要求的是不一致的,因此必须和break语句联合使用,才能输出正确的结果。break语句的作用就是断开switch语句的执行。用语句重新修改输

出分数等级的程序。程序举例:

main()

{int g;

scanf("%d",&g);

switch(g/10)

{case 10:

case 9: printf("An");break;

case 8: printf("Bn");break;case 7: printf("Dn");break;

case

6: printf("En");break;

default : printf("Fn");} }

例题:当a≥0请将以下语句改写成switch语句。

if(a

else if(a

else if(a

else if(a

else m=5;

语句标号与goto语句

语句标号:

在程序行的位置,用用户定义标识符的规定,在其标识后加上“:”该标识符就是一个标

号。

如:flag: stop0:等都是标号。

可用语句 goto flag;来使程序执行转向。

goto语句称为无条件转语句,使用形式如下:

goto 语句标号;

作用:把程序执行转向标号所在位置的语句。但无条件转语句的使用,破坏了程序的可读性,一般不采用。3.4 3.43.4

3.4循环结构

循环结构循环结构

循环结构

3.4.1

3.4.1 3.4.1

3.4.1 while

whilewhile

while语句和用

语句和用语句和用

语句和用while

whilewhile

while语句构成的循环结构

语句构成的循环结构语句构成的循环结构

语句构成的循环结构

while循环的一般形式

由while语句构成的循环语句也称为“当”循环语句,一般形式如下:

while(表达式)循环体 例如: while(i

说明: while是关键字,括号中的表达式用来控制循环是否执行。

循环体是重复执行的部分,可以是一条和多条语句,多条语句应用{}括起来。

while执行过程:首先计算表达式的值,当值为非0时,执行一次循环体,转去判断表达式值是0还是非0;

当表达式的值为0时,退出循环。(这种循环语句可

一次也不执行)在使用该循环语句时,要注意的是在表达式中有一个变量与循环体中的变量同名,当循环

体执行的过程中可使表达式的值由非0变为0,这样才

能使循环正常结束,否则会造成死循环。while循环举例(一):

程序举例:

例 编程序求1+2+3+„„+100的值。

变量i提供1到100之间的数。

变量sum存放累加的和。(累加单元先要清0)

程序如下:

main()

{int i,sum;

sum=0;i=1;

while(i

{sum=sum+i;i++;} printf(“sum=%d”,sum);

0 表达式

循环体

1 }

while循环举例(二):

例题:

用级数求和计算圆周率的值,公式如下: 9 1

? 7 1 5 1 3 1 1 4

+?+?=π

变量n提供奇数。变量s产生符号。

变量pi存放π的值。(累加单元般要清0)变量t产生累加项。

程序如下:

main()

{float s,t,pi,n;

pi=0;n=1.0;t=1.0;s=1.0;

while(fabs(t)>=1e-4)

{pi=pi+t;n+=2.0;s=-s;t=s/n;}

pi=pi*4;printf(“pi=%fn”,pi);

} 3.4.3.4.3.4.3.4.2 2 2 2 do dodo do----while

whilewhile

while一般形式

一般形式一般形式

一般形式

do-while语句的一般形式:

do

循环体

while(表达式);

do和while都是关键字。循环体是重复执行的语句,多于一条语句应用大括号括起来。表达式是C

语言中的合法表达式。

do-while执行过程,流程所示:

首先执行循环体语句,判断表达式的值,非0

转回去继续执行循环体;如果是0退出循环体。

这种循环语句同样和while循环一样表达式中含有变量和

循环体中的变量相对应,当循环体执行时,可使表达式的值由非0变为0,循环才能正常结束。该循环语句的循环体

至少执行一次(先执行后判断)。

do-while举例:

求1+1/2+1/3+„直到累加项小于10-4为止。

变量i提供累加项的分母。

变量sum存放累加和。流程图:

程序如下:

main()

{float i,sum;

第6篇:C语言教案(推荐)

第四章 最简单的C程序设计

1.若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’,想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。要求输出的结果如下: a= 3 b= 4 c= 5 x=1.200000,y=2.400000,z=-3.600000 x+y= 3.6 y+z=-1.20 z+x=-2.40 u= 51274 n=

128765 c1=’a’ or 97(ascll)c2=’b’ or 98(ascll)解: main(){ int a,b,c long int u,n;float,x,y,z char c1,c2 a=3;b=4;c=5;x=1.2;y=2.4;z=-3.6;u=51274;n=128765;c1=’a’;c2=’b’;printf(“n”);

printf|(“a=%2db=%2dc=%2dn”,a,b,c);printf(“x=%8.6f,y=%8.6f,z=%9.6f,n”,x,y,z);printf(“x+y=%5.2fy+z=%5.2fz+x=%5.2n”,x+y,y+z,z+x);printf(“u=%6ldn=%9ldn”,u,n);printf(“c1=’%c’ or %d(ascll)n”,c1,c1);printf(“c2=’%c’ or %d(ascll)n”,c2,c2);} 2.请写出下面程序的输出结果。main(){ int a=5,b=7;flat x=67.8564,y=-789.124;char c='A';long n=1234567;unsigned u=65535;printf("%d%dn",a,b);printf("%3d%3dn",a,b);printf("%f,%fn",x,y);printf("%-10f,%-10fn",x,y);printf("%8.2f,%8.2f,%4f,%4f,%3f,%3fn",x,y,xy,x,y);printf("%e,%10.2en",x,y);printf("%c,%d,%o,%xn",c,c,c,c);printf("%u,%o,%x,%d,",u,u,u,u);

printf("%s,%5.3sn",COMPUTER,"COMPUTER");} 运行结果:

3.用下面的scanf函数输入数据,使a=3,b=7,x=.5,y=71.82,c1='A',c2='a',问在键盘上如何输入? Main(){int a,b;float x,y;char c1,c2;scanf("a=%d b=%d",&a,&b);scanf("%f %e",&x,&y);scanf(" %c %c",&c1,&c2);printf("a=%d,b%d,x=%f,y=%f,c1=%d,c2=%cn",a,b,x,y,c1,c2;}

第7篇:c语言教学教案

第一讲 C语言概述

1.1 C语言发展概述

C语言是在1972年至1973年间由美国的贝尔实验室的M.D.Ritchie和K.Thompson以及英国剑桥大学的M.Richards等为描述和实现UNIX操作系统而设计的。

最初的C语言是附属于UNIX的操作系统环境,而它的产生却可以更好地描述UNIX操作系统。时至今日,C语言已独立于UNIX操作系统。它已成为微型、小型、中型、大型和超大型(巨型)计算机通用的一种程序设计语言。

随着C语言的不断发展、应用和普及,目前,C语言已经能够在多种操作系统下运行,实用的C语言编译系统种类繁多,如Microsoft C、Turbo C等。1.2 C语言的特点

C语言能够成为目前广泛的高级设计语言之一,完全是由其语言特点决定的。

(1)语言基本组成部分紧凑简洁。(2)C语言运算符丰富,表达能力强。(3)C语言数据结构丰富,结构化好。(4)具有结构化的控制语句。

(5)C语言提供了某些接近汇编语言的功能。(6)C语言程序所生成的目标代码质量高。(7)C语言程序可移植性好。C语言的弱点:

(1)运算符的优先级较复杂,不容易记忆

(2)C语言的语法限制不太严格,一定程度上降低了某些安全性。1.3 简单的C语言程序。1.3.1 C语言程序的构成 1.3.2 C语言程序的特点

(1)C程序是由函数构成的,其中至少包括一个函数main()。(2)函数体是由左右花括号{ }括起来的部分。(3)C语言中的每个基本语句都以“;”结束。

(4)C语言书写格式自由,一行内可以写一个语句,也可以写多个语句。

(5)#include语句是编译预处理语句,其作用是将由双引号或尖括号括起来的文件内容读入该语句位置处。对程序说明:

(1)可用/*„*/对C程序中的任何部分作注释。

(2)C语言中所有变量都必须先定义类型,然后再使用。(3)一个C语言程序通过函数之间的相互调用来实现相应的功能。即可以是系统提供的库函数,也可以是根据需要自己定义的函数。1.4 C语言上机步骤

运行环境:DOC操作系统下的Turbo C 1.4.1 C程序上机步骤

1.编辑:在TurboC环境下。将C语言源程序通过键盘输入到计算机中,并以文件形式存盘,源程序都是以.C为扩展名。

2.编译:通过编辑程序将源程序输入到计算机后,需要经过C语言编译器将其生成目标程序。得到的目标文件都是以.OBJ为文件扩展名。3.连接:经过编译后生成的目标文件需经过连接后才能生成可执行代码。其扩展名是.EXE。

所谓连接,是将目标文件和库函数或其他目标程序连接成可执行的目标程序。

4.执行:连接后源程序的目标程序就是可执行文件了。在DOS系统下,只要键入可执行文件名,按回车键就可以了。1.4.2 Turbo C系统菜单 1.Turbo C的主屏幕和主菜单功能 2.文件菜单及功能 1.4.3 程序调试方法

一个计算机程序必须对其进行测试来确定其可以正确地工作,这一过程称为调试。程序错误

语法错误:通过编译和连接就会找到 运行错误:通过调试自己找出问题所在 1.设置和使用观察变量 2.单步执行程序 3.设置和使用断点

2.1 常量和变量 2.2 整型数据 2.3 字符型数据 2.4 浮点型数据 2.5 变量的初始化

第二章 数据类型与表达式 2.1 常量和变量

2.1.1 常量:在程序运行过程中其值不能被改变的量。2.1.2 变量:在程序运行过程中其值可以被改变的量。

标识符:用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。1.标识符的有关规定:

(1)由英文字母、数字、下划线组成,且第一个字符必须是字母或下划线,一般不超过8个字符;(2)大小写字母的含义不同。

(3)不能使用C语言中的关键字做标识符,(4)用户取名时,应当尽量遵循“简洁明了”和见名知意的原则。2.变量名的有关规定:

(1)使用变量名前,一定先定认,后使用,否则不能做为变量名。(2)每一个变量属于一种类型,便于在编译时据此检查该变量所进行的运算是否合法。(3)变量名的定义:存储属性、数据类型、变量名表 3.数据类型 2.2 整型数据 2.2.1整型常量

(1)十进制整数:数码直接开头的十进制数。如1234,-234。(2)八进制整数:以0开头的常量是八进制数。如011=(11)8(3)十六进制整数:以0x开头的数是十六进制。如0x123即(123)16 例2.1 三种进制表示方法的转换 源程序a1.c main(){ Int x=1246,y=01246,z=0x1246;Printf(“%d,%d,%dn”,x,y,z);Printf(“%o,%o,%on”,x,y,z);Printf(“%x,%x,%xn”,x,y,z);} C:>a1 1246,678,4678 2336,1246,11106 4de,2a6,1246 2.2.2整型变量 原则:使用变量前,先定义,后使用。(1)基本型:用int表示;

(2)短整型:用short int或short表示;(3)长整型:用long int或long表示;(4)无符号型:

无符号整型:用unsigned int或unsigned表示;

无符号短整型:用unsigned short int或unsigned short表示;无符号长整型:用unsigned long int或unsigned long表示;2.2.3 整型变量使用

不同的整型数据,应根据其特性和取值范围,将其定义成不同类型的整型变量。

例2.2不同类型的数据进行算术运算。源程序a2.c Main(){ Int a,b,s1,s2;Unsigned x;a=10;b=-30;x=20;S1=a+x;s2=b+x;Printf(“a+x=%d,b+x=%dn”,s1,s2);} C:>a2 运行结果为 a+x=30,b+x=-10 2.2.3 整型变量使用

不同的整型数据,应根据其特性和取值范围,将其定义成不同类型的整型变量。

例2.3 整型数据各类型所能表示的范围 源程序a3.c main(){int a,b;long c,d;unsigned e,f;a=32767;b=1;c=2147483647;d=1;e=65535;f=1;Printf(“int: %d,%d,n”,a,a+b);Printf(“long: %d,%ldn”,c,c+d);Printf(“unsigned: %u,%un”,e,e+f);} C:>a3 运行结果为 Int: 372767,-32768 Long: 2147483647,-2147483648 Unsigned:65535,0 2.3 字符型数据 2.3.1 字符型常量

字符常量是由一对单引号括起来的单个字符构成,例如:‘A’,‘b’,’2’,’%’’;’等。一个字符型常量是该字符集中对应的编码值:‘0’~‘9’的ASCⅡ编码值是48~57。显然‘0’与数字0是不同的。

2.3.2 字符型变量

字符型数据分为两类:一般字符类型(char)和无符号字符类型(unsigned char)。

例2.4 字符型数据与整型数据可以通用 源程序a3.c Main(){char c1,c2;Printf(“%c,%cn”,c1,c2);Printf(“%d,%dn”,c1,c2);} C:>a4 运行结果为 A,B 65,66

2.3.3 字符串常量

字符串常量是由一对双引号括起来的字符序列,例:“fsdf”,”A”等。字符串常量中不能直接包括单引号、双引号和反斜杠““。字符串常量与字符常量的区别:

(1)字符串常量是用双引号括起来的字符序列。(2)字符串常量有串尾标记””;(3)字符串常量允许扩展表示法;

(4)C语言中没有专门的字符串变量。字符串如果需要存放在变量中,需要用字符型数组来存放。

注意:不要将单个字符组成的字符串常量与字符常量混淆。‘a’为字符串常量,不能把一个字符串常量赋给一个字符变量。例如:下面的用法都是错误的: Char c1,c2;C1=“a” C2=“CHINA”;字符‘’由系统自动加入到每个字符串的结束处,不必由编程人员加入。

字符串“CHINA”在内存中的存放形式如下图,其长度是六个字节,而不是5个字节。字符‘’所对应的ASCⅡ值为0,即“空”字符。2.4 浮点型数据 2.4.1 浮点型常量

浮点型常量有两种表示形式。十进制数形式

它是由数字和小数组成,如:3.14159,-7.2,8.9 指数法形式

如:180000.0用指数法可表示为1.8e5,1.8称为尾数,5称为指数。

0.00123用指数法可表示为1.23e-3 注意:

(1)字母e 或E之前(即尾数部分)必须是有数字的。(2)e或E后面的指数部分必须是整数。如:e-3,9.8e3.1,e5都是不合法的。

2.4.2 浮点型变量(实型变量)

把带有小数点的数称为浮点数,或实型数。浮点型变量又称为实型变量,按能表示数的精度,分为:单精度浮点型变量和双精度浮点型变量,其定认方法如下:

float a,b;/*单精度变量的定义*/ double c,d;/*双精度变量的定义*/ 单精度:占4个字节,有效位为7位,数值范围为10-37~1038 双精度:占8个字节,有效位为15~16位,数值范围约为10-307~10308 浮点型常量不存在单精度型和双精度型之分。2.5 变量的初始化 变量的初始人化:在定义变量的同时给变量赋予初值。方法:

(1)先说明变量类型,然后再赋值。

(2)在对变量类型说明的同时,给变量赋初值。先定义后赋值 int a,b,c;char d;floatb f;a=2;b=5;c=10;d=‘a’;f=5.7;定义和赋值同时进行 int a=5;short b=10;char c=‘a’;float d=7.8;3.对几个变量同时赋一个初值 Int a1=10,a2=10,a3=10;

初始化不是在编译阶段完成的,而是在程序运行时执行本函数时赋以初值的。相当于一个赋值语句。例如: int a=10;相当于: int a;a=10;

又如: Int a;,b,c=20;相当于: Int a,b,c;C=20;第三讲 运算符以及数据类型 2.6 运算符及表达式 2.7 数据类型转换 2.8 类型定义 2.6 运算符及表达式

C语言运算符可以分为:算术运算符、逻辑运算符、关系运算符、位运算符、赋值运算符。2.6.1 算术运算符和算术表达式

1.算术运算符:加、减、乘、除及取模即:+,-,*,/,%来表示。 C语言规定:

(1)模运算符%,仅用于整型变量或整型常量。

(2)优先级:一个表达式中如有多个运算符,则计算先后次序为相应运算符的优先级高的优先。乘、除、模优先级高于加、减的优先级。(3)结合方向:是一个运算对象两侧的运算符的优先级别相同时,应遵循的处理规则。

算术运算符的结合方向是从左至右; 赋值运算符的结合方向是从右至左。

算术表达式:由算术运算符、括号以及操作对象组成的符号C语言语法规则的表达式称为算术表达式。2.6.2 赋值语句 1.赋值运算符

语言的赋值运算符是“=”,它的作用是赋值运算符右边表达式的值赋给其左边的变量。

例如:a=10,x=a+5,前者是把常量10赋给变量a,后者是将表达式a+5的值赋给变量x.注意:如果“=”两侧的类型不一致,在赋值时要进行类型转换。例如a=b,执行该语句时,b的结果转换为a的类型后才能进行赋值运算。2.复合赋值运算符

C语言允许在赋值运算符“=“之前加上其它运算符,以构成其复合运算符。复合运算符多数为双目。复合运算符有:

+=,-=,*=,/=,%=,>=,&=,^=,|= 例:

a+=2

等价于 a=a+2 x*=y+5 等价于 x=x*(y+5)x%=8

等价于 x=x%8 赋值运算符都是自右向左执行。3.赋值语句与赋值表达式 赋值语句最简单的形式是: = ;

功能:是赋值运算符右边的“表达式”的值赋给左边的变量。

赋值表达式也可以包含复合的赋值运算符,例: 如果a=10,表达式a+=a-=a*a的值为-180。其步骤为:(1)先进行a-=a*a的计算,它相当于a=a-a*a=10-10*10=-90.(2)再进行a+=-90的计算,它相当于a=a+(-90)=-90-90=-180.4.自增自减运算符

i++(或i--)表示在使用该表达式值之后将i值加1(或减1)。++i(或--i)表示在使用该表达式值之前将i值加1(或减1)。

说明:

(1)++和--仅适用于变量,不能用于常量或表达式。(2)++和--运算符的结合方向是“至右向左”。Main(){int a=100;printf(“a++=%dn”,a++);printf(“++a=%dn”,++a);printf(“a--=%dn”,a--);printf(“--a=%dn”,--a);} 输出结果: a++=100 ++a=102 a--=102--a=100

2.6.3 关系运算符和关系表达式 1.关系运算符

关系运算符均为两目运算符。共有六种: >

大于

小于 >=

大于等于

小于等于 ==

等于

!=

不等于

关系运算符要求两个操作数是同一种数据类型,其结果为一逻辑值,即关系成立时,其值为真(true),用非0值表示;关系不成立时,其值为假(false),用0表示。

关系运算符的优先级借低于算术运算符,关系运算符==和!=低于前四种运算符,并且结合方向均为自左至右。2.关系表达式

由关系运算符将两个表达式连接起来的有意义的式子称为关系表达式。如:a+b

关系表达式的值是一个逻辑值,即“真”或“假”。用1表示“真”,用0表示“假”。如:

a=4,b=1,C=a>b;c的值为1,若a=1,b=8,x=a>b;x的值为0。2.6.4 逻辑运算符和逻辑表达式 1.逻辑运算符

逻辑运算符有“&&“(逻辑与)、”||“(逻辑或)和”!“(逻辑非)三种。

逻辑运算符的操作对象为零或非零整数值,见表2.4.表2.4

逻辑运算规则 逻辑表达式

由逻辑运算符和其操作对象组成表达式称为逻辑表达式。2.6.5 位运算符

位(bit)运算是C语言的一大特色,可直接对构成内存的基本单位 “字节”(byte)进行按位操作。按位与(&)操作规则:参加运算的两个运算量,如果两个相应的位均为1,则该 位的结果为1,否则为0,见表2.5

表2.5

接位与 例如:(1)清零。

(2)取一个数中的某些位。高位清零:

00101101 10011100 & 00000000 11111111

00000000 10011100 低位清零:

00101101 10011100

& 11111111 00000000

00101101 00000000 按位或(|)

操作规则:参加运算的两个运算量,其相应的位中只有一个为1,则该位的结果为1,否则为0。

表2.6

按位或 例如:

(1)01000001

| 00101001

01101001(2)01000001

| 00000000

01000001(3)01000011

| 11111111

11111111(4)01000001

| 10111110

11111111 例如:将某一个数的某些位置为1。一个整数a,要将其低字节全置为1,即低字节为11111111,可将该数与255(十六进制为FF,二进制为11111111)按按位或即可。按位异或(^)

操作规则:参加运算的两个运算量,当相应位相同时,其结果在该位为0,相应位不同时,其结果在该位为1,即按位相加,但不进位。

表2.7

按位异或(1)使指定位翻转。即由1变为0,由0变为1。例:

01100110 ^ 00001111 01101001(2)不使用临时变量,交换两个值。方法为:若有两个数a和b,通过

下面的赋值语言可将 a和b的值互换: a=a^b;b=b^a;b=a^b;4.按位求反(~)

操作规则:运算符~是一个单目运算符,用来对一个数二进制表示按位求反,即瘵0变成1,将1变成0。

表2.8

按位求反 例: ~01101001

10010110 将一个数的某些位变为0。方法是:瘵该数a与~b按位求与,此处的b为这样的一个数,即要求a 中变为0的那些位均为1,其余位均为0。如要将a的最低位变为0,则可使用下述表达式实现。A=a&~1 5.左移(

操作规则:将一个数的各二进制位全部左移若干位,左移后,右边的这些位用0填补,左边移出的位舍弃不用。例:a=a

将一个数左移1位,相当于该数乘以2,左移2位相当于该数乘以4。如上例中a=15,则a=a

6.右移(>>)

操作规则:将一个数的各二进制位全部右移若干位,右移后,右边移出的位被舍弃,而左边的填补分两种情况:(1)该数为无符号数,则高位补0。例:a=a>>2;右a=15,二进制为00001111,右移两位后为00000011。

(2)该数为有符号数,若原来的符号位为0(最高位为0,即正数)则高位补0,若原来的符号位为1(即表示该数为负数),高位补0或1,取决于所使用的计算机系统。有的系统补0,称为逻辑右移,有的系统补1,称为算术右移。例:a:***1 a>>1:***1(逻辑右移)a>>1:***1(算术右移)2.6.6 其他运算符 逗号运算符

逗号运算符为“,“。逗号表达式是用逗号运算符把两个表达式组合成的一个表达式。其一般形式为 〈表达 式1〉,〈表达式2〉 说明:(1)逗号表达式的执行过程是:先求表达式1的值,再求表达式2的值,表达式2的值就是整个逗号表达式的值。

(2)一个逗号表达式可以与另一个表达式构成一个新逗号表达式。(3)逗号运算符是所有运算符中级别最低的。

(4)逗号表达式常用于for语句中,它可以表达多个初值或多个步长增量。

逗号表达式的一般形式可以扩展为

〈表达式1〉,〈表达式2〉,〈表达式3〉,„„〈表达式N〉 表达式n的值是整个表达式的值。

条件运算符

条件运算符是一个三目运算符,把三表达式组合成一个表达式。其一般形式为

〈表达式1〉?〈表达式2〉:〈表达式3〉;

功能:计算〈表达式1〉的值,如果该值为真(非0值),则计算〈表达式2〉的值,并且该值即为条件表达式值。若〈表达式1〉的值为假(0),则计算〈表达式3〉的值,并将该值作为条件表达式的值。说明:

(1)条件运算符优先级别高于赋值运算符,低于关系运算符和算术运算符。

(2)条件运算符结合方向是“自右至左”。

(3)〈表达式1〉与〈表达式2〉、〈表达式3〉类型可以不同。3.Sizeof运算符

sizeof运算符是测试变量、表达式或类型名所占用的字节 数。有两种用法。

sizeof〈表达式〉:测试表达式所占用的字节数。sizeof〈表达式〉:测试类型名所占用的字节数。例如: sizeof(float)其值为4。sizeof运算符可以出现的表达式中。main(){ int a=4;fload b=5.6;printf(“%d,%dn”, sizeof(a), sizeof(b));} 输出结果: 2,4 2.7 数据类型转换

在内存中,字符是以系统中所使用字符的编码值形式存储的,C语言允许字符型数据和整型数据之间通用一个字符型数据,即可以以字符形式输出,也可以以整型形式输出,同时,字符型数据可能赋给整型变量,整型数据也可以赋给字符型变量,只是当整型变量数据的大小超过字符型变量的表示范围时,需要截取相应的有效位。

除字符型数据和整型数据之间可以通用之外,不同类型的数据在进行混合运算时,往往需要进行强制类型转换。因此类型转换有两种方式:一种是自动类型转换;另一种是强制类型转换。2.7.1 自动类型转换

在进行计算时,首先将不同类型的数据转换成同一类型,然 后进行计算

不同类型数值转换规则: Double float

Long

Unsigned

Int

char ,short 2.7.2 强制类型转化

强制类型转化的一般形式如下所示:

(强制的类型名)〈变量〉

例如:(int)(a+b),将a+b的结果强制转换成int型;

(float)a/b,将a的结果强制转换成float型后,再进行计算。注意:经强制类型转换后,得到的是一个所需类型的中间变量,原来变量的类型并没有发生任何变化。2.8 类型定义

C语言允许使用typedef语句定义新类型名,以取代已有类型名,如: typedef int counter;作用是定义counter等价于基本数据类型名int,以后就可以利用counter来定义int型变量了。如: counter I,n;

等价于int I, n;类型定义的优点是:能够提高程序可读性。注意:

(1)typedef语句不能创造新的类型,只能为已有的类型增加一个类型名。(2)typedef语句只能用来定义类型名,而不能用来定义变量。例如:分析下例程序。# include “stdio.h” typeref int integer;typedef float real;Main(){ integer i=5;real f;f=real(i)/10;printf(%f”,f);} 第四讲 数据的输入输出 3.1 数据的输入 3.2 数据的输出 3.3 应用举例 3.1 数据的输入

3.1.1 字符输入函数getchar 格式: getchar()

功能:从键盘上接收输入的一个字符。例如:

char c;

┆ c= getchar()其中c是字符型或整型变量。

例1:从键盘输入一个字符,并将其存入字符型变量c 中。#include”stdio.h” Main(){char c;C= getchar();} 3.1.2 格式输入函数scanf 格式:scanf(格式控制,地址表);

功能:用来输入任何类型数据,可同时输入多个类型或不同类型数据。格式控制:是由双括号括起来字符串,主要是由“%”和格式符组成 2.地址表

Scanf函数中的“地址表”部分是由变量的地址组成的,如果有多个变量,则各变量之间用逗号隔开。地址运算符为“&“,如变量a的地址可以写为&a。

例3.2用scanf函数,从键盘 上输入一个整型数、一个浮 点数和一个字符,分别存入 变量i、f和c中。

#include”stdio.h” main(){ int i;float f;char c;scanf(“%d,%f,%c”,&I,&f,&c);printf(“i=%d,f=%f,c=%c”,i,f,c);} 说明:

(1)在scanf函数“格式控制”部分中的每个格式说明符都必须在“地址表列”中有一个变量与之对应格式说明符必须要与相应变量的类型一致。

(2)当格式说明符之间没有任何字符时,在输入数据时,两个数据之间要使用“空格”、“Tab”或“回车”键做间隔;如果格式说明符之间包含其它字符,则输入数据时,应输入与这些字符相同的字符做间隔,如:

Scanf(“%d,%f,%c”,&i,&f,&c);

在输入数据时,应采用如下形式:20,7.8,a(3)可以在格式说明符的前面指定输入数据所占的列数,系统将自动按此列数来截取所需的数据,如:

scanf(%2d%3d”,&x,&y);当用户输入78985时,系统将自动地将78赋给变量x,将985赋给变量y。这种方式也可用于字符型数据的输入。

(4)应该特别注意的是,scanf函数中的“地址表列”部分应当中变量的地址,而不是变量名。

3.2 数据的输出

3.2.1 字符输出函数putchar 数据的输出一般是以终端显示器(屏幕)为处理对象。格式:向终端输出一个字符。

说明:变量c可以是字符型,也可以是整型。例3.3 从键盘输入一个字符,在屏幕上显示出来。#include”stdio.h” main(){ char c;c=getchar();

/*从键盘输入一个字符*/ putchar(c);

/*在屏幕上显示一个字符*/ } putchar函数也可以输出一些特殊字符(控制字符),如:putchar(‘n’)作用是输出一个“换行”字符。3.2.2 格式控制函数printf 格式: printf(格式控制,输出表); 功能:输出任何类型的数据。1.格式控制

“格式控制”部分与scanf函数的相似,也是由双引号括起来的字符串,主要包括格式说明和需要原样输出的字符。

“格式说明”:由“%”和格式符组成,如%c和%f等,作用是将要输出的数据转换为指定格式后输出。printf函数中使用的格式字符见表3.2。

表3.2

printf函数格式字符 注意:格式字符必须小写 输出表

printf函数中的“输出表”部分由表达式组成,这些表达式应与“格式控制”字符串中的格式说明符的类型一一对应,若“输出表”中有多个表达式,则每个表达式之间应由逗号隔开。

例3.4 从键盘输入一个整数和一个浮点数,并在屏幕上显示出来。#include”stdio.h” main(){ int i;float f;scanf(“%d,%f”,&i,&f);printf(“i=%d,f=%f”,I,f);} 执行此程序,按格式输入数据: 50,8,9 i=50,f=8.900000 说明:

(1)printf函数中的“格式控制”字符串中的每一个格式说明符,都必须与“输出表”中的某一个变量相对应,如上述程序中的“%”与i对应;“%f”与f对应,而且格式说明符应当与其所对应变量的类型一致。

若要显示“%”字符,则应在“格式控制”字符串中连写两个“%”,如:

Printf(“x=%d%%”,100/4);将显示:x=25%。

(2)对格式说明符c、d、s和f等,可以指定输出字段的宽度。%md:m为指定的输出字段的宽度。如果数据的位数大于m,则按实际位数输出,否则输出时向右对齐,左端补以“空格”符。%mc:m为指定的输出字段的宽度。若m大于一个字符的宽度,则输出时向右对齐,左端补以“空格”符。

%mc:m为输出时字符串所占的列数。如果字符串的长度(字符个数)大于m,则按字符串的本身长度输出,否则,输出时字符串向右对齐,左端补以“空格”符。

%-ms:mr的意义同上。如果字符串的长度小于m,则输出时字符串向左对齐,右端补以“空格”符。

%m.nf:m为浮点数据所占的总列数(包括小数点),n为小数点后面的位数。如果数据的长度小于m,则输出时向右对齐,左端补以“空格”符。

%-m.nf:m、n的意义同上。如果数据的长度小于m,则输出向左对齐,右端补以“空格”符。

(3)除了格式说明符及其输出字段的宽度外,在“格式控制”字符中的其他字符,将按原样输出。

(4)在显示数据时,可以不指定输出字段的宽度,而直接利用系统隐含的输出宽度。3.3 应用举例

例3.5 分析下列程序,观察运行结果。main(){ char ch=‘a’;int a=98;unsigned b=1000;long c=123456789;float x=3.14;double y=1.2345678;pPrintf(“(1)a=%d,a=%c,ch=%d,ch=%cn”,a,a,ch,ch);printf(“(2)b=%un”,b);printf(“(3)c=%ldn”,c);printf(“(4)x=%f,y=%fn”,x,y);printf(“(5)x=%e,y=%en”,x,y);printf(“(6)y=%e10.2fn”,y);} 运行的结果为

(1)a=98,a=b,ch=97,ch=a b=1000 C=123456789 X=3.140000,y=1.234567 x=3.14000e+00,y=1.23456e+00 Y=1.23 例3.6 从键盘上输入一个大写字母,把它转换面小 写字母,然后显示出来。#include”stdio.h” main(){ char x1,x2;printf(“x1=?n”);scanf(“%c”,&x1);x2=x1+32;printf(“%c,%cn”,x1,x2);} 运行结果 x1=? A A,a 例3.7 分别输入一个浮点数,一个整数,一个字符型数。#include “stdio.h” main(){ float f;int I;char c;scanf(“%f%d%c”,&f,&I,&c);printf(“%f%d%c”,f,I,c);}

例3.8 从键盘输入一个字符并鸣笛输出。#include “stdio.h” Main(){ Char c;C=getchar();Putchar(‘07’);Putchar(c);} 第五讲 条件语句 4.1 语句和复合语句 4.2 if语句 4.3 switch语句 4.4 应用举例 第四章 条件语句

结构化程序的三种基本结构:顺序结构、选择分支结构和循环结构。顺序结构:是指每个程序都是按照语句的书写顺序依次执行的。选择分支结构:是指通过对特定条件的判断,来选择一个分支执行。循环结构:循环是指在给定条件下,重复执行某段程序,直到不满足条件为止。4.1 语句和复合语句

表达式语句:一个表达式的后面跟随一个分号构成的语句。如:x=x+a;说明:分号“;”是语句的终结符,而不是语句的分隔符即分号是语句的最末组成部分。

复合语句:由左右花括号括起来的语句;

形式:{说明部分;语句部分} 一个复合语句在语法上等同于一个语句,在程序中,凡是单个语句能够出现的地方,都可以出现复合语句。一个复合语句又可以出现在其他复合语句内部。

在复合语句的后面必须有一个分号,做为该语句的终结符。4.2 if语句

If语句是条件选择语句,它是通过对给定条件的判断,来决定所要执行的操作。

4.2.1 if语句的三种形式 If语句的第一种形式 格式:if(表达式)〈语句〉

功能:首先计算表达式的值,若表达式的值

为“真”(为非0),则执行语句,若表达

式的值为“假”(为0),不执行语句。例如:

If(x>y)printf(“%d”,x);2.If语句的第二种形式 格式:if(表达式)〈语句1〉

else

〈语句2〉 功能:首先计算表达式的值,若表达式的值为“真”(为非0)。则执行语句1,若表达式的值为 “假”(为0),则执行语句2。例如:

if(x>y)printf(“%d”,x);else printf(“%d”,y);3.If语句的第三种形式 格式:

if(表达式1)〈语句1〉 else if(表达式2)

〈语句2〉 else if(表达式3)

〈语句3〉

else if(表达式n)

〈语句n〉 else 〈语句n+1〉

功能:首先计算表达式的值,若第n个表达式的值为“真”(为非0),则执行语句n,若所有的表达式的值都为“假”(为0),则执行语句n+1。其流程图如下: 例如:

if(score>89)

grade=‘5’;else if(score>74)grade=‘4’;else if(score>59)grade=‘3’;else

grade=‘2’;说明:

(1)if语句中的表达式可以是C语言的合法表达式。

(2)第二种、第三种格式的if语句中,在每个else前面有一个分号,整个语句结束处也有一个分号。这是由于分号是C语句中不可缺少的部分,这个分号是if语句中的内嵌语句所要求的。

(3)在if和else后面可以只含有一个内嵌的操作语句,也可以含有多个操作语句,此时应用花括号“{ }“将几个语句括起来,构成一个复合语句。

例4.1 将两个数中较大者赋给 s。main(){ int a,b,s;a=10;b=20;if(a>b)s=a;else s=b;printf(“s=%dn”,s);} 执行结果: s=20 例4.2 比较两个数,按由大到小输出。main(){ int a,b,x,y;a = 10;b = 20;if(a>b){x=a;y=b;} else {x=b;y=a;} printf(“x=%d,y=%dn”,x,y);} 执行结果: x=20,y=10 4.2.2 if语句的嵌套

在if 语句中又包含一个或多个if语句,称为if语句的嵌套。一般形式如下: if()

if()

〈语句1〉

else

〈语句2〉 else

if()

〈语句3〉

else

〈语句4〉 if()

if()

〈语句1〉 else

if()〈语句2〉

else

〈语句3〉 说明:

(1)if与else的配对关系,从最内层开始,else总是与离它最近的未曾配对的if配对。

(2)if与else的个数最好相同,从内层到外层一一对应,以避免出错。

(3)如果if与else的个数不相同,可以用花括号来确定配对关系。例如: If()

{if()〈语句1〉} else

〈语句2〉

这时{ }限定了内嵌if 语句的范围,因此else与第一个if配对。例4.3 有一函数

编一程序,输入一个x值,输出y 值。main(){ int x,y;scanf(“%d”,&x);if(x

else y=1;printf(“x=%d,y=%dn”,x,y);} 4.2.3 条件运算符

如果if语句的形式如下所示: if(表达式1)

x=〈表达式2〉; else

x=〈表达式2〉;

无论表达式1为“真”还是为“假”,都只执行一个赋值语句且给同一个变量赋值。

可以利用条件运算符,将这种语句简单地用如下语句来表示。

x=〈表达式1〉?〈表达式2〉:〈表达式3〉;

说明:即当表达式1的值为“真”时,将表达式2的值赋给变量x;当表达式1的值为“假”时,将表达式3的值赋给变量x。如:

a=5,b=10,c=20;x=a>b? c*b:c/b;因为a>b为假,则x=c/b=2。

例4.4 输入两个数,并将其中较大者显示出来。#include “stdio.h” main(){ int a,b,max;scanf(“%d%d”,&a,&b);max=(a>b)? a:b;printf(“max=%d”,max);} 条件运算符也可以嵌套使用,如:

Grade=(score>=90)?’A’:(score=90时,将字符‘A’赋给变量grade;当score

Switch语句是多分支选择语句,其一般形式如下:Switch(表达式)

{

case 〈常量表达式1〉:〈语句1〉

case 〈常量表达式2〉:〈语句2〉

case 〈常量表达式n〉:〈语句n〉

default:〈语句n+1〉

}

;可同时省略

switch语句的执行过程是:首先计算switch后面圆括号内表达式的值,若此值等于某个case后面的常量表达式的值,则转向该case后面的语句去执行;若表达式的值不等于任何case后面的常量表达式的值,则转向default后面的语句去执行,如果没有default部分,则将不执行switch语句中的任何语句,而直接转到switch语句后面的语句去执行。说明:

(1)switch后面圆括号内的表达式的值和case后面的常量表达式的值,都必须是整型的或字符型的,不允许是浮点型的。

(2)同一个switch语句中 的所有case后面的常量表达式的值都必须互不相同。

(3)switch语句中的case和default的出现次序是任意的,也就是说default也可以位于case的前面,且case的次序也不要求按常量表达式的大小顺序排列。

(4)由于switch语句中的“case常量表达式”部分只起标号的作用,而不进行条件判断,所以,在执行完某个case后的语句后,将自动转到该语句后面的语句去执行,直到遇到switch语句的右花括号或“break”语句为此,而不再进行条件判断。

所以在执行完一个case分支后,一般应跳出switch语句,转到下一条语句执行,这样可在一个case的结束后,下一个case开始前,插入一个break语句,一但执行到braek语句,将立即跳出switch语句,如: 如: Switch(n){

case 1:

x=1;

case 2:

x=2;} 当n=1时,将连续执行下面两个语句 : X=1;X=2;如: Switch(n){ case 1;

x=1;Braek;Case 2;X=2 Braek }(5)每个case的后面即可以是一个句号,也可以是多个语句,当是多个语句的时候,也不需要用花括号括起来。(6)多个case的后面可以共用一组执行语句,如: Switch(n);{

Case 1:

Case 2:

x=10;

braet

} 它表示当n=1或n=2时,都执行下列两个语句: X=10;Braek;

例4.5 从键盘输入一个月份(1~12),并显示该月份的英文名称

#include”stdio.h” Main(){ int month;scanf(“%d”,&month);switch(month){ case 1:printf(“January”);

braek;case 2:printf(“February”);

braek;case 3:printf(“March”);

braek;case 4:printf(“April”);

braek;case 5:printf(“May”);

braek;case 6:printf(“June”);

braek;case 7:printf(“July”);

braek;case 8:printf(“August”);

braek;case 9:printf(“September”);

braek;case 10:printf(“October”);

braek;case 11:printf(“November”);

braek;case 12:printf(“Decmeber”);

braek;Default:printf(“Data Error!”);Break;} }

4.4 应用举例

例4.6 输入一个数值,求出它的平方根,若为负数时,求出它的复数平方根。#include “stdio.h” #include “math.h” main(){ int n;float root;printf(“enter a number:t”);scanf(“%d”,&n);if(n>=0);{ root=sqrt(n);printf(“sqrt(%d)=%f”,n,root);} else { root=sqrt(abs(n));

printf(“sqrt(%d)=%fi”,n,root);} }

例4.7求两个数中最小值。#include “stdio.h” main(){int x,y,min;printf(“enter two integers:n”);acanf(“%d,%d,&x,&y);min=x

例4.8 从键盘输入一个操作符并进行相应和操作。#include “stdio.h” main(){ int x=10,y=5,z;char op;scanf(“%c”,&op);switch(op){

case ’+’:z=x+y;braek;

case ’-’:z=x-y;braek;

case ’*’:z=x*y;braek;

case ’/’:z=x/y;braek;

default :printf(“Operater Error!”);} printf(%d%c%d=%d”,x,op,y,z);} 例4.9 输入三个数,按由小到大的顺序输出。#include “stdio.h” main(){ int a,b,c,temp;printf(“enter three integers:t”);scanf(“%d,%d,%d”,&a,&b.&c);if(a>c){temp=a;a=b;b=temp;} If(a>c){temp=a;a=c;c=temp;} if(b>c){temp=b;b=c;c=temp;} printf(“%d<%d,%d”,a,b,c);}

第六讲 循环控制 5.1 goto语句 5.2 while循环语句 5.3 do-while循环语句 5.4 for循环语句 5.2 while循环语句

用while语句来实现“当型”循环结构。格式:while(表达式)

〈语句〉

/*循环体部分*/ 功能:当表达式的值为非0时,执行while语句中的循环体。结构流程图如图所示。说明:

(1)循环体如果包含一个以上语句,应该用花括弧括起来,以复合语句的形式出现,否则while语句范围只到while后面第一个分号处。(2)在循环体中应有使循环趋向于结束的语句,即设置修改循环条件的语句。

(3)while语句的特点是先判断表达式的值,然后执行循环体中的语句,如果表达式的值一开始为假(值为0),退出循环,并转入下一语句去执行。

例5.2 求s=1+2+3+„100的值。结构流程图如右图。main(){ int i,s=0;i=1;While(i

do-while循环语句,用来实现“直到型”循环结构。格式:do

while(表达式)功能:先执行〈语句〉,后判断表达式的值。它的执行过程是:先执行一次指定的语句,然后判断表达式的值,当表达式的值为非零(”真“)时,返回重新执行该语句,如此反复,直到表达式的值等于0为此止,此时循环结束。0(假)说明:

(1)用while语句和用do-while语句处理同一问题时,若二者的循环体部分一样,其结果也一样。但在while后面的表达式一开始就为假(0值)时,两种循环的结果是不同的。

(2)如果do-while语句的循环体部分是多个语句组成的话,则必须用左右花括号括起来,使其形成复合语句。

main(){int i,s=0;scanf(“%d”,&i);do {s=s+i;i++;}while(i第8篇:C语言程序设计教案 第一章C语言概述

第一章 C语言概述

课题:

教学目的: 教学重点: 教学难点: 第一章 C语言概述

1、了解C语言出现的背景

2、掌握C语言程序的构成、书写格式和上机步骤 C语言程序的构成 上机操作

步骤一 引入新课

从计算机应用基础中学过的计算机语言及语言处理系统引出C语言。步骤二 讲授新课

一、C语言出现的背景

1.ALGOL60 :1960年面向问题、结构化,可读性、可移植性好,不能对硬件操作; 2.CPL:63年接近硬件,规模较大、难以应用;

3.SIMULA:1966~1967 SIMULA 66是ALGOL 60的扩充;SIMULA 67引进了“对象”和“类”等概念而成为第一个面向对象的语言;

4.BCPL :67年由CPL改制,结构化、直接处理硬件;

5.B语言:1970年贝尔实验室的Ken Thompson以BCPL语言为基础设计的,开发了第一个UNIX操作系统;

6.C语言:1972-73年间,保持了BCPL和B语言的精炼与接近硬件的优点,克服了它们过于简单、数据无类型的缺点,重写了UNIX操作系统的90%;

7.标准 C:以1978年发表的UNIX第七版中的C编译程序为基础,Brain W.Kernighan&Dennis M.Ritchie合著的《The C Programming Language》问世; 8.ANSI C:1983年美国国家标准化协会(ANSI)制定的标准

9.C++:1986年 与C兼容,保持了C的所有优点并进行了增强:增强了面向对象的机制,成为典型的面向对象和面向过程的混合语言,适用于大型系统软件和应用软件的开发;

10.87 ANSI C:1987年制定的新标准;

11.ISO C:1990年ISO接受87 ANSI C为ISO C的标准,该标准是目前C编译器的标准。

二、C语言的特点

1.语言简洁、紧凑,使用方便、灵活; 2.运算符丰富

3.数据类型多(整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类等)4.具有结构化的控制语句 5.语法不太严格,自由度大

6.既是高级语言,又具有低级语言的功能 7.生成目标代码质量高,程序执行效率 8.可移植性好

三、C语言程序的构成1.C语言是由函数构成的,至少有一个main()函数;

2.每个函数由函数首部和函数体组成;函数体由说明语句、执行语句组成; 3.每个C程序从main()函数开始执行,并在main()中结束; 4.每个语句和数据定义的最后必须加分号;

5.C程序无输入、输出语句

输入功能由scanf()函数完成;输出功能由printf()函数完成; 6.可加注释/*……*/

借助程序实例加以说明,并提倡良好的程序设计书写风格: 1)每个语句占一行;

2)同一层次的语句从同一位置处开始书写;

3)同一层次中嵌套的结构,应从不同位置开始书写;

4)编译控制行、外部数据定义、函数定义之间空一行书写; 5)对于函数体的大括号的书写约定 6)学会使用注释。

四、上机步骤

1.进入环境c:tctc 或进入ms-dos,>cd,>cd tc,>tc 2.编辑源程序 3.保存源程序 4.编译源程序F9 5.执行程序Ctrl-F9,查看结果Alt-F5 6.退出C环境Alt-X

步骤三 课堂小结

1、C语言的构成要素,main函数在程序中的作用

2、上机操作的过程

步骤四 布置作业 上机练习:

1、进入C编辑环境,按良好的程序设计风格输入例题,按步骤编译、运行、查看结果

2、根据求两个数最大值的例题,试编写程序求三个数的最大值

第9篇:C语言程序设计教案

C语言程序设计教案

课程名称:C语言程序设计

总 学 时:51(其中讲课学时:36,上机学时:15)课程类型:必修课程 专业:06气候

教 材:《C程序设计》(第三版),谭浩强,清华大学出版社,2005.教学参考书:

1.C语言程序设计教程,谭浩强,高等教育出版社 2.C高级实用程序设计,王士元,清华大学出版社

教学目的和要求:

本课程作为非计算机专业的基础课,旨在使学生通过本课程的学习不仅要掌握C语言的基础知识,而且更重要的是掌握进行程序设计的基本方法,提高学生编程的能力。具体要求如下:

1.熟悉并理解程序设计的基本概念和基本方法。理解程序设计的基本思想和思维方法,了解 C程序的基本结构,各种语法成分的作用、语法结构及运用方式。

2. 培养运用C语言基本知识编写简单的程序,解决问题的基本能力。

3. 综合运用多个知识点的内容进行简单的应用程序开发,考察综合解决问题的能力。

总第一讲

第一章 C语言概述(2学时,共一讲)

本讲教学目的:

1.了解C语言程序特点和产生的历史背景。

2.熟悉C语言程序的结构、编译环境和上机调试的过程。

内容纲要:

1. C语言出现的历史背景 2. C语言的特点 3. C语言程序介绍

4. C语言的上机步骤

本讲教学重点与难点:

1.C语言的特点与格式

2. C语言的上机调试的步骤

教学方法、实施步骤及时间分配:

采用多媒体进行教学,具体教学步骤安排如下:

1.引入新课————————————————————————————5’

自我介绍、课程安排与要求。

2.新课教学———————————————————————————90’

介绍C语言发展的历史

介绍C语言的特点 介绍简单C语言程序的结构

介绍C语言上机调试的步骤

3.总结、布置作业及预习内容————————————————————5’

总第二讲

第二章 程序的灵魂——算法(2学时,共一讲)

本讲教学目的:

1.掌握算法的内涵、特性与表示方法。

2.熟悉结构化程序设计方法。

内容纲要:

1.算法的概念 2.算法的特性 3.算法的表示

4.结构化程序设计方法

本讲教学重点与难点:

1.算法的内涵 2.结构化程序设计方法

教学方法、实施步骤及时间分配:

采用多媒体进行教学,具体教学步骤安排如下:

1.回顾上一节课主要内容,引入新课—————————————————5’ 2.新课教学———————————————————————————90’ 3.总结、布置作业及预习内容—————————————————————5’

总第三讲

第三章 数据的类型、运算符与表达式(4学时,共二讲)

第一讲

本讲教学目的:

1.使学生了解数据类型的概念

2. 使学生掌握整型数据,实型数据,字符型数据的数据存储形式和定义、使用方法

内容纲要:

1.C的数据类型

数据类型的概念、C语言中数据类型的分类。2.常量和变量

各种表示形式的整数、实数、字符和字符(串)常量,符号常量的定义和使用。

变量的定义和初始化。

本讲教学重点与难点:

1.C语言的数据类型

2.不同数据类型的使用范围 3.数据的隐式转换问题

教学方法、实施步骤及时间分配:

由于本节内容语法点比较多,所以在教学中结合多个小程序,在练习中掌握各知识点。采用多媒体进行教学,具体教学步骤和时间分配安排如下:

1.回顾上一节课主要内容,引入新课—————————————————5’ 2.新课教学———————————————————————————90’ 3.总结、布置作业及预习内容————————————————————5’

总第四讲

第三章 数据的类型、运算符与表达式

第二讲

本讲教学目的:

1.使学生掌握算术运算符与表达式的使用,赋值、逗号运算符和表达式的使用

2.使学生掌握各类数据类型间的混合运算的规则 3.使学生了解几种位运算符的运算规则

内容纲要:

1.运算符与表达式

运算符的优先级和结合性,表达式的运算规则,包括:算术运算符和算术表达式,赋值运算符和赋值表达式,逗号运算符和逗号表达式,不同类型的数据在计算和赋值时的类型转换规则。

2.位运算

按位与、按位或、按位异或、取反、左移、右移,位运算赋值,不同长度的数据进行位运算的原则。

本讲教学重点与难点:

1.C语言中的运算符和表达式 2.位运算

3.赋值运算符和赋值表达式 教学方法、实施步骤及时间分配:

由于本节内容语法点比较多,所以在教学中结合多个小程序,在练习中掌握各知识点。

采用多媒体进行教学,具体教学步骤和时间分配安排如下:

1.回顾上一节课主要内容,引入新课—————————————————5’ 2.新课教学—————————————————————————-——90’

(1)运算符与表达式(2)位运算

3.总结、布置作业及预习内容———————————————————5’

总第五讲

第四章 顺序程序设计(2学时,共一讲)

本讲教学目的:

1.使学生掌握程序的三种基本结构; 2.使学生掌握格式控制符的含义和作用;

3.使学生会运用赋值语句、输出、输入函数编制简单的程序。

内容纲要:

1.三种基本的程序结构

顺序结构的特点,选择结构的特点,循环结构的特点。2.C语句概述 C语言的语句分类。3.赋值语句

4.字符数据的输入输出 5.格式输入输出

格式输入/输出函数的调用方法和功能,格式控制符的含义和作用。6.顺序结构程序设计举例

本讲教学重点与难点:

1.顺序结构的程序流程

2.格式化输入输出在实际编程中的正确应用

教学方法、实施步骤及时间分配: 通过程序设计操练,熟悉编程基础。通过程序扩展,进行对比学习。采用多媒体进行教学,具体教学步骤和时间分配安排如下:

1.回顾上一节课主要内容,引入新课—————————————————5’ 2.新课教学———————————————————————————90’ 3.总结、布置作业及预习内容———————————————————5’

总第六讲

第五章 选择结构程序设计(2学时,共一讲)

本讲教学目的:

1.使学生掌握关系运算符的优先级顺序、关系表达式的值的计算; 2.使学生掌握逻辑运算符的优先级顺序、逻辑表达式的值的计算; 3.使学生掌握条件运算符的使用方法;掌握利用if语句和switch语句进行选择结构程序设计的基本方法。

内容纲要:

1.关系运算符和关系表达式

关系运算符及其优先级,关系表达式的构成和运算规则。2.逻辑运算符和逻辑表达式

逻辑运算符及其优先级,逻辑表达式的构成和运算规则。3.if 语句

if语句的三种形式,if语句的嵌套,条件运算符和条件表达式。4.switch语句

用switch语句实现多分支选择结构。5.选择结构程序举例

本讲教学重点与难点:

1.关系运算符和关系表达式

2.在程序中正确使用if语句构成条件判断 3.条件语句的嵌套

教学方法、实施步骤及时间分配:

从简单的问题着手,先要求学生自己编写简单程序。引入条件语句,同时在程序中讲解相关的语法知识点,提升高度。

采用多媒体进行教学,具体教学步骤和时间分配安排如下:

1.回顾上一节课主要内容,引入新课—————————————————5’ 2.新课教学———————————————————————————90’ 3.总结、布置作业及预习内容—————————————————————5’

总第七讲

第六章 循环控制(3学时,共1.5讲)

本讲教学目的:

1.使学生掌握while语句,do-while语句,for语句的特点和循环结构程序设计的基本方法;

2.使学生熟悉循环的嵌套使用。

内容纲要:

1.while 语句

使用while 语句实现当型循环的程序设计方法。2.do-while语句

使用do-while语句实现直到型循环的程序设计方法。3.for语句

使用for语句实现次数型循环结构的程序设计。4.循环嵌套

本讲教学重点与难点:

1.for 语句在循环结构中的应用

2.While、do while语句在循环结构中的应用 3.多层循环嵌套

教学方法、实施步骤及时间分配:

从简单的问题着手,先要求学生自己编写简单程序。引入循环语句,同时在程序中讲解相关的语法知识点,提升高度。

采用多媒体进行教学,具体教学步骤和时间分配安排如下:

1.回顾上一节课主要内容,引入新课—————————————————5’ 2.新课教学———————————————————————————90’ 3.总结、布置作业及预习内容—————————————————————5’

第七章 数组(4学时,共二讲)

总第八讲

第六章 循环控制(1学时)、第七章 数组(1学时)

本讲教学目的:

1.掌握break语句和continue语句用法; 2.使学生掌握循环编程的方法;

内容纲要:

1.break语句和continue语句

break和continue语句功能和使用方法。2.循环结构程序举例 3.一维数组的定义和引用

一维数组的定义和初始化,,一维数组元素的引用,一维数组的程序举例。

本讲教学重点与难点:

1.break语句和continue语句 2.循环结构程序编程方法 3.一维数组的定义和引用

教学方法、实施步骤及时间分配:

从简单的问题着手,先要求学生自己编写简单程序。引入循环语句,同时在程序中讲解相关的语法知识点,提升高度。

采用多媒体进行教学,具体教学步骤和时间分配安排如下:

1.回顾上一节课主要内容,引入新课—————————————————5’ 2.新课教学———————————————————————————90’ 3.总结、布置作业及预习内容—————————————————————5’

第七章 数组(4学时,共二讲)

总第九讲

第七章 数组(2学时)

本讲教学目的:

1.使学生掌握一维数组、二维数组的定义和引用 2.使学生掌握一维数组、二维数组的初始化 3.使学生掌握字符数组的定义,引用和初始化 4.使学生熟悉字符数组的输入输出

内容纲要:

二维数组的定义和引用:

1. 二维数组的定义和初始化; 2.二维数组元素的引用; 3.二维数组的程序举例。

本讲教学重点与难点:

1.数组的排序; 2.二维数组概念的理解 3.“冒泡法”排序

教学方法、实施步骤及时间分配:

采用实例引入和编程半成品法。通过一个简单的实例引入数组的应用,示范数组的定义、输入操作之后,引导学生自己作出输出解,从中讲解有关数组的知识点,培养学生的编程能力。

采用多媒体进行教学,具体教学步骤和时间分配安排如下:

1.回顾上一节课主要内容,引入新课—————————————————5’ 2.新课教学———————————————————————————90’ 3.总结、布置作业及预习内容—————————————————————5’

第八章 函数(4学时,共二讲)

总第十讲

第七章 数组(1学时)、第八章 函数(1学时)

本讲教学目的:

1.使学生掌握掌握字符处理函数puts, gets, strcat, strcpy, strcmp, strlen 的使用;

2.使学生了解函数strlwr,strupr的功能; 3.使学生了解函数的概念和分类;

4.使学生掌握函数定义的形式,函数的形参和实参的概念,函数的返回值和函数的调用。

内容纲要:

1.字符数组的定义和初始化,字符数组元素的引用,字符串和字符串结束标志,字符数组的输入输出,字符串处理函数,字符数组应用举例; 2.函数的定义方法; 3.函数参数和函数的值

形式参数与实在参数,函数的返回值。4.函数调用——函数的一般调用方式; 5.函数的嵌套调用;

本讲教学重点与难点:

1.字符数组的运算; 2.函数的定义与调用; 3.形参与实参的意义与作用

教学方法、实施步骤及时间分配:

采用实例引入和编程半成品法。通过一个简单的实例引入数组的应用,示范数组的定义、输入操作之后,引导学生自己作出输出解,从中讲解有关数组的知识点,培养学生的编程能力。

通过程序的改造,将程序中的功能模块独立出来而引入函数的介绍。采用多媒体进行教学,具体教学步骤和时间分配安排如下:

1.回顾上一节课主要内容,引入新课—————————————————5’ 2.新课教学———————————————————————————90’ 3.总结、布置作业及预习内容—————————————————————5’

第八章 函数(4学时,共二讲)

总第十一讲 第八章 函数(2学时)

本讲教学目的:

1.使学生掌握函数的调用方法; 2.使学生熟悉函数的嵌套调用; 3.使学生掌握简单的函数递归调用; 4.使学生熟悉数组作为函数参数;

5.使学生掌握局部变量和全局变量的作用范围。

内容纲要:

1.函数的递归调用;

2.函数调用时数据传递方法;

函数调用时的值传递,函数调用时的地址传递,函数调用时的返回值传递方式。

3.局部变量和全局变量。4.变量的存储类别

变量的存储类别(自动、静态、寄存器、外部),局部变量和全局变量的作用域和生存期。

本讲教学重点与难点:

1.函数的定义与调用; 2.形参与实参的意义与作用; 3.参数的两种传递方式。

教学方法、实施步骤及时间分配:

采用多媒体进行教学,具体教学步骤和时间分配安排如下:

1.回顾上一节课主要内容,引入新课—————————————————5’ 2.新课教学———————————————————————————90’ 3.总结、布置作业及预习内容—————————————————————5’

第九章 预处理命令(1学时)

总第十二讲

第八章 函数(1学时)、第九章 预处理命令(1学时)

本讲教学目的:

1.使学生了解内部函数和外部函数的定义和作用范围; 2.使学生熟悉带参数的宏定义,和不带参数的宏定义; 3.使学生了解“文件包含”处理; 4.使学生了解条件编译。

内容纲要:

1.内部函数和外部函数

2.如何运行一个多文件的程序 3.宏定义;

4.“文件包含”处理; 5.条件编译。

本讲教学重点与难点: 1. 内部函数和外部函数;

2.条件编译。

教学方法、实施步骤及时间分配:

采用多媒体进行教学,具体教学步骤和时间分配安排如下: 1.回顾上一节课主要内容,引入新课—————————————————5’ 2.新课教学———————————————————————————90’ 3.总结、布置作业及预习内容—————————————————————5’

第十章 指针(4学时,共二讲)

总第十三讲

本讲教学目的:

1.使学生了解地址和指针的概念;

2.使学生掌握指针变量的定义,引用,指针变量作为函数参数的使用; 3.使学生掌握指向数组元素的指针的含义,通过指针引用数组元素的方法; 4.使学生掌握数组名,指针作为函数参数的使用方法; 5.使学生掌握多维数组中指针的移动规则;

6.使学生掌握字符串不同的表示方式,字符串指针和字符数组作函数参数的比较。

内容纲要:

1.地址、指针和指针变量的概念

指针与地址,指针变量的概念与作用。2.变量的指针和指向变量的指针变量;

3.指向变量的指针变量的定义、初始化、赋值、引用方法,指针变量作为函数的参数;

4.数组的指针和指向数组的指针变量

指向数组的指针变量的定义、初始化、赋值、引用方法;指向多维数组的指针变量的定义、初始化、赋值、引用方法。5.字符串的指针和指向字符串的指针变量 6.指针数组

指针数组的定义、初始化和引用;main函数的参数。

本讲教学重点与难点:

1. 指针变量以及指向数组的指针变量的应用; 2.指针引用数组时指针的定位;

教学方法、实施步骤及时间分配: 结合实例进行教学

采用多媒体进行教学,具体教学步骤和时间分配安排如下:

1.回顾上一节课主要内容,引入新课—————————————————5’ 2.新课教学———————————————————————————90’ 3.总结、布置作业及预习内容—————————————————————5’

第十章 指针(4学时,共二讲)

总第十四讲

本讲教学目的:

1.使学生熟悉指向函数的指针; 2.使学生掌握返回指针值的函数; 3.使学生熟悉指向数组和指向指针的指针。

内容纲要:

1.指向指针的指针变量; 2.返回指针值的函数; 3.指针变量作函数参数;

4.函数的指针和指向函数的指针变量。

本讲教学重点与难点:

1.函数的指针和指向函数的指针变量的区别;

2.指针变量作函数参数和普通变量作函数参数的异同。

教学方法、实施步骤及时间分配: 结合实例进行教学

采用多媒体进行教学,具体教学步骤和时间分配安排如下:

1.回顾上一节课主要内容,引入新课—————————————————5’ 2.新课教学———————————————————————————90’ 3.总结、布置作业及预习内容—————————————————————5’ 第十一章 结构体与共同体(4学时,共二讲,第一讲)

总第十五讲

本讲教学目的:

(1)掌握定义结构体类型的定义方法(2)掌握结构体变量的定义和引用方法(3)掌握结构体数组的定义和初始化(4)掌握指向结构体变量的指针

(5)了解指向结构体的指针作函数的参数的使用方法

内容纲要:

(1)声明一个结构体的一般形式(2)定义结构体类型变量的方法(3)结构体变量的引用(4)结构体变量的初始化(5)结构体数组的定义和初始化(6)指向结构体类型数据的指针

本讲教学重点与难点:

1.结构体的概念与引用 2.指向结构体类型数据的指针

教学方法、实施步骤及时间分配: 结合实例进行教学

采用多媒体进行教学,具体教学步骤和时间分配安排如下: 1.回顾上一节课主要内容,引入新课—————————————————5’ 2.新课教学———————————————————————————90’ 3.总结、布置作业及预习内容—————————————————————5’

第十一章 结构体与共同体(4学时,共二讲,第二讲)

总第十六讲

本讲教学目的:

(1)使学生了解指向结构体的指针作函数的参数的使用方法(2)掌握链表的建立,输出,删除,插入等操作(3)了解共同体的概念,共同体类型数据的特点(4)熟悉共同体变量的引用方式(5)了解枚举类型的声明方法

内容纲要:

(1)用指针处理链表

链表的概念,处理动态链表所需的函数,链表的建立,输出,删除,插入等操作。(2)共用体的概念

共同体变量的引用方式,共同体类型数据的特点。(3)枚举类型

枚举类型的概念和定义,枚举型变量的定义和引用。

本讲教学重点与难点:

1.用指针处理链表

教学方法、实施步骤及时间分配: 结合实例进行教学

采用多媒体进行教学,具体教学步骤和时间分配安排如下:

1.回顾上一节课主要内容,引入新课—————————————————5’ 2.新课教学———————————————————————————90’ 3.总结、布置作业及预习内容—————————————————————5’

第十章 文件(2学时,共一讲)

总第十七讲

本讲教学目的:

1.使学生了解文件类型的指针; 2.掌握文件的打开关闭的方法; 3.掌握文件的读写和定位。

内容纲要:

1.文件概述; 2.文件类型指针; 3.文件的打开和关闭; 4.文件的读写;

5.字符的读写函数,字符串的读写函数,数据块的读写函数,格式读写函数;

6.文件的定位;

rewind函数,fseek函数和随机读写。7.文件应用举例。

本讲教学重点与难点:

1.文件概念的内涵; 2.文件的定位。

教学方法、实施步骤及时间分配: 结合实例进行教学

采用多媒体进行教学,具体教学步骤和时间分配安排如下:

1.回顾上一节课主要内容,引入新课—————————————————5’ 2.新课教学———————————————————————————90’ 3.总结、布置作业及预习内容—————————————————————5’

第10篇:C语言英文版教案2

LECTURE 2

ASSIGNMENT OPERATORS

I Aignment Operators(P50-2.10)

1、common Aignment Grammar:〈variable〉=〈expreion〉 For example:

x=b*b-4*a*c

BookPrice=128/5.6 Function:It aigns the expreion on the right of equal-sign to the variable on the left.equal-sign, equality sign, the sign of equality

2、Special Aignment Grammar: = It is equivalent to

=()Notice the expr1 must be a variable , op must be a binary operator and expr2 is any expreion.The parentheses around expr2 is neceary.x*=y+1 means

x=x*(y+1)rather than

x=x*y+1 For example,x+=y

is equivalent to x=x+y

x-=y+z

is equivalent to x=x-(y+z)

Example1:To analyse running result the following program.#include

void main(void)

{

int x,y,z;

x=2/4*7;

y=2/4*7.0;

z=2/4.0*7;

printf("x=%d y=%d z=%d",x,y,z);

} The result is :x=0 y=0 z=3.II Increment and Decrement Operators(P46-2.8)

C provides two unusual operators for incrementing and decrementing variables.The increment operator ++ adds 1to its operand, while the decrement operator – subtracts 1.The unusual aspect is that ++ and--may be used either as prefix operators(before the

variable,as in ++n),or postfix(after the variable: n++).In both cases,the effect is to increment n.But the expreion ++n increments n before its value is used, while n++ increment n after its value has been used.This means that in a context where the value is being used, not just the effect, ++n and n++ are different.If n is 5, then

x=n++;sets x to 5, but

x=++n;sets x to 6.In both cases, n becomes 6.The increment and decrement operators can only be applied to variables;an expreion like(i+j)++ is illegal.例2:To analyse running result the following program.#include void main(void)

{

int x,y,z;

x=3;

y=x++;

z=x;

printf("%d %d %dn", x, y, z);

x=3;

y=++x;

z=x;

printf("%d %d %dn", x, y, z);

x=10;

x++;

y=10;

++y;

printf("%d %dn", x, y);

x=y*=z+1;

printf("x=%d y=%dn", x, y);} The result is : 4 3 4 4 4 4 11 11 x=55 y=55 III Standard Input and Output(P151-7.1)

1、Function about Input Character

The simplest input mechanism is to read one character at a time from the standard input, normally the keyboard, with getchar, getch or getche.(1)int getche(void)(2)int getch(void)Their prototype in conio.h(3)int getchar(void)

prototype in stdio.h Function:The three functions return the next input character each time they are called.If input buffer is empty, then they will wait that you input a character.But getchar will wait until RETURN preed and getch doesn’t display the character inputted by you.2、Function about Output Character(1)int putchar(int ch)(2)int putch(int ch)

The two functions display ch on screen where ch either as ASCII integer such as 65, or as character such as ‘A’ and they are equivalent.例3:To analyse running result the following program.# include] #include void main(void)

{

char x;

int y;

x=getche();

y=getch();;

putch(x);

putchar(y);

putch(x+1);} The result is adb IV We will introduce 7.2 on page 153 and 7.4 on page 157 next lecture.Homework

1、Translate the front of 14 and half lines on page 50 into chinese.2、Do

I single choice:

2、6、7、10、15、18、22 on page 5 of exercise

3、Read 2.8 on page 46, 2.10 on page 50 and 7.1 on page 151.aspect [e.spekt ]n:方面,面貌,外表

carriage [kerid3 ]n:打字机的滑动架,四轮马车 context [ k)ntekst ]n:前后关系,上下文 effect [ i’fekt ]n:效果,结果;a(ive)illegal [i’lige.l ]a:不合法的,非法的,违规的mechanism [ meke.nize.m ]n:途径,手法,技巧,机械,装置,机构 operand 运算数

parentheses [ pe’renθisi:z ]n:园括号,插入语 postfix 后缀

prefix [ prifiks ]n:前缀 unusual 独特的

第11篇:《C语言程序设计》教案.

《C语言程序设计》教案

使用教材:谭浩强,《C程序设计》,清华大学出版社,2005年7月第3版

任课教师:王琪

授课班级:信息科学与技术学院06(1)

授课时间:06年秋学期

课时安排:第一学期每周5课时,其中上机每周2课时,讲授至第9章。第二学期每周4课时,其中上机每周2课时,讲授至第13章。

盐城师范学院信息科学与技术学院

第12篇:C语言入门基础教案

C语言基础教案

教学目标:

一认知目标:了解C语言的特点和C语言的开发步骤

二能力目标:初步了解C程序的组成结构和主函数的作用;

掌握五种基本算术运算符的使用:+、—、*、/、%,了解优先级与结合性;

三情意目标:学习C语言基础上能使用Microsoft Visual C++6.0 进行基本的C程序开发

教学要求:

识记:

计算机程序设计语言的一些必备知识与理论 理解:

理解C程序的组成结构和主函数的作用;

理解C语言等高级程序设计语言的开发过程

理解C语言中各种运算的运算规则,由运算符和相关数据组成表达式的方法;

运用:

能使用printf()函数进行信息的输出;

能编写简单程序

教学重点:

1)计算机程序设计语言的理论知识,语言的分类和特点以及开发过程等; 2)C语言的简介,结构特征和特点等;

3)如何使用Microsoft Visual C++ 6.0进行C语言程序开发; 4)C语言源程序的结构介绍及基本语法的简介; 5)C语言源程序的书写要求;

6)C语言基础:函数的组成、标识符及其命名、变量的声明、变量的赋值、各种算数运算符的使用及优先级与结合性等。

教学难点:

如何让学生理解C语言的结构及语法基础还有源程序的书写要求,掌握对函数的组成、标识符及其命名、变量的声明、变量的赋值、各种算数运算符的使用及优先级与结合性等

授课方法: 讲授法与演示法相结合计算机程序设计语言基础

一新课导入

大家都听过程序员没?或者是网络上俗称调侃的码农?对,简单讲就是编写计算机代码的工作。在新世纪大家对与计算机相关的软件和产品都不陌生,每个人都使用过计算机软件如微信,QQ等等,那这些软件又是怎么开发出来的呢?简单来讲它们是怎么产生的呢?对,它们都是使用计算机程序编写出来的。今天我们就来学习了解下计算机程序设计语言。

二新课讲授

1计算机程序设计语言介绍及分类 程序概念:程序是由一系列指令组成的,为解决某一具体问题而设计的一系列排列有序的指令的集合。

程序设计语言分为三类:机器语言、汇编语言、高级语言。 机器语言:一台计算机中所有指令集合称为该计算机的指令系统,这些指令就是机器语言,它是一种二进制语言。

优点:面向机器、程序简洁、运行速度快;

缺点:不直观、难懂、难记、难写、难以修改和维护

 汇编语言:使用符号(助记符)来代替机器语言中的二进制代码

优点:质量高、执行速度快、占用内存少

缺点:面向机器,与机器语言基本上一一对应,具有机器语言的缺点

 高级语言:接近自然语言,使用英语单词表达语句,便于理解、记忆和掌握

优点:通用性强,便于理解、记忆和掌握 缺点:不能直接运行源程序,运行速度相对慢

2高级程序设计语言的开发过程

 分析问题、建立模型  表现模型  源程序的编写  程序的编译与连接  程序的测试与调试

3 C语言的特点

① 既有高级语言的程序思想与设计方法,又有低级语言的操作能力; ② 结构化体系

③ 可以直接访问内存的物理地址,丰富的运算符和数据类型 ④ 可移植性强 ⑤ 代码效率高

4 使用Microsoft Visual C++ 6.0开发C语言程序(1)启动Microsoft Visual C++ 6.0(2)(3)(4)(5)新建项目 新建文件

在出现的文本窗口中输入程序 编译并运行程序

5 C源程序的结构特征

#include

/*编译预处理,包含标准输入输出文件头文件*/ Int main(void)/*主程序名*/ {

/*表示函数的开头*/ Printf(“Hello,World!n”);

/*函数体*/ Return 0;}

/*表示函数的结束*/

说明:

(1)程序一般用小写字母书写;

(2)C程序是由函数构成的,函数是C程序的基本单位;(3)每个程序必须要有一个main()(只能有一个),称主函数;(4)程序体必须要在{}之间;

(5)每个语句的结尾,必须要有“;”作为终止符;(6)用/*..........*/作注释,//可作行注释;

三归纳小结

本节主要介绍了计算机程序设计语言及分类以及高级程序设计语言的开发过程,重点介绍C语言的特点和使用Microsoft Visual C++ 6.0开发C语言程序的步骤,最后由最简单的C语言源程序来学习了解C语言的重点基本规则。

四 课堂巩固练习

带领学生使用演示如何使用Microsoft Visual C++ 6.0开发环境,并演示简单的C语言源程序整个开发过程步骤。

五作业布置

在电脑上安装Microsoft Visual C++ 6.0软件,并学会新建项目和文件,将helloworld程序编辑运行出来,并练习其他输出语句的程序设计。

六后记

如何让学生对程序设计产生兴趣和感性和理性的认识是C语言程序设计良好开始的基础。

第13篇:C语言

整形

字符型 单精度型基本类型双精度型枚举类型

数组类型

构造类型结构体类型

数据类型

共同体类型

指针类型(C语言的精华)

空类型

整形:int

字符型 char

单精度实型 float双精度实型 double

运算符

※ 乘法运算符

/ 除法运算符

﹪ 求余运算符

》 右移运算符

《 左移运算符

==等于运算符

!= 不等于运算符

第14篇:C语言

Home

Exam List

Notification

Problem

Ranklist

Meage

User Information

HJP-2013学期作业

程序设计题

1.(10分)

一秒钟以后

题目描述

输入某时刻的时、分、秒数,输出一秒钟以后的新时刻。时间采用24小时制

输入描述

时、分、秒都是整数,输入时以空格分隔。

输出描述

时、分、秒以:分隔

输入样例

14 8 59

输出样例

14:9:0

用户代码

#include void main(){ int h,m,s,t;scanf("%d%d%d",&h,&m,&s);t=h*3600+m*60+s;t=t+1;h=t/3600;m=(t-h*3600)/60;s=t-h*3600-m*60;if(h!=24)printf("%d:%d:%dn",h,m,s);if(h==24)

printf("0:0:0");}

最后保存时间: 2013-10-30 16:11:42 本题得分:10分(4/4)

查看最新评判结果

2.(10分)

进制转换

题目描述

输入一个十进制正整数,输出对应的二进制数串

输入描述

输入一个正整数n,n大于零。

输出描述

对于每个测试实例,输出一行二进制码。

输入样例

输出样例

10010

用户代码

#include void main(){ int n,i,a[50],k=0;scanf("%d",&n);for(i=0;n>0;i++){

if(n%2==0)

a[i]=0;

else

a[i]=1;

n=n/2;

k=k+1;} while(k>0)

printf("%d",a[--k]);

system("pause");}

最后保存时间: 2013-10-28 17:22:36 本题得分:10分(1/1)

查看最新评判结果

3.(10分)

简易计算器

题目描述

简易计算器:能完成整数的加、减、乘、除和模除运算。

输入描述

输入为一行: 一个整数a,一个字符c以及另一个整数b。

输出描述

输出为一行,内容是a和b进行整数运算c所得结果: 当c为+时,输出a+b;当c为-时,输出a-b;当c为*时,输出a*b;当c为/时,输出a/b;当c为%时,输出a%b;当c为其它字符或者a和b无法进行c所规定的整数运算时,输出NA。

输入样例

8+5 6/0-7%-4 3#9

输出样例

13 NA-3 NA

用户代码

#include void main(){ int a,b,sum;char c;scanf("%d%c%d",&a,&c,&b);switch(c){ case '+':sum=a+b;printf("%d",sum);break;case '-':sum=a-b;printf("%d",sum);break;case '*':sum=a*b;printf("%d",sum);break;case '/':if(b!=0){

sum=a/b;printf("%d",sum);}

else if(b==0)

printf("NA");break;case '%':if(b!=0){

sum=a%b;printf("%d",sum);}

else if(b==0)

printf("NA");break;default:printf("NA");break;} }

最后保存时间: 2013-10-30 16:17:52 本题得分:10分(5/5)

查看最新评判结果

4.(10分)

一元二次方程根的个数

题目描述

输入一元二次方程的系数a,b,c,输出方程的根的个数。

输入描述

三个实数

输出描述

输出方程的根的个数

输入样例

1 3 2

输出样例

用户代码

#include #include void main(){ double a,b,c,d;scanf("%lf%lf%lf",&a,&b,&c);d=b*b-4*a*c;if(d==0)

printf("1");else if(d>0)

printf("2");else

printf("0");}

最后保存时间: 2013-10-28 10:41:49 本题得分:10分(3/3)

查看最新评判结果

5.(10分)

多项式求和

题目描述

多项式的描述如下:

11/4 + 1/5-1/6 +...现在请你求出该多项式的前n项的和。

输入描述

每组输入数据是一个正整数n(n

输出描述

对于每个测试实例n,要求输出多项式前n项的和。每个测试实例的输出占一行,结果保留2位小数。

输入样例

输出样例

0.50

用户代码

#include void main(){ int n,i=1,j=1;double x=0,y=1;scanf("%d",&n);while(i

y=j*1.0/i;

x+=y;

i++;

j=j*-1;} printf("%.2f",x);system("pause");}

最后保存时间: 2013-10-28 11:03:19 本题得分:10分(4/4)

查看最新评判结果

6.(10分)

青年歌手大奖赛_评委会打分

题目描述

青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。

输入描述

输入数据的第一个数是n(2

输出描述

对于每组输入数据,输出选手的得分,结果保留2位小数,每组输出占一行。

输入样例

4 100 99 98 97

输出样例

98.50

用户代码

#include void main(){ int i,n;double b,ave,max,min,sum=0;scanf("%d",&n);

for(i=0;i

scanf("%lf",&b);

{

if(i==0){

min=b;max=b;

}

if(b>max)

max=b;

if(b

min=b;}

sum=sum+b;

}sum=sum-min-max;

ave=sum/(n-2);

printf("%.2f",ave);}

最后保存时间: 2013-10-30 22:32:09 本题得分:10分(5/5)

查看最新评判结果

7.(10分)

百钱买百鸡

题目描述

这是一个经典问题:话说某人用一百个铜钱刚好买了一百只鸡, 其中一只公鸡x个铜钱, 一只母鸡y个铜钱,一个铜钱z只小鸡,问一百只鸡中公鸡,母鸡,小鸡各有多少只呢?

输入描述

输入数据包含三个正整数x、y、z,其具体含义参见题目描述。

输出描述

如果给定的数据无解,请输出:"no solution!".否则,请分别输出公鸡、母鸡和小鸡的个数,数据之间用一个空格隔开。

如果有多组答案,请用多行输出所有结果,并优先输出x较小的结果(x相同的,再比较y,y较小者优先输出),具体格式参见样例;

输入样例

5 3 3

输出样例

4 18 78 8 11 81 12 4 84

用户代码

#include void main(){ int x,y,z,i,j,k,a=0;scanf("%d%d%d",&x,&y,&z);for(i=1;i

for(j=1;j

for(k=1;k

if(i+j+k==100&&x*i+y*j+k/z==100&&k%z==0){

printf("%d %d %dn",i,j,k);

a=1;

}

}if(a==0)

printf("no solution!");} 最后保存时间: 2013-12-12 20:58:49 本题得分:10分(5/5)

查看最新评判结果

8.(10分)

丑数的个数

题目描述

如果一个正整数分解后的的所有素因子最多只有2,3,5,7四种,则这个数称为丑数,比如,1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27就是前20个丑数。请编程判断一个数是否是丑数。

输入描述

输入数据首先包含一个整数N(1

输出描述

请编程输出给出的这些数中丑数的个数。

输入样例

5 2 9 11 65 100

输出样例

用户代码

#include void main(){ int n,i,a[10],k=0;scanf("%d",&n);for(i=0;i

scanf("%d",&a[i]);

for(i=0;i

while(a[i]%2==0)

a[i]=a[i]/2;

while(a[i]%3==0)

a[i]=a[i]/3;

while(a[i]%5==0)

a[i]=a[i]/5;

while(a[i]%7==0)

a[i]=a[i]/7;

if(a[i]==1)

k++;}printf("%d",k);}

最后保存时间: 2013-10-29 17:42:38 本题得分:10分(5/5)

查看最新评判结果

9.(10分)

哥德巴赫猜想

题目描述

德国数学家哥德巴赫曾猜测:任何大于6的偶数都可以分解成两个素数的和。但有些偶数可以分解成多种素数对的和,如: 10=3+7,10=5+5,即10可以分解成两种不同的素数对。输入N,判断它可以分解成多少种不同的素数对。(注: A+B与B+A认为是相同素数对)

输入描述

一个大于6的偶数

输出描述

可分解成的素数对的数目

输入样例

输出样例

用户代码

#include #include int han(int a){ int j,flag,k=1;for(j=2,flag=1;j

if(a%j==0){flag=0;k=0;break;}

if(flag==1)k++;}if(k==0||a==1)

return 0;else

return 1;} void main(){ int n,i,t,x=0;scanf("%d",&n);for(i=2;i

t=han(i);

if(t==1)

if(han(n-i)==1)

x++;} printf("%d",x);}

最后保存时间: 2013-11-11 13:11:49 本题得分:10分(2/2)

查看最新评判结果

10.(10分)

绝对素数

题目描述

编写方法static int prim(int k)判断一个数是否为素数。在主方法实现如下功能:输入一个10-99之间的两位整数,判断该数是否为绝对素数。所谓绝对素数是指本身是素数,其逆序数也是素数的数。例如:13绝对素数;23不是绝对素数。

输入描述

输入一个10-99之间的两位整数。

输出描述

判断该数是否为绝对素数,是则输出YES,否则输出NO。

输入样例

输出样例

YES

用户代码

#include #include void main(){ int i,n,a,b,c,x,flag,lead;scanf("%d",&n);for(i=2,flag=1;i

if(n%i==0){

flag=0;break;} } if(flag==1)

a=1;else

a=0;b=n/10;c=n%10;x=c*10+b;if(a==1){

for(i=2,lead=1;i

if(x%i==0){

lead=0;break;}

} }

if(lead==1)

printf("YES");

else

printf("NO");}

最后保存时间: 2013-11-25 17:21:28 本题得分:10分(4/4)

查看最新评判结果

11.(10分)

最大公约数和最小公倍数

题目描述

输入两个正整数m和n,求其最大公约数和最小公倍数。

输入描述

输入一行,包含两个正整数,之间用空格分隔。

输出描述

输出一行,包含最大公约数和最小公倍数,之间用空格分隔。

输入样例

45 60

输出样例

15 180

用户代码

#include int han(int m,int n){ int i,k;for(i=1;i

if(i%n==0&&i%m==0){

k=i;break;} }return k;} void main(){ int a,b,x,y;scanf("%d%d",&a,&b);x=han(a,b);y=(a*b)/x;printf("%d %d",y,x);} 最后保存时间: 2013-11-26 12:53:16 本题得分:10分(3/3)

查看最新评判结果

12.(10分)

数字计算

题目描述

给出一个不多于7位的正整数,要求(1)求出它是几位数;(2)分别打印出每一位数字;(3)按逆序打印出各位数字,例如原数为321,应输出123。

输入描述

输入一行,包含一个不多于7位的正整数。

输出描述

输出三行,第一行为几位数,第二行为每一位数字(用空格分开),第三行为逆序数字。

输入样例

12345

输出样例 5 1 2 3 4 5 54321

用户代码

#include void main(){ char c[7];int i,n=0;gets(c);for(i=0;c[i]!='';i++)

n++;printf("%dn",n);for(i=0;c[i]!='';i++){

printf("%c ",c[i]);} printf("n");while(n>0)

printf("%c",c[--n]);}

最后保存时间: 2013-11-26 18:05:45 本题得分:10分(3/3)

查看最新评判结果

13.(10分)

统计字符数

题目描述 判断一个由a-z这26个字符组成的字符串中哪个字符出现的次数最多。

输入描述

一个由 a-z 这26个字符组成的字符串,长度不超过1000.输出描述

出现次数最多的字符和该字符出现的次数,中间用一个空格隔开。

输入样例

abbccc

输出样例

c 3

用户代码

#include #include void main(){

int a[26],i,max=0;char c[1001];gets(c);for(i=0;i

} a[i]=0;for(i=0;ia[max])

max=i;} printf("%c %d",max+'a',a[max]);最后保存时间: 2013-11-27 10:22:57 本题得分:10分(3/3)

查看最新评判结果

14.(10分)

对称译码

题目描述

有一行电文,已按下面规律译成密码: A->Z a->z B->Y

b->y C->X

c->x ……

即第1个字母变成第26个字母, 第i个字母变成第(26-i+1)个字母。非字母字符不变。要求编程将密码译回原文。

输入描述

输入一行电文。(电文字符数不超过100个字符,其中包含空格,电文以换行结束)

输出描述

输出译码后的原文,占一行。

输入样例

R zn z hgfwvmg.输出样例

I am a student.用户代码

#include void main(){ char str1[26],str2[26],c[1000];int i,j;

for(i=0;i

{

str1[i]='a'+i;

str2[i]='A'+i;

} gets(c);for(i=0;c[i]!='';i++){

for(j=0;j

if(c[i]='a'&&c[i]==str1[j]){

c[i]='z'-j;break;

}

if(c[i]='A'&&c[i]==str2[j]){

c[i]='Z'-j;break;

}

}

}

printf("%s",c);}

最后保存时间: 2013-11-27 11:27:41 本题得分:10分(3/3)

查看最新评判结果

15.(10分)

最长单词

题目描述

找出一个英文字符串中第一个最长的英文单词,各英文单词间以一个或多个空格分隔.输入描述

输入一串字符串,长度不超过1000.输出描述

最长单词,占一行.输入样例

I am a student

输出样例

student

用户代码

#include void main(){ char c[100];int a[100],i,j=0,n=0,m=0,k,max;gets(c);for(i=0;c[i]!='';i++)

j++;

c[j]=' ';for(i=0;c[i]!='';i++){

n++;

if(c[i]==' '){

if(n==i)

max=n-1;

m=n-1;

n=0;

if(m>max){

max=m;k=i;

}

} } for(i=k-max;i

printf("%c",c[i]);}

最后保存时间: 2013-12-12 20:59:31 本题得分:3分(1/3)

查看最新评判结果

16.(10分)

百分制成绩转化为五级制成绩

题目描述

给出一个百分制成绩,要求输出成绩等级'A','B','C','D','E'。90分及以上为'A',80~89分为'B',70~79分为'C',60~69分为'D',60分以下(不含60分)为'E'。

输入描述

输入百分制的成绩

输出描述

输出与百分制成绩对应的五级制成绩

输入样例

输出样例

A

用户代码

#include void main(){

int iNum;

scanf("%d", &iNum);

switch(iNum / 10)

{

case 10:

case 9 : printf("A");break;

case 8 : printf("B");break;

case 7 : printf("C");break;

case 6 : printf("D");break;

default: printf("E");break;

} }

最后保存时间: 2013-12-10 21:51:57 本题得分:10分(3/3)

查看最新评判结果

17.(13分)

打印数字三角形

题目描述

输入一个非负整数n(1~100),打印出具有以下规律的图形。如输入n=4,时,打印出数字图形如下:

1 5 2 8 6 3 10 9 7 4

输入描述 输入一个非负整数n(1~100)

输出描述

输出一个数字三角形,数字之间空格隔开,每行数字换行。

输入样例

输出样例

6 2

10 7 3

13 11 8 4

15 14 12 9 5

用户代码

#include int han(int q, int w,int u){ int r,t=q,y=u-1;for(r=1;r

t=t+y;

y--;}return t;} void main(){

} int a,n,i,j;scanf("%d",&n);for(i=1;i

a=han(i,j,n);

printf("%d ",a);}printf("n");} 最后保存时间: 2013-12-15 22:11:14 本题得分:10分(2/2)

查看最新评判结果

18.(10分)

求和

题目描述

求 a+aa+aaa+…+aa…a(n个a)之值,其中a是一个数字,n表示a的位数,例如:

2+22+222+2222+22222(此时n=5)

输入描述

输入a(1~9)和n(1~9),二者用空格分开.输出描述

输出计算得到的和.输入样例

2 5

输出样例

24690

用户代码

#include #include int han(q,w){ int j,e=0;for(j=w;j>=0;j--){

e=e+q*pow(10,j);}return e;} void main(){ int m,n,i,a=0;scanf("%d%d",&m,&n);for(i=n-1;i>=0;i--){

a=a+han(m,i);}printf("%d",a);}

最后保存时间: 2013-12-04 16:08:31 本题得分:10分(3/3)

查看最新评判结果

19.(10分)

常给父母打电话

题目描述

小明是一个懂事的孩子,他经常给父母打电话。可是知道他不知道每次给父母打了多长时间,现在他请你这个编程高手帮他计算一下。

输入描述

输入起始和结束时间,格式是hh:mm:,即小时、分钟、秒。

输出描述

输出小明打电话的时间,以秒为单位。

输入样例

06:00:00 07:00:00

输出样例

3600

用户代码

#include void main(){ int m1,m2,m3,n1,n2,n3,a,b;scanf("%d:%d:%d",&n1,&n2,&n3);scanf("%d:%d:%d",&m1,&m2,&m3);a=(m1-n1)*3600+(m2-n2)*60+(m3-n3);printf("%d",a);system("pause");}

最后保存时间: 2013-12-04 16:20:18 本题得分:10分(3/3)

查看最新评判结果

20.(10分)

I gue you can't pa it

题目描述

在2*n+1个数中,只有一个数只出现了1次,其他的数都出现了偶数次,现在请你找出这个只出现了1次的数。

输入描述

第一行一个整数n,n

输出描述

输出只出现了1次的那个数。

输入样例

2 2 2 3 3 5

输出样例

用户代码

#include void main(){ int n,a[100],i,b,flag,j,k,t;scanf("%d",&n);b=2*n+1;for(i=0;i

scanf("%d",&a[i]);for(i=0,flag=1;i

t=0;

for(j=0;j

if(a[i]==a[j])

t++;

}if(t==1)

k=i;}printf("%d",a[k]);}

最后保存时间: 2013-12-15 21:10:16 本题得分:0分(0/2)

查看最新评判结果

21.(10分)

素数输出

题目描述

输出素数

输入描述

输出N以内的全部素数。输入N

输出描述

在一行内输出N以内的全部素数,不含N,数字之间以空格分隔。

输入样例

输出样例

2 3 5 7

用户代码

#include #include void main(){ int x,m,i,flag;scanf("%d",&m);for(i=2;i

for(x=2,flag=1;x

if(i%x==0){flag=0;break;}

if(flag==1)

printf("%d ",i);} }

最后保存时间: 2013-12-10 21:49:34 本题得分:10分(3/3)

查看最新评判结果

22.(10分)

三角形

题目描述

给定三条边,请你判断一下能不能组成一个三角形。

输入描述

输入只有一行,包含三个正数A,B,C。

输出描述

如果三条边长A,B,C能组成三角形的话,输出YES,否则NO。

输入样例

1 2 3 2 2 2

输出样例

NO YES

用户代码

#include void main(){ int a,b,c;scanf("%d%d%d",&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a)

printf("YES");else

printf("NO");}

最后保存时间: 2013-12-10 21:53:26 本题得分:10分(3/3)

查看最新评判结果

23.(10分)

求奇数的乘积

题目描述

给你n个整数,求他们中所有奇数的乘积。

输入描述

第一行为n,整数的个数。第二行为n个整数。

输出描述

输出n个整数中奇数的个数.输入样例

3 1 2 3

输出样例

用户代码

#include void main(){ int n,i,a[100],q=1;scanf("%d",&n);for(i=0;i

scanf("%d",&a[i]);for(i=0;i

if(a[i]%2==1)

q=q*a[i];}printf("%d",q);}

最后保存时间: 2013-12-15 21:29:32 本题得分:10分(3/3)

查看最新评判结果

24.(10分)

回文数猜想

题目描述

一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数。任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其和不是回文数,则重复上述步骤,一直到获得回文数为止。例如:68变成154(68+86),再变成605(154+451),最后变成1111(605+506),而1111是回文数。于是有数学家提出一个猜想:不论开始是什么正整数,在经过有限次正序数和倒序数相加的步骤后,都会得到一个回文数。至今为止还不知道这个猜想是对还是错。现在请你编程序验证之。

输入描述

每行一个正整数。

特别说明:输入的数据保证中间结果小于2^31。

输出描述

输出两行,一行是变换的次数,一行是变换的过程。

输入样例

输出样例

1 23--->55

用户代码

最后保存时间: 从未保存

25.(10分)

计算组合数

题目描述

计算从n个人中选k个人组成委员会的不同组合数。

输入描述

分别输入n和k。

输出描述

输出组合数,占一行。

输入样例

4 2

输出样例

用户代码

#include int han(int w){ int q,k=1;for(q=w;q>0;q--){

k=k*q;}return k;} void main(){ int m,n,a,b,c,x,i;scanf("%d%d",&m,&n);a=han(m);b=han(n);i=m-n;c=han(i);x=a/(b*c);printf("%d",x);}

最后保存时间: 2013-12-11 13:02:11 本题得分:10分(3/3)

查看最新评判结果

26.(10分)

诸葛亮舌战群儒

题目描述

如果能穿越时空,zero真的好想去三国那个时期.所以zero很喜欢玩三国游戏,甚至还想开发一款三国游戏.言归正传,这次我们玩的游戏是舌战群儒。诸葛亮一个人开始与东吴的谋士一较高下,能否与东吴结盟,就看此时了。诸葛亮可以随便选择一个对手进行较量,只要诸葛亮的智力比他高,那么诸葛亮就赢了,否则就输了。

输入描述

首先输入一个整数M(0

接下来一行有N个整数,分别代表N个对手的智力(均小于等于1000000)。

输出描述

输出诸葛亮最多可以战胜几个对手。

输入样例

90 5 1 2 90 94 5

输出样例

用户代码

#include void main(){ int m,n,a,i,k=0;scanf("%d%d",&m,&n);for(i=0;i

scanf("%d",&a);

if(a

k++;}printf("%d",k);}

最后保存时间: 2013-12-11 13:06:25 本题得分:10分(3/3)

查看最新评判结果

27.(10分)

数字根

题目描述

一个正整数的数字根是通过计算该整数的各位的和产生的。如果一个整数的各位和是一位整数,那么这个数字就是该整数的数字根。如果该整数的各位和是两位或多位整数,那么,就需要重复计算各位的和,直到获得一位整数。例如,考虑正整数24。把2与4相加得到6。由于6是一个一位整数,所以,6就是24的数字根。现在再来考虑正整数39。3与9相加等于12。因为 12不是一位整数,因而,需要重复处理。再把 1 加2得到3,现在3已是一个一位整数了,那么3就是39的数字根。

输入描述

输入只有一个整数n.输出描述

输出n的数字根。

输入样例

24 39

输出样例

6 3

用户代码

#include int han(int x){ int b=0,n,q[100],w=0,e;do{

b++;

n=x%10;

x=x/10;

q[b]=n;}while(x>0);for(e=1;e

w=w+q[e];}return w;} void main(){ int i,m;scanf("%d",&m);do{

if(han(m)>=10)

m=han(m);

else

i=0;}while(i=0);printf("%d",han(m));}

最后保存时间: 2013-12-12 20:50:11 本题得分:10分(3/3)查看最新评判结果

28.(10分)

神奇的数字

题目描述

假设你有一个各位数字互不相同的四位数,把所有数字从大到小排序后得到a,从小到大排序后得到b,然后用a-b替换原来的数,并且继续操作。例如,从1234出发,依次可以得到 4321-1234=308

7、8730-378=83

52、8532-2358=6174.有趣的是,7641-1467=6174,回到了它自己。

输入一个n位数,输出操作序列,直到出现循环(即新得到的数曾经得到过).输入保证在循环之前最多只会产生1000个整数。

输入描述

输入只有一个整数n.输出描述

输出操作序列。

输入样例

1234

输出样例

1234->3087->8352->6174->6174

用户代码

最后保存时间: 从未保存

29.(10分)

2013年即将过去

题目描述

2013年即将过去,你需要求出N的阶乘对2013的求余结果。例如:3!(3的阶乘)等于6,6%2013等于6,所以3!%2013=6。注意:N

输入描述

输入只有一个整数N.输出描述 输出N!%2013的结果。

输入样例

输出样例

用户代码

#include int han(int w){ int q,k=1;for(q=w;q>0;q--){

k=k*q;}return k;} void main(){ int n,m,a;scanf("%d",&n);m=han(n);a=m%2013;printf("%d",a);}

最后保存时间: 2013-12-23 17:18:52 本题得分:0分(0/3)

查看最新评判结果

30.(10分)

约瑟夫环

题目描述

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位?

输入描述

正整数n

输出描述

正整数,表示留下者的号码

输入样例

输出样例

用户代码

#include void main(){ int a[100],b[100],i,t,j,k=3,n;scanf("%d",&n);for(i=0;i

a[i]=i+1;t=0;i=0;j=0;while(t

if(a[i]){

k++;

if(k%3==0){

t++;

b[t]=a[i];

a[i]=0;

}

}

i++;

if(i==n)

i=0;}printf("%d",b[10]);}

最后保存时间: 2013-12-11 13:46:12 本题得分:10分(1/1)

查看最新评判结果

返回题目列表.注销

Home|Top

Hangzhou Dianzi University Online Judge 3.0 Copyright ? 2005-2013HDU ACM Team.All Rights Reserved.Designer & Developer : Wang Rongtao LinLe GaoJie GanLu Total 1,387,969,257.763429(s)query 0, Server time : 2013-12-25 19:00:57, Gzip enabled

Administration

第15篇:C语言

第十章 结构体与共用体

10.1 选择题

【题10.1】已知学生记录描述为 struct student {int no;char name[20];char set;struct {int year;int month;int day;}birth;};struct student s;设变量s中的“生日”应是“1984年11月11日”,下列对生日的正确赋值方式是(D).A)year=1984;B)birth.year=1984;month=11;birth.month=11;day=11;birth.day=11;C)s.year=1984;D)s.birth.year=1984;s.month=11;s.birth.month=11;s.day=11;s.birth.day=11;

【题10.2】当说明一个结构体变量时系统分配给它的内存是(A).A)各成员所需内存量的总和 B)结构中第一个成员所需内存量 C)成员中占内存量最大者所需的容量 D)结构中最后一个成员所需内存量

【题10.3】以下对结构体类型变量的定义中不正确的是(D).A)#define STUDENT struct student STUDENT {int num;float age;}std1;B)struct student {int num;float age;}std1;C)struct {int num;float age;}std1;D)struct int num;float age;}student;struct student std1;

【题10.4】设有以下说明语句 struct stu {int a;float b;}stutype;则下面的叙述不正确的是(C).A)struct是结构体类型的关键字

B)struct stu是用户定义的结构体类型 C)stutype是用户定义的结构体类型名 D)a和b都是结构体成员名

【题10.5】C语言结构体类型变量在程序执行期间(A)..A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中 C)部分成员驻留在内存中 D)没有成员驻留在内存中

【题10.6】在16位IBM-PC机上使用C语言,若有如下定义: struct data {int i;char ch;double f;}b;则结构变量b占用内存的字节数是(D).A)1 B)2 C)3 D)4

题【10。7】以下程序的运行结果是(A).#include “stdio.h” main(){struct data {int year,month,day;}today;printf(“%dn”,sizeof(struct data));} A)6 B)8 C)10 D)12

【题10.8】根据下面的定义,能打印出字母M的语句是(D).Struct person{char name[9];int age;};struct person cla[10]={“John”,17, “Paul”,19, “Mary”,18, “adam”,16 };A)printf(“%cn”,cla[3].name);B)printf(“%cn”,cla[3].name[1]);C)printf(“%cn”,cla[2].name[1]);D)printf(“%cn”,cla[2].name[0]);

【题10.9】下面程序的运行结果是(D).main(){ struct cmplx {int x;int y;} cnum[2]={1,3,2,7};printf(“%dn”,cnum[0].y/cnum[0].x*cnum[1].x);} A)0 B)1 C)3 D)6

【题10.10】 若有以下定义和语句;

struct student {int age;int num;};struct student stu [3]={{1001,20 },{1002,19},{1003,21}};main(){struct student *p;p=stu;„..} 则以下不正确的引用是(D)。

A)(P++)—》 num B)p++ C)(*p).num D)p=&stu.age

【题10.11】以下scanf函数调用语句中对结构体 变量成员的不正确引用是(D)。

Stuct pupil {char name[20 ];int age;int sex;}pup[5,]*p;p=pup;A)scanf(“%s”,pup[0].name);B)scanf(“”%d),&pup[0].age;C)scanf(“%d”,&sex));(p D)scanf(“%d”,P->age);

【题10.12】有以下定义和语句,则以下引用形式不合法的是(D)。

Struct s {int i1;struct s*i2,i0;};static struct s a[3 ]={2,&a[1],’’,4,%a[2],&a[0],6,’’,&a[1]}, *ptr;ptr=a;A)ptr->i1++ B)*ptr->i2 C)++ptr->i0 D)ptr->i1

【题10.13】设有如下定义:

struct sk {int n;float x;}data,*p;若要使P指向data中的n域,正确的负值语句的是(C)。A)p=&data.n;B)*p=data.n;C)p=(struct sk*)&data.n;D)p=(struct sk*)data.n;

【题10.14】若哟于以下说明和语句:

struct student {int age;int num;}std,*p;p=&std;则以下对结构体变量std中成员age的引用方式不正确的是(D)。A)std.age B)p->age C)(*p).age D)*p.age

【题10.15 】若以下程序段:

struct dent { int n;int*m;};int a=1, b=2,c=3;struct dent s[3]={{101

A)(p++)->m B)*(P++)->m C)(*p).m D)*(++p)->m

【题10.16】若有以下说明和语句,则 对中域的正确引用方式是(D)。

Struct pupil {char name [20;int sex;}pup,*p;p=&pup;A)p.pup.sex B)p->pup.sex C)(*p).pup.sex D)(*p).sex

【题10.17】设有以下语句:

struct st {int n;struct st *next;};static struct st a[3 ] ={5,&a[1] ,7,&a[2],9,’’},*p;p=&a=[0];则以下表达式的值为6的是(D)。A)p++->n B)p->n++ C)(*P).n++ D)++p->n

【题10.18】以下程序的输出结果是(C)。

Struct stu {int x;int*y;} *p;int dt[4] ={10,20,30,40};struct stu a[4]={50,&dt[0],60,&dt[1], 70,&dt[2],80,&dt[3] };main(){p=a;printf(“%d,”,++p->x);printf(“%d,”,(++p)->x);printf(“%dn”,++(*p->y));} A)10,20,20 B)50,60,21 C)51,60,21 D)60,70,31

【题10.19】若有以下说明和语句,则下面表达式中值为1002的是(D)。Struct student {int age;int num;};struct student stu[3]={{1001,20},{1002,19},{1003,21};struct student *p;p=stu;A)(p++)—>num B)(p++)—>age C)(*p).num D)(*++p).age

【题10.20 】以下对结构体变量stul 中成员age 的非法引用是(B)。Struct student {int age;int num;}stul,*p;p=&stul;A)stul.age B)student.age C)p—>age D)(*p).age

【题10.21】设有以下说明和定义语句,则下面表达式中值为3的是(D)。Struct s {int i1;struct s*i2;};static struct s a[3]={1,&a[1],2,&a[2],3,&a[0]},*ptr;ptr=&a[1];A)ptr—>i1++ B)ptr++—>i1

【题10.22 】以下程序的功能是:读入一行字符(如:a,„.y,z),按输入时的逆序建立一个链接式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。请选择正确的内容填入[ ]中。#include #define getnode(type)[B]malloc(sizeof(type))main(){struct node {char info;struct node*link;}*top,*p;char c;top=NULL;while((c=getchar())[D]){p=getnode(struct node);p—>info=c;p—>link=top;top=p;} while(top){[B];top=top—>link;putchar(p—>info);free(p);} } [1]A)(type)B)(type*)C)type D)type*[B ] [2]A)= =’’ B)!=’’ C)= =’n’ D)=’n’[D] [3]A)top=p B)p=top C)= =top D)= =p [B]

【题10.23】若要利用下面的程序片段使指针变量p指向一个存储整型变量的存储单元,则[ ]中应填入的内容是(D)。Int*p;P=[ ]malloc(sizeof(int));A)int B)int* C)(*int)D)(int*)

【题10.24】当说明一个共用体变量时系统分配给它的内存是(C)。A)各成员所需内存量的总和 B)结构中第一个成员所需内存量 C)成员中占内存量最大者所需的容量 D)结构中最后一个成员所需内存量

【题10.25 】以下对C语言中共用体类型数据的叙述正确的是(C)。A)可以对共用体变量名直接赋值

B)一个共用体变量中可以同时存放其所有成员 C)一个共用体变量中不可能同时存放其所有成员 D)共用体类型定义中不能出现结构体类型的成员

【题10.26】若有以下定义和语句: union data {int i;char c;float f;}a;int n;则以下语句正确的是(B)。

A)a=5;B)a={2,’a’,1.2};C)printf(“%dn”,a);D)n=a;

【题10.27】设有以下说明,则下面不正确的叙述是(C)。Union data { int i;char c;float f;}un;A)un所占的内存长度等于成员f的长度 B)un的地址和它的各成员地址都是同一地址 C)un可以作为函数参数

D)不能对un赋值,但可以在定义un时对它初始化

【题10.28 】C语言共用体型变量在程序运行期间(B)。A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中 C)部分成员驻留在内存中 D)没有成员驻留在内存中

【题10.29】以下程序的运行结果是(B)。#include “stdio.h” main(){ union {long a;int b;char c;}m;printf(“%dn”,sizeof(m));} A)2 B)4 C)6 D)8

【题10.30】对下面程序中的每个打印语句后的注释行内的【x】小题,选择正确的运行结果。

#include “stdio.h” main(){union {int a[2];long b;char c[4];}s;s.a[0]=0x39;s.a[1]=0x38;printf(“%lxn”,s.b);/*【B】*/ printf(“%cn”,s.c[0]);/*【B】*/ } 【1】A)390038 B)380039 C)3938 D)3839 【2】A)39 B)9 C)38 D)8

【题10.31】对下面程序中的每个打印语句后的注释行内的【x】小题,选择正确的运行结果.#include “stdio.h” main(){int j;union {int a;long b;unsigned char c;}m m.b=0x12345678;printf(“%xn”,m.a;)/*【B】*/ printf(“%xn”,m.c;)/*【B】*/ } 【1】A)1234 B)5678 C)12345678 D)0 【2】A)12 B)78 C)1234 D)5678

【题10.32】在16位IBM-PC机上使用C语言,若有如下定义: union data {int i;char ch;double f;}b;则共用体变量 占用内存的字节数是(C)..A)1 B)2 C)8 D)11

【题10.33】以下程序的运行结果是(A).#include “stdio.h” union pw {int I char ch[2];}a;main(){ ch[0]=13;ch[1]=0;printf(“%dn”,a,i);} A)13 B)14 C)208 D)209

【题10.34】使用typedef定义一个新类型的正确步骤是(C).A)2,4,1,3 B)1,3,2,4 C)2,1,4,3 D)4,2,3,1 1.把变量名换成新类型名.2.按定义变量的方法写出定义体.3.用新类型名定义变量.4.在最前面加上关键字.【题10.35】下面对typedef的叙述中不正确的是(B).A)用typedef可以定义各种类型名,但不能用来定义变量 B)用typedef可以增加新类型

C)用typedef只是将已存在的类型用一个新的标识符来代表 D)使用typedef有利于程序的通用和移植

【题10.36】以下程序的运行结果是(C)...typedef union {long a[2];int b[4];char c[8];}TY TY our;main(){printf(“%dn”,sizeof(our));} A)32 B)16 C)8 D)24

10.2

【题10.37】以下程序的运行结果是 【10,x 】..struct n{ int x;char c;};main()struct n a={10,‘x’};

func(a);printf(%d,%c,a.x,a.c);} func(struct n b){b.x=20;b.c=’y’;}

填空 题 【题10.38】 以下程序的运行结果是【2,3】.main(){struct EXAMPLE{struct{ int x;inty;}in;int a;int b;}e;e.a=1;e.b=2;e.in.x=e.a*e.b;e.in.y=e.a+e.b;printf(“%d,%d”,e.in.x,e.in.y);}

【题10.39】 以下程序用以输出结构体变量bt所占内存单元的字节数,请在()内填上适当内容.struct ps { double i;char arr[20];};main(){ struct ps bt;printf(“bt size : %dn”,(sizeof(struct ps));}

【题10.40】以下程序用来按学生姓名查询其排名和平均成绩.查询可连续进行,直到键入 0 时结束,请在()内填入正确内容.#include #include #define NUM 4 struct student { int rank;char * name;float score;};(struct student)stu[]={ 3,”Tom”,89.3, 4,”Mary”,78.2 , 1,”Jack”,95.1, 2,”Jim”,90.6, };main(){ char str[10];int I;do { printf(“Entre a name:”);scanf(“%s”,str);for(i=0;i=NUM)printf(“Not foundn”);} while(strcmp(str,”0”)!= 0);}

【题10.41】设有三人的姓名和年龄存在结构数组中,以下程序输入三人中年龄居中者的姓名和年龄,请在()内填入正确内容.Static struct man { char name[20];int age;} person[]={“li-ming”,18, “wang-hua”,19, “zhang-ping”,20 };main(0 { int I,j,max,min;max=min=person[0].age;for(i=1;i

【题10.42】以下程序用”比较计数”法对结构数组 a 按字段 num 进行降序排列.” 比较计数”法的基本思想是:通过另一字段 con 记录 a 中小于某一特定关键字的元素的个数.待算法结束,a[i].con 就是a[i].num 在 a 中的排序位置.请在()内填入正确内容.#define N 8 struct c { int num;int con;} a[16]

main(){int i,j;for(i=0;i=1;i--)for(j=i-1;j>=0;j--)if(a[i].num

【题10.43】 若已定义: struct num {int a;int b;float f;} n={1,3,5.0};struct num * pn = &n;则表达式 pn->b/n.a*++pn->b的值是【12】,表达式(*pn).a+pn->f的值是【6.0】

【题10.44】以下程序的功能是计算并打印复数的差。请在【】内填入正确内容。struct comp {float re;float im;};struct comp *m(x,y)struct comp *x,*y;{【struct comp*z】;z=(struct comp *)malloc(sizeof(struct comp));z->re=x->re-y->re;z->im=x->im-y->im;return(【z】);} main(){struct comp *t;struct comp a,b;a.re=1;a.im=2;b.re=3;b.im=4;t=m(【&a&b】);printf(“z.re=%f , z.im=%f”,t->re,t->im);}

【题10.45】以下程序调用readrec函数把10名学生的学号、姓名、四项成绩以及平均分放在一个结构体数组里,学生的学号、姓名、和四项成绩由键盘输入,然后计算出平均分放在结构体对应的域中,调用writerec函数输出10名学生的记录.请在【 】内填入正确内容.#include struct stud { char num[5] , name[10];int s[4];int ave;};main(){struct stud st[30];int i , k;for(k=0;knum);gets(rec->name);for(i=0;is[i]】);ch=getchar();sum=0;for(i=0;is[i]】;rec->ave=sum/4.0;} writerec(struct stud * s){ int k,j;for(k=0;k

【题10.46】以下程序的运行结果是【7,3】。struct ks {int a;int *b;} s[4],*p;

main(){ int n=1 , i;printf(“n”);for(i=0;ia,(p++)->a);}

【题10.47】结构数组中存有三人的姓名和年龄,以下程序输出三人中最年长者的姓名和年龄。请在【 】内填入正确内容。static struct man { char name[20];int age;} person[ ]={“li-ming”,18, “wang-hua”,19, “zhang-ping”,20 };

main(){ struct man *p,*q;int old=0;p=person;for(;p【dt[leap][i]】;p++)if(old

age){q=p;【d】;} printf(“%s%d”,【p】);} 【题10.48】 以下程序运行结果为【 19 83.5 zhang l9 83.5zhang y hang】.struct s{ int a;float b;char *c;} main(){ static struct s x={19,83.5,”zhang”};struct s *px=&x;printf(“%d%.1f%sn”,x.a,x.b,x.c);printf(“%d%.1f%sn”,px―>a,(*px).b, px―>c);printf(“%c%sn”,*px―>c―1,&px―>c[1]);}

【题10.49】 以下程序是用来统计学生成绩。其功能包括输入学生姓名和成绩,按成绩从高到低排列打印输出,对前70%的学生定为合格(pa),而后30%的学生定为不合格(fail)。请在【】内填入正确内容.#include #include typedef struct { char name[30];int grade;}student;student cla[40];void sortcla();void swap();main(){ int ns,cutoff,I;printf(“number of student: n”);scanf(“%d”,&ns);printf(“Enter name and grade for each student: n”);for(i=0;i第16篇:C语言

Description 编写程序,输入三个整数变量hour(小时)、minute(分钟)、second(秒)代表一个时间,输出该时间20秒以后的时间。输入格式

一行三个整数,分别代表小时、分钟、秒,中间使用冒号分隔

输出格式

输出一个时间,数字间用冒号分隔

小时、分钟、秒均占两个数字位,不足位用0补足

输入样例 15:30:41 输出样例

15:31:01

#include #include int main(){ inthour,minute,second;scanf("%d:%d:%d",&hour,&minute,&second);if((20+second)>=60){ second=second-40;minute=minute+1;} if(minute>=60){ minute=minute-60;hour=hour+1;} if(hour>=24)hour=0;else second=second+20;printf("%02d:%02d:%02d",hour,minute,second);return 0;}

#include #include int main(){ inta,b,c;scanf("%d:%d:%d",&a,&b,&c);c=c+20;c=c%60;if(c

#include #include int main(){ inta,b,c;scanf("%d:%d:%d",&a,&b,&c);if(c>=40&&b!=59){c=c-40;b=b+1;} if(c>=40&&b==59&&a!=23){c=c-40;b=0;} if(c>=40&&b==59&&a==23){c=c-40;b=0;a=0;} else c=c+20;printf("%02d:%02d:%02d",a,b,c);return 0;}

第17篇:c语言

1.编写一程序P111.C实现以下功能

x(x只考虑整数int且必须定义为int、但F(x)完全可能超过int的表示范围)通过键盘输入(输入前给出提示Please input x:),然后计算并在屏幕上输出函数值。编程可用素材:printf("Please input x: ")、printf("nF(…)= …。

┌-5x+27(x

F(x)= ├ 7909(x=0)

└ 2x-1(x>0)

程序的运行效果应类似地如图1所示,图1中的3是从键盘输入的内容。

Please input x: 3

F(3)= 5

图1 程序运行效果示例

#include

int main(void){ int x1;double Fx1;

printf("Please input x: ");scanf("%d", &x1);

if(x1

Fx1 =-5.0 * x1 + 27;} else if(x1 == 0){

Fx1 = 7909;} else {

Fx1 = 2.0 * x1data2;} if(op == '*'){ sum =(double)data1 * data2;} if(op == '/'){ if(data2 == 0){

printf("error,chu shu wei 0/n");

} else {

sum = data1 / data2;

}

} if(op == '%'){ if(data2 == 0)

{

printf("nError!chu shu wei 0.n");} else {

sum = data1 % data2;} }

printf("n%d%c%d=%.0lfn", data1, op, data2, sum);return 1;4.编写一程序P124.C实现以下功能

从键盘读入两个字符cBegin和cEnd,要求输出≥cBegin且≤cEnd的所有字符。编程可用素材:printf("Please Input two char: ")、printf("nResult: ")。

程序的运行效果应类似地如图1所示,图1中的AM是从键盘输入的内容。

Please Input two char: AM

Result: ABCDEFGHIJKLM

图1 程序运行效果示例

#include

int main(void){ char cBegin, cEnd, ch;

printf("Please Input two char: ");scanf("%c%c", &cBegin, &cEnd);

printf("nResult: ");for(ch = cBegin;ch

printf("%c", ch);}

return 0;} 5.编写一程序P211.C实现以下功能

根据输入的n在屏幕上显示对应的以#组成的菱形图案。编程可用素材:printf("Please input n: ")。

程序的运行效果应类似地如图1和图2所示,图1中的1和图2中的5是从键盘输入的内容。

Please input n: 1 # ### #

图1 程序运行效果示例(n=1时)

Please input n: 5 # ### #####

##

####

##

##### ### #

图2 程序运行效果示例(n=5时)#include

int main(void){ int i, j, nn;

printf("Please input n: ");scanf("%d", &nn);

for(i = 1;i

for(j = i;j

{

printf(" ");

}

for(j = 1;j

{

printf("#");

} } printf("n");}

return 0;6.编写一程序P215.C实现以下功能

求S=1/1!+1/2!+1/3!+…+1/N!并输出结果(显示时小数部分占16位,计算时要求从第1项开始往后累加)。N为任意自然数(只考虑int型),从键盘读入。编程可用素材:printf("Please input n: ")、printf("nS=1/1!+1/2!+...+1/…!=…。

程序的运行效果应类似地如图1所示,图1中的18是从键盘输入的内容。

Please input n: 18

S=1/1!+1/2!+...+1/18!=1.7***0455

图1 程序运行效果示例

#include

int main(void){ int n1, i;double fac = 1, s1 = 0;

printf("Please input n: ");scanf("%d", &n1);

for(i = 1;i

fac = fac * i;

s1 = s1 + 1.0 / fac;} printf("nS=1/1!+1/2!+...+1/%d!=%.16f", n1, s1);

return 0;} 编写一程序P216.C实现以下功能

求任意的一个m×m矩阵的最大数及其所在的行列数,m(2

程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。Please input m: 5 Please input array: 1 45 67 235 464 35 6 89 32342 8 347 9346 47 95 746 46 785 436 19434 634 3235 567 24 8465 25

max=32342,i=1,j=3

图1 程序运行效果示例

#include

int main(void){ int a1[20][20], mm, i, j, maxi, maxj, max;

printf("Please input m: ");scanf("%d", &mm);printf("Please input array:n");

for(i = 0;i

for(j = 0;j

{

scanf("%d", &a1[i][j]);

} }

max = a1[0][0];maxi = 0;maxj = 0;

for(i = 0;i

for(j = 0;j

{

if(max

{

max = a1[i][j];

maxi = i;

maxj = j;

}

}

} } printf("nmax=%d,i=%d,j=%dn", max, maxi, maxj);return 0;编写一程序P217.C实现以下功能

求任意的一个m×m矩阵的对角线上元素之和,m(2

程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。

Please input m: 5 Please input array: 1 45 67 235 464 35 6 89 32342 8 347 9346 47 95 746 46 785 436 19434 634 3235 567 24 8465 25

sum=56339

图1 程序运行效果示例

#include

int main(void){ int aa[20][20], i, j, mm, sum = 0;

printf("Please input m: ");scanf("%d", &mm);

printf("Please input array:n");for(i = 0;i

for(j = 0;j

{

scanf("%d", &aa[i][j]);

} }

for(i = 0;i

}

} for(j = 0;j

从键盘读入一行字符(约定:字符数≤127字节),统计及输出其中的字母、数字、空格和其他符号的个数。编程可用素材:printf("Please input string: ")、printf("nzimu=…,shuzi=…,kongge=…,qita=…n"…。

程序的运行效果应类似地如图1所示,图1中的gfaskl45623cvsac,53dwafl faf32535是从键盘输入的内容。

Please input string: gfaskl45623cvsac,53dwafl faf32535

zimu=19,shuzi=12,kongge=1,qita=1

图1 程序运行效果示例

#include #include int main(void){ int i, zimu = 0, shuzi = 0, kongge = 0, qita = 0;char aa[128];

printf("nPlease input string:");gets(aa);

for(i = 0;aa[i];i++){

if(aa[i] >= 'a' && aa[i] = 'A' && aa[i]

{

zimu++;

}

else if(aa[i] >= '0' && aa[i]

{

shuzi++;

}

else if(aa[i] == ' ')

{

kongge++;

}

else

{

qita++;

} } printf("zimu=%d,shuzi=%d,kongge=%d,qita=%d", zimu, shuzi, kongge, qita);return 0;} 编写一程序P221.C实现以下功能

从键盘读入一个字符串(约定:字符数≤127字节),检查该字符串是否是回文。所谓回文即正向与反向的拼写都一样,例如:adgda。编程可用素材:printf("Please input string: ")、printf("n… shi hui wen."…、printf("n… bu shi hui wen."…。

程序的运行效果应类似地如图1和图2所示,图1中的asdfghjhgfdsa和图2中的asdfghjhgfdsaa是从键盘输入的内容。

Please input string: asdfghjhgfdsa

asdfghjhgfdsa shi hui wen.图1 程序运行效果示例(回文)Please input string: asdfghjhgfdsaa

asdfghjhgfdsaa bu shi hui wen.图2 程序运行效果示例(非回文)#include #include

int main(void){ char str[128];int i, j;

printf("Please input string: ");gets(str);for(i = 0, j = strlen(str)2 * hn;printf("nsn=%.6f,hn=%.6f", sn, hn);

return 0;} 编写一程序P225.C实现以下功能

从键盘读入一个整数Num,按从小到大的顺序依次输出所有满足条件的3位数:该数各位数字的立方和等于Num。编程可用素材:printf("Please Input a number: ")、printf("nResult: ")、printf("%5d"…、printf("not Find!n")。

程序的运行效果应类似地如图1和图2所示,图1中的251和图2中的300是从键盘输入的内容。

Please Input a number: 251

Result: 155 236 263 326 362 515 551 623 632 图1 程序运行效果示例(所有各位数字之立方和等于251的3位数)

Please Input a number: 300

Result: not Find!图2 程序运行效果示例(未找到各位数字之立方和等于300的3位数)#include

int main(void){

} int num, i, ge, shi, bai, flag;

printf("Please Input a number: ");scanf("%d", &num);

printf("nResult: ");flag = 0;for(i = 100;i

flag = 1;

printf("%5d", i);} } if(flag == 0){ printf("not Find!n");} return 0;编写一程序P228.C实现以下功能

从键盘读入两个整数iBegin和iCount,要求输出≥iBegin的iCount个整数。编程可用素材:printf("Please Input two number: ")、printf("nResult: ")、printf(" %d"…。

程序的运行效果应类似地如图1所示,图1中的301 7是从键盘输入的内容。

Please Input two number: 301 7

Result: 301 302 303 304 305 306 307

图1 程序运行效果示例

#include

int main(void){ int iBegin, iCount, i;

printf("Please Input two number: ");

} scanf("%d%d", &iBegin, &iCount);

printf("nResult: ");for(i = iBegin;i

求任意的一个m×m矩阵的第0行、第2行和最后一行所有数之和,m(4

程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。

Please input m: 5 Please input array: 1 45 67 235 464 35 6 89 32342 8 347 9346 47 95 746 46 785 436 19434 634 3235 567 24 8465 32225

Sum = 55909

图1 程序运行效果示例

#include

int main(void){ int i, j, aa[20][20], mm, sum = 0;

printf("Please input m: ");scanf("%d", &mm);

printf("Please input array:n");for(i = 0;i

for(j = 0;j

{

scanf("%d", &aa[i][j]);

}

} }

for(i = 0;i

if(i == 0 || i == 2 || i == mm1;i >=0;i--){

printf("%d ", num[i]);} 根据要求编写程序P243.C的指定部分:

程序P243.C已编写部分代码(单击此处下载),请根据程序中的要求完善程序(在指定的位臵添加代码或将__________换成代码)——注意,除指定位臵外,不能对程序中已有部分作任何修改或重新编写一个程序,否则作0分处理。

程序的功能是:从键盘分别读入5个数到arrA中、8个数至arrB中,然后分别调用自定义函数计算数组arrA和arrB各元素的平均值、再输出平均值。

程序的运行效果应类似地如图1所示,图1中的1 2 3 4 5和11 22 33 44 55 66 77 88是从键盘输入的内容。

请输入5个数:1 2 3 4 5 请输入8个数:11 22 33 44 55 66 77 88

Avg(arrA)= 3.0 Avg(arrB)= 49.5

图1 程序运行效果示例

#include

/* userCode(

printf("请输入5个数:");scanf("%d%d%d%d%d", &arrA[0], &arrA[1], &arrA[2], &arrA[3], &arrA[4]);printf("请输入8个数:");scanf("%d%d%d%d%d%d%d%d", &arrB[0], &arrB[1], &arrB[2], &arrB[3], &arrB[4], &arrB[5], &arrB[6], &arrB[7]);

avgA = pinjun(arrA, 5);/* userCode(

return 0;}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */ float pinjun(int arr1[], int n){ float pinjun;int i, sum = 0;

for(i = 0;i

sum = sum + arr1[i];

pinjun =(float)sum / n;} return pinjun;}

根据要求编写程序P244.C的指定部分:

程序P244.C已编写部分代码(单击此处下载),请根据程序中的要求完善程序(在指定的位臵添加代码或将__________换成代码)——注意,除指定位臵外,不能对程序中已有部分作任何修改或重新编写一个程序,否则作0分处理。

程序的功能是:从键盘分别读入5个数到arrA中、8个数至arrB中,再读入一个欲查找的数searchVal,然后分别调用自定义函数在数组arrA和arrB中查找searchVal所在位臵的下标(不考虑在数组中存在多个searchVal的情况)、输出查找结果。

程序的运行效果应类似地如图1所示,图1中的1 2 3 4

5、11 22 33 44 55 66 77 88和66是从键盘输入的内容。

请输入5个数:1 2 3 4 5 请输入8个数:11 22 33 44 55 66 77 88 请输入一个欲查找的数:66

arrA: not Find!arrB: position = 5

图1 程序运行效果示例

#include

/* userCode(

int main(void){ int arrA[5], arrB[8], searchVal, positionA, positionB;

printf("请输入5个数:");scanf("%d%d%d%d%d", &arrA[0], &arrA[1], &arrA[2], &arrA[3], &arrA[4]);printf("请输入8个数:");scanf("%d%d%d%d%d%d%d%d", &arrB[0], &arrB[1], &arrB[2], &arrB[3], &arrB[4], &arrB[5], &arrB[6], &arrB[7]);printf("请输入一个欲查找的数:");scanf("%d", &searchVal);

positionA = xiabiao(searchVal, arrA, 5);/* userCode(

printf("narrA: not Find!");} else {

printf("narrA: position = %d", positionA);}

positionB = xiabiao(searchVal, arrB, 8);/* userCode(

printf("narrB: not Find!n");

} } else { printf("narrB: position = %dn", positionB);} return 0;/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */ int xiabiao(int searchVal, int arr1[], int n){ int i, xiabiao =-1;

for(i = 0;i

if(searchVal == arr1[i])

{

xiabiao = i;

} }

return xiabiao;} 根据要求编写程序P245.C的指定部分:

程序P245.C已编写部分代码(单击此处下载),请根据程序中的要求完善程序(在指定的位臵添加代码或将__________换成代码)——注意,除指定位臵外,不能对程序中已有部分作任何修改或重新编写一个程序,否则作0分处理。

程序的功能是:从键盘分别读入5个数到arrA中、8个数至arrB中,然后分别调用自定义函数计算数组arrA和arrB各元素的最大值、再输出最大值。

程序的运行效果应类似地如图1所示,图1中的1 2 3 4 5和11 22 33 901 55 66 77 88是从键盘输入的内容。

请输入5个数:1 2 3 4 5 请输入8个数:11 22 33 901 55 66 77 88

Max(arrA)= 5 Max(arrB)= 901

图1 程序运行效果示例

#include

/* userCode(

int main(void){ int arrA[5], arrB[8], maxA, maxB;

printf("请输入5个数:");scanf("%d%d%d%d%d", &arrA[0], &arrA[1], &arrA[2], &arrA[3], &arrA[4]);printf("请输入8个数:");scanf("%d%d%d%d%d%d%d%d", &arrB[0], &arrB[1], &arrB[2], &arrB[3], &arrB[4], &arrB[5], &arrB[6], &arrB[7]);

maxA = getmax(arrA, 5);/* userCode(

return 0;}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */ int getmax(int arr[], int n){ int i;int max;

max = arr[0];for(i = 0;i

{

if(aa[i] > aa[i+1])

{

tmp = aa[i];

aa[i] = aa[i+1];

aa[i+1] = tmp;

}

} } } printf("nOutput:n");for(i = 0, cc = 0;i

printf("n");} else {

printf(",");} } return 0;编写一程序P703.C实现以下功能

已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与利润提成的关系如下(计量单位:元):

profit≤1000

没有提成; 1000<profit≤2000

提成10%; 2000<profit≤5000

提成15%; 5000<profit≤10000

提成20%; 10000<profit

提成25%。

请根据输入的利润计算员工的薪水。编程可用素材:printf("Input profit: ")、printf("nsalary=…n"…。

程序的运行效果应类似地如图1所示,图1中的2000是从键盘输入的内容。

Input profit: 2000

salary=700.00

图1 程序运行效果示例

#include

int main(void){

} double s1;int p1;

printf("Input profit: ");scanf("%d", &p1);

if(p1

return 0;编写一程序P709.C实现以下功能

输入一个华氏温度,要求输出摄氏温度,计算公式为c=5(F-32)/9。编程可用素材:printf("Input the degree: ")、printf("nF(…)=C(…)…。

程序的运行效果应类似地如图1所示,图1中的120是从键盘输入的内容。

Input the degree: 120

F(120.00)=C(48.89)

图1 程序运行效果示例

#include

int main(void){

} float c1, F1;printf("Input the degree: ");scanf("%f", &F1);c1 = 5 *(F132, ch2];}

nn = ia1)*(p1c1));printf("narea=%.2fn", area);}

return 0;编写一程序P727.C实现以下功能

输入两个整数,输出这两个整数的和。编程可用素材:printf("please input data: ")、printf("nResult: … +… =…。

程序的运行效果应类似地如图1所示,图1中的3 4是从键盘输入的内容。

please input data: 3 4

Result: 3 + 4 = 7

图1 程序运行效果示例

#include

int main(void){ int a1, b1, sum1;

printf("please input data: ");scanf("%d%d", &a1, &b1);

sum1 = a1 + b1;printf("nResult: %d + %d = %d", a1, b1, sum1);return 1;} 编写一程序P728.C实现以下功能

已知某产品单价是30,输入其数量是num,输出其总价。编程可用素材:printf("please input num: ")、printf("ntotal=…。

程序的运行效果应类似地如图1所示,图1中的8是从键盘输入的内容。

please input num: 8

total=240

图1 程序运行效果示例

#include

int main(void){ int a1, num1, sum1;

a1 = 30;

printf("please input num: ");scanf("%d", &num1);sum1 = a1 * num1;printf("ntotal=%d", sum1);return 1;} 编写一程序P729.C实现以下功能

输入x,y两个整数,输出其中较大的数。编程可用素材:printf("please input x,y: ")、printf("n… is biggern"…。

程序的运行效果应类似地如图1所示,图1中的7,8是从键盘输入的内容。

please input x,y: 7,8

8 is bigger

图1 程序运行效果示例

#include

int main(void){ int num1, num2;

printf("please input x, y: ");scanf("%d, %d", &num1, &num2);if(num1 > num2){

printf("n%d is biggern", num1);} else {

printf("n%d is biggern", num2);} return 1;} 编写一程序P730.C实现以下功能

输入两个整数,如果相等输出yes ,否则输出no。编程可用素材:printf("please input x y: ")、printf("nyes")、printf("nno")。

程序的运行效果应类似地如图1所示,图1中的5 6是从键盘输入的内容。

please input x y: 5 6 no

图1 程序运行效果示例

#include

int main(void){ int a1, b1;

printf("please input x y: ");scanf("%d%d", &a1, &b1);if(a1 == b1){

printf("nyes");} else {

printf("nno");} return 1;} 编写一程序P732.C实现以下功能

输入3行3列的矩阵,输出所有元素的累加和。编程可用素材:printf("Please input the 3x3 Matrix:n")、printf("nsum=…n"…。

程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。

Please input the 3x3 Matrix: 9 20 13 16 51 79 32 8 6

sum=234

图1 程序运行效果示例

#include

int main(void){ int a1[3][3], i, j, sum = 0;

printf("Please input the 3x3 Matrix:n");

for(i = 0;i

for(j = 0;j

{

scanf("%d", &a1[i][j]);

} }

for(i = 0;i

for(j = 0;j

{

sum = sum + a1[i][j];

} } printf("nsum=%dn", sum);

return 0;} 编写一程序P733.C实现以下功能

从键盘读入一个任意字符,输出该字符ASCII的十六进制值。编程可用素材:printf("Input a character: ")、printf("nAscii('…')= 0x…n"…。

程序的运行效果应类似地如图1所示,图1中的b是从键盘输入的内容。

Input a character: b

Ascii('b')= 0x62

图1 程序运行效果示例

#include

int main(void){ char ch;

} printf("Input a character: ");ch = getchar();printf("nAscii('%c')= 0x%xn", ch, ch);return 0;编写一程序P734.C实现以下功能

从键盘输入一个正方体的边长(整型),计算该正方体的体积和表面积。编程可用素材:printf("Input a side of cube: ")…、printf("nThe volume of cube is …, the surface area of cube is %d.n"…。

程序的运行效果应类似地如图1所示,图1中的5是从键盘输入的内容。

Input a side of cube: 5

The volume of cube is 125, the surface area of cube is 150.图1 程序运行效果示例

#include

int main(void){ int a1, v1, s1;

printf("Input a side of cube: ");scanf("%d", &a1);v1 = a1 * a1 *a1;s1 = 6 * a1 *a1;printf("nThe volume of cube is %d, the surface area of cube is %d.n", v1, s1);return 1;} 编写一程序P735.C实现以下功能

从键盘输入一个正三角形的边长(整型),计算该三角形的面积和周长。注:根据“海伦-秦九韶”公式,area=√p(p-a)(p-b)(p-c),其中p=(a+b+c)/

2、a,b,c为三角形的3条边长。

编程可用素材:printf("Input a side of triangle: ")、printf("nThe area of triangle is …, the circle of triangle is ….。

程序的运行效果应类似地如图1所示,图1中的5是从键盘输入的内容。

Input a side of triangle: 5

The area of triangle is 10.83, the circle of triangle is 15 #include #include

int main(void){ int a1;double pp, mianji;

printf("Input a side of triangle: ");scanf("%d", &a1);pp = 1.5 * a1;mianji = sqrt(pp *(ppa1)*(pp1;i >= 0;i--){

printf("%c", str[i]);} return 0;} 编写一程序P744.C实现以下功能

从键盘输入一个一百分制成绩,如果不在0~100范围内,则要求重新输入数据,直到输入的数据在0~100范围内。将输入的数据转换成等级„A‟,„B‟,„C‟,„D‟,„E‟。90分以上为„A‟,80~89分为„B‟,70~79分为„C‟,60~69分为„D‟,60分以下为„E‟,要求使用switch、case、default语句,结果赋值给变量grade,并将变量grade的值输出到屏幕上。

注意:变量数据类型的选择应适当,在保证满足设计要求精度的情况下,养成不浪费内存空间和计算时间的好习惯。编程可用素材:printf("please input the score(0-100): ")、printf("nscore=…,grade=…。

程序的运行效果应类似地如图1所示,图1中的103和55.3是从键盘输入的内容。

please input the score(0-100): 103 please input the score(0-100): 55.3

score=55.3,grade=E

图1 程序运行效果示例

#include

int main(void){ float s1;char g1;

do {

printf("please input the score(0-100): ");

scanf("%f", &s1);} while(s1 100);

switch((int)s1 / 10){

case 10:

case 9:

g1 = 'A';

break;

case 8:

g1 = 'B';

break;

case 7:

g1 = 'C';

break;

case 6:

g1 = 'D';

break;

default:

g1 = 'E';} printf("nscore=%.1f,grade=%cn", s1, g1);

return 0;} 编写一程序P745.C实现以下功能

输入两个正整数m和n,求其最大公约数和最小公倍数。注:最大公约数也称最大公因子,指某几个整数共有因子中最大的一个;两个整数公有的倍数称为它们的公倍数,其中最小的一个正整数称为它们两个的最小公倍数。编程可用素材:printf("please input two integer numbers: ")、printf("nthe greatest common divisor is …、printf("nthe least common multiple is …。

程序的运行效果应类似地如图1所示,图1中的35 15是从键盘输入的内容。please input two integer numbers: 35 15

the greatest common divisor is 5 the least common multiple is 105

图1 程序运行效果示例

#include

int main(void){ int m1, n1, tmp, i, gbs;

printf("please input two integer numbers: ");scanf("%d%d", &m1, &n1);

if(m1 > n1){

tmp = m1;

m1 = n1;

n1 = tmp;}

for(i = m1;i >= 0;i--){

if(m1 % i == 0 && n1 % i == 0)

{

printf("nthe greatest common divisor is %d", i);

break;

} }

for(i = n1;i

if(i % m1 == 0 && i % n1 == 0)

{

gbs = i;

printf("nthe least common multiple is %d", gbs);

break;

} }

return 0;}

第18篇:C语言

第1章 C语言程序设计初步

本章是C语言程序设计的入门部分, 从整体上介绍C语言的起源和发展,讲述C语言的特点、结构和基础语法要点。

1.1 C语言概述

1.1.1 C语言的发展

C语言是界上广泛流行的的程序设计语言之一,它适合于作系统描述语言,即用来写系统软件,也可以用来写应用软件。

早期的操作系统等系统软件主要是用汇编语言编写的(包括UNIX操作系统在内)。但是汇编语言存在明显的缺点,即可读性和可移植性都比较差,为了提高可读性和可移植性,最好改用高级语言,但是一般高级语言难以实现汇编语言的某些功能(汇编语言可以直接对硬件进行操作,例如对内存地址的操作、位操作等)。人们希望能找到一种既具有一般高级语言特性,又具有低级语言底层操作能力的语言,集它们的优点于一身,于是C语言在70年代初应运而生了。1978年由美国电话电报公司(AT&T)的贝尔实验室正式发表了C语言,同时由B.W.Kernighan和D.M.Ritchit合著了影响深远的“THE C PROGRAMMING LANGUAGE”一书,通常简称为《K&R》,也有人称之为《K&R》标准。但是,在《K&R》中并没有定义一个完整的标准C语言,许多开发机构推出了自己的C语言版本,这些版本之间的微小差别不时引起兼容性上的问题,后来由美国国家标准学会ANSI(American National Standard Institute)在各种C语言版本的基础上制定了一个C 语言标准,于1983年发表。通常称之为ANSI C。1987年ANSI又公布了新标准——87 ANSI C。目前广泛流行的各种C编译系统都是以它为基础的。

早期的C语言主要是用于UNIX系统,由于C语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C语言开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用,成为当代最优秀的程序设计语言之一。

在C的基础上,1983年又由贝尔实验室的Bjarne Strou-strup推出了C++。C++进一步扩充和完善了C语言,成为一种面向 对象的程序设计语言。C++提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。但是,C是C++的基础,C++语言和C语言在很多方面是兼容的。因此,掌握了C语言,再进一步学习C++就能以一种熟悉的语法来学习面向对象的语言,从而达到事半功倍的目的。

目前最流行的C语言有以下几种: ·Microsoft C 或称 MS C ·Borland Turbo C 或称 Turbo C

1 ·AT&T C 这些C语言版本不仅实现了ANSI C标准,而且在此基础上各自作了一些扩充,使之更加方便、完美。这些不同版本C语言之间有一定的差别,但对初学者来说,不必过多理会他们的差别,重在理解C语言的特点和编程方法。本书的叙述以TURBO C为准。

1.1.2 C语言的特点

C语言是一种通用、灵活、结构化、标准化、使用广泛的编程语言,能完成用户的各种任务,特别适合进行系统程序设计和对硬件进行操作的场合。C语言本身不对程序员施加过多限制,是一种专业程序员优先选择的语言。它有如下主要特点:

1.C语言简洁紧凑,压缩了一切不必要的成分。ANSI C有32个关键字,TURBO C有58个关键字,9种控制语句,书写形式自由。

2.C语言运算丰富,将括号、赋值、强制类型转换、取变量地址等都以运算实现。ANSI C提供34种运算符,TURBO C提供了44种运算符,灵活使用这些运算符可以实现其它高级语言难以实现的操作。C语言的表达式简练、多样、灵活、实用,加上分号可以构成语句。

3.C语言数据类型丰富,具有现代语言的各种数据类型,用户还能扩充它,实现各种复杂的数据结构,完成各种问题的数据描述。尤其是C语言的指针类型,非常有特色,可指向各种数据,完成数据的高效处理。C语言不但对数据作类型上的描述,还提供存储属性考虑。

4.C语言是一种结构化程序设计语言,层次清晰,便于按模块化方式组织程序,易于调试和维护。C程序由若干程序文件组成,一个程序文件由若干函数构成。

5.C语言可以直接访问物理地址,进行位(bit)一级的操作,能实现汇编语言的大部分功能。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体的表现能力和处理能力极强,有时也被称作中级语言。6.C语言提供了预处理机制,有利于大型程序的编写和调试。

7.C语言生成的目标代码质量很高,程序执行效率很高。一般只比汇编程序生成的目标代码效率低10~20%。

8.用C语言写的程序可移植性好(与汇编语言比)。基本上不作修改就可以用于各种型号的计算机和各种操作系统。

9.C语言语法限制不太严格,程序员设计自由度较大。例如,对数组下标越界不做检查,由程序员自己保证程序的正确。一般的高级语言语法检查比较严,能检查出几乎所有的语法错误,而C语言允许程序员有较大的自由度,因此放宽了语法检查。限制与灵活是一对矛盾,限制严格,就失去灵活性;而强调灵活,就必然放松限制。一个不熟练的人员,编一个正确的C程序可能会比编一个其它高级语言程序难一些。也就是说,对用C语言的人,要求对程序设计更熟练一些。

1.2 基本语法成分

本节介绍C语言的字符集、关键字、标识符、运算符、分隔符和注释符等基本语法成分。

2 1.2.1 C语言的字符集

字符是组成语言的最基本的元素。C语言字符集由字母,数字,空格,标点和特殊字符组成。在字符串常量和注释中还可以使用汉字或其它可表示的图形符号。

1.字母

小写字母a~z共26个,大写字母A~Z共26个。2.数字

0~9共10个

3.空白符 空格符、制表符、换行符等统称为空白符。空白符只在字符常量和字符串常量中起作用。在其它地方出现时,只起间隔作用,编译程序对它们忽略。因此在程序中使用空白符与否,对程序的编译不发生影响,但在程序中适当的地方使用空白符将增加程序的清晰性和可读性。

4.标点和特殊字符 主要有!# % ^ & +-* / = ~ |., :;? ’ ”(){ } [ ] 等等。

由字符集中的字符可以构成C语言进一步的语法成分,如标识符、关键字、特殊的运算符等。

1.2.2 标识符

在程序中使用的变量名、函数名、标号等统称为标识符,用来标识各种程序成分。除库函数的函数名由系统定义外,其余都由用户自定义。C语言规定,标识符只能是由字母(A~Z,a~z)、数字(0~9)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。

以下标识符是合法的:

a , x , x3 , BOOK1 ,sum5 , num_1 以下标识符是非法的: 3s 以数字开头 s*T 出现非法字符*-3x 以减号开头

bowy-1 出现非法字符-(减号)在使用标识符时还必须注意以下几点:

(1)标准C不限制标识符的长度,但它受各种版本的C 语言编译系统限制,同时也受到具体机器的限制。例如在某版本C 中规定标识符前八位有效,当两个标识符前八位相同时,则被认为是同一个标识符。TURBO C中标识符最大长度为32个字符。

(2)在标识符中,大小写是有区别的。例如BOOK和book 是两个不同的标识符。习惯上符号常量用大写字母表示,而变量名等用小写字母表示。

(3)标识符虽然可由程序员随意定义,但不能与关键字同名,也不能与系统预先定义的标准标识符(如标准函数)同名。标识符是用于标识某个量的符号,因此,命名应尽量有相应的意义,以便阅读理解,做到“见名知义”。

1.2.3 关键字

关键字是由C语言规定的具有特定意义的字符串,通常也称为保留字。如类型说明符int,double等;语句特征if、switch、while等;预处理命令include、define等。关键字是构成C语言的语法基础,用户定义的标识符不应与关键字相同,也不能对关键字进行重新定义。

3 常见的关键字参见附录1。

1.2.4运算符

C语言中含有相当丰富的运算符。运算符与变量、函数一起组成表达式,表示各种运算功能。运算符由一个或多个字符组成。根据参加运算对象的个数,运算符可分为单目运算符、双目运算符和三目运算符。

C语言中的运算符都由特定的意义和格式,这些将在后续章节中详述,并请读者参考附录3。

1.2.5 分隔符

C语言中的分隔符有逗号和空格两种,逗号主要用在类型说明和函数参数表中,分隔各个变量。空格多用于语句各单词之间,作间隔符。在关键字、标识符之间必须要有一个以上的空格符作间隔,否则将会出现语法错误。例如把“int a;”,写成“ inta;”,C编译器会把“inta”当成一个标识符处理,其结果必然出错。

1.2.6 注释符

注释符是以“/*”开头并以“*/”结尾的串。在“/*”和“*/”之间的即为注释。程序编译时,不对注释作任何处理。注释可出现在程序中的任何位置。注释用来向用户提示或解释程序的意义。在调试程序时对暂不使用的语句也可用注释符括起来,使编译跳过不作处理,待调试结束后再去掉注释符。

1.3 C程序结构

为了说明C语言源程序结构的特点,先看以下几个程序。这几个程序由简到难,表现了C语言源程序在组成结构上的特点。虽然有关内容还未介绍,但可从这些例子中了解到组成一个C源程序的基本部分和书写格式。

【例1-1】 main(){ printf("Hello world!n");} main是主函数的函数名,表示这是一个主函数。每一个C源程序都必须有,并且只能有一个主函数(main函数),这是整个C程序运行的入口点。printf是C语言中的输出函数(详见第4章),是一个由系统定义的标准函数,可在程序中直接调用,它的功能是把要输出的内容送到显示器去显示。双引号内字符串原样输出,“n”是回车换行符。

【例1-2】

/* 例1-2,求两数的和。*/ main(){ int a,b,sum;/* 这是定义变量*/ a=12;b=34;sum=a+b;

4 printf("sum is %dn",sum);} 本程序的作用是求两个整数a和b之和。/*„„*/表示注释部分,为便于理解,这儿用汉字表示注释,当然也可以用英语或汉语拼音作注释。注释只是用来向用户提示或解释程序的意义,对程序编译不起任何作用。注释可出现在程序中的任何位置。程序第三行是变量说明部分,说明a和b是整型(int)变量。第四行是两个赋值语句,使a和b的值分别为12和34。第五行使sum的值为a+b。第六行中“%d”是输入输出的格式字符串,用来指定输入输出时的数据类型和格式(详见第四章),“%d”表示十进制整数类型。在执行输出时此位置上代以一个十进制整数值。printf函数中括号内最右端sum是要输出的变量,现在它的值为46(即12+34=46),因此输出一行信息为:

sum is 46

【例1-3】

/* 例1-3 此函数的功能是输入两个整数,输出其中的大数。*/ #include “stdio.h”

int max(int a,int b);/*函数说明*/ main()/*主函数*/ { int x,y,z;/*变量说明*/ printf("input two numbers:n");scanf("%d%d",&x,&y);/*输入x,y值*/ z=max(x,y);/*调用max函数*/ printf("maxmum=%d",z);/*输出*/ } int max(int a,int b)/*定义max函数*/ { if(a>b)return a;else return b;} 上面程序的功能是由用户输入两个整数,程序执行后输出其中较大的数。本程序由两个函数组成,主函数和max 函数,两者之间是并列关系。max 函数是一个用户自定义函数, 要先给出说明(程序第二行),它的功能是比较两个数,然后把较大的数返回。程序的执行过程是,首先在屏幕上显示提示字符串,请用户输入两个数,回车后由scanf函数语句接收这两个数送入变量x,y中,然后调用max函数,并把x,y 的值传送给max函数的参数a,b。在max函数中比较a,b的大小,把大者返回给主函数的变量z,最后在屏幕上输出z的值。有关函数、参数等的概念以后章节会详细讲述,这儿只想使读者有个初步印象。

5 程序第二行以#开头的称为预处理命令(详见第9章)。预处理命令还有其它几种,这里的include 称为文件包含命令,其意义是把尖括号或双引号""内指定的文件包含到本源程序文件中来,成为本程序的一部分。被包含的文件通常是由系统提供的,其扩展名为.h。因此也称为头文件或首部文件。C语言系统提供的头文件中包括了各个标准库函数的函数原型,因此,凡是在程序中调用一个库函数时,都必须包含该函数原型所在的头文件。在本例中,使用了两个库函数:格式化输入函数scanf和格式化输出函数printf,其头文件为stdio.h,因此在程序的主函数前用include命令包含了它。

需要说明的是,C语言规定对scanf和printf这两个函数可以省去对其头文件的包含命令。所以在本例中也可以删去第二行的包含命令#include。同样,在例1-1和例1-2中使用了printf函数,也省略了包含命令。

通过以上几个例子,我们可以看到C源程序的结构特点:

1.一个C语言源程序可以由一个或多个源文件组成,每个源文件以“.c”作为扩展名。 2.每个源文件可由一个或多个函数组成。

3.一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数,整个程序的运行从主函数开始。

4.源程序中可以有预处理命令(include 命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。

5.每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。

6.标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。

书写程序时应遵循的规则

从书写清晰、便于阅读、理解和维护的角度出发,在书写程序时 应遵循以下规则: 1.一个说明或一个语句占一行。

2.用{} 括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。

3.低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。在编程时应力求遵循这些规则,以养成良好的编程风格。

1.4 C语言的编辑、编译和运行

6 C程序在计算机上的实现与其它高级语言一样,一般要经过编辑、编译、连接、运行四个步骤,如图1-1所示。

1.编辑

编辑就是建立、修改C语言源程序并把它输入计算机的过程。C语言的源文件以文本文件的形式存储在磁盘上,它的后缀名为.C。

源文件的编辑可以用任何文字处理软件完成,一般用编译器本身集成的编辑器进行编辑。

2.编译

C语言是以编译方式实现的高级语言,C程序的实现必须经过编译程序对源文件进行编译,生成目标代码文件,它的后缀名为.obj。

编译前一般先要进行预处理,譬如进行宏代换、包含其它文件等等。

编译过程主要进行词法分析和语法分析,如果源文件中出现错误,编译器一般会指出错误的种类和位置,此时要回到编辑步骤修改源文件,然后再进行编译。

3.连接

编译形成的目标代码还不能在计算机上直接运行,必须将其与库文件进行连接处理,这个过程由连接程序自动进行,连接后生成可执行文件,它的后缀名为.exe。

如果连接出错同样需要返回到编辑步骤修改源程序,直至正确为止。4.运行

一个C源程序经过编译、连接后生成了可执行文件。要运行这个程序文件,可通过编译系统下的运行功能,也可以在DOS系统的命令行输入文件名后再按“Enter”确定,或者在Window系统上双击该文件名。

程序运行后,可以根据运行结果判断程序是否还存在其它方面的错误。编译时产生的错误属于语法错误,而运行时出现的错误一般是逻辑错误。出现逻辑错误时需要修改原有算法,重新进行编辑、编译和连接,再运行程序。

本章小结

C语言已有较长的发展历史,目前,ANSI 标准 C具有基础性地位。

C语言是一种高级语言,它可读性强,层次清晰,便于按模块化方式组织程序,易于调试和维护。同时,C语言的数据类型丰富而有特色,能实现各种复杂的数据结构,完成各种问题的数据描述。除了这些作为高级语言的优点外,C语言可以直接访问物理地址,7 进行位(bit)一级的操作,能实现汇编语言的大部分功能。因此,C语言集高级语言和低级语言的优点于一身,有时也被称作中级语言。

C语言源程序的书写规范非常重要,主要包括大小写习惯、语句的结束符号、层次与缩进、合理使用注释等等。这些规范有的是强制执行,不这样做就会导致编译错误。另外有一些是经验总结,使程序易于理解和调试,我们应一开始就养成自觉遵守书写规范的好习惯。

本章还介绍了C语言的结构特征、主函数的作用及位置无关性(最先执行)、函数的分类及库函数、头文件及预处理、标识符的构成规则等基础知识。在等级考试中,这些内容经常出现在选择题中,尤其是标识符的构成规则、主函数的特性等。

习题

1.简述C语言的主要特点。 2.简述标识符的构成规则。

3.简述注释在C语言中的作用及书写方法。 4.简述C程序的实现步骤。

5.下列选项中,可以作为C语言标识符的是()

A、3stu B、#stu C、stu3 Dstu.3 6.下列选项中,不可以作为C语言标识符的是()

A、num B、turbo_c C、printf D、student3、

第19篇:c语言

第一次大作业

作业题目:

第一题:编写一个程序,要求实现以下功能:输入单价和数量,求出货物的金额。货物可能会有折扣,如有折扣,请计算折后金额。要求程序人机界面友好,操作使用方便。

提示:人机界面友好是指软件应包括软件作者、开发日期、版本号等,并且输出信息清晰,一目了然;程序可通过按任意键退出程序,否则程序保持输出界面。按任意键可通过调用库函数getch()实现。

第二题:自拟C程序设计题目一个,写出程序并调试通过。程序越长越复杂越好,至少10条语句以上。

作业要求:

1.作业必须以设计报告的形式上交。设计报告应包括以下几个部分:题目、编写思路说明、C源程序清单、程序调试过程与分析(若干屏幕拷贝图片反映调试修改过程)、运行结果(屏幕拷贝运行结果)、编写调试心得、参考文献。

2.设计报告页面一律设置为A4纸,文字大小为5号宋体(当前文本就是5号),行间距为22磅(当前文本的行间距离就是)。要求文字流畅,段落清晰。

3.设计报告应有封面,封面包括:第几次大作业、专业班级、学号、姓名,宋体,字号自定,形式美观整齐。

4.不能相互抄袭。发现作业雷同者,当次作业成绩均按不超过及格处理。

5.作业提交时间:9月29日。请学委以班级为单位,将各同学的电子文档打包成一个文件统一发送或拷贝给我。每位同学的设计报告请以“姓名_x.doc”或者“姓名_x.pdf”的文件名提交,其中x表示第几次作业。逾期作自动放弃处理.

幼儿园语言主题教案及反思多篇

语言小雨点教案(共8篇)

生命安全教育教案(共十三篇)

蒲公英语言教案

语言反义词教案

本文标题: c语言教案模板(共19篇)
链接地址:https://www.dawendou.com/jiaoxue/jiaoan/8277.html

版权声明:
1.大文斗范文网的资料来自互联网以及用户的投稿,用于非商业性学习目的免费阅览。
2.《c语言教案模板(共19篇)》一文的著作权归原作者所有,仅供学习参考,转载或引用时请保留版权信息。
3.如果本网所转载内容不慎侵犯了您的权益,请联系我们,我们将会及时删除。

重点推荐栏目

关于大文斗范文网 | 在线投稿 | 网站声明 | 联系我们 | 网站帮助 | 投诉与建议 | 人才招聘 | 网站大事记
Copyright © 2004-2025 dawendou.com Inc. All Rights Reserved.大文斗范文网 版权所有