1、编程解决问题之程序设计语言(c 语言) 张海峰 孙然 课程内容介绍: 本课程主要是介绍如何利用 c 程序设计语言,编写程序,解决实际问题。目的是提高学生利用计算机快速、高效、智能地解决问题的能力,培养学生解决实际问题的综合素养。该书既可以作为信息技术课程内容的补充,也可以作为编程爱好者的自学用书,还可以作为信息学奥赛的辅导用书。本书内容共分十章和一个附录,前八章是学习的重点,后几章是对学有余力的同学的知识的扩充,教师授课时或者学生自学时,使用者可以酌情处理。1目 录: 第一章 初识编程 .31.1、为什么要编程 .31.2、一个简单的 c 语言程序 .31.3、程序的编制 .4上机实践 .5第
2、二章 顺序结构程序设计 .52.1、变量定义 .62.2、赋值操作 .62.3、输出语句 .72.4、输入语句 .72.5、应用实例 .8上机实践 .9第三章 分支控制语句 if 语句 .93.1、关系运算符及其优先级 .103.2、if 语句的语法 .103.3 if 语句应用实例 .11上机实践 .12第四章 分支控制语句 switch 语句 .134.1、switch()语句语法 .134.2 switch()应用实例 .14上机实践 .16第五章 循环控制语句 1for 语句 .165.1、for 语句语法 .165.2 for 循环的应用 .17上机实践: .20第六章 循环控制语句
3、 2while 语句 .206.1、while 语句语法 .206.2、应用实例 .21上机实践: .22第七章 数组的定义与引用 .227.1、数组的定义 .237.2、数组的应用 .23上机实践: .26第八章 函数的定义与使用 .268.1、函数的定义 .268.2、函数的引用 .27上机实践: .29第九章* 字符串处理 .3029.1 字符串处理 .309.2、应用实例 .31第十章* 文件读写操作 .3310.1、文件读写操作的一般格式 .3310.2、实例应用 .33附录* 综合实例 学生成绩查询系统 .341、程序的功能: .342、使用说明: .343、程序代码 .364、思
4、考问题: .395、程序的功能扩展: .39参考书目 .393第一章 初识编程 1.1、为什么要编程在信息技术教材(上交、必修本)中,我们曾经了解到计算机具有强大的功能,利用软件,计算机可以高效地解决各种问题。不过,有的软件已经存在了,有的可能还没有,对于后者这种情况,我们就需要自己动手编写程序,制作软件。这就是我们信息技术教材上所提到的“自己编制计算机程序,让计算机为自己服务” 。1.2、一个简单的 c 语言程序要编程,我们先要学习一种程序设计语言,比如 c 语言、basic 语言、pascal 语言等,了解其语法规范、程序结构以及如何利用相应的编译软件生成程序这一系列的过程。下面,我们先来
5、看一个简单 c 程序语言的实例,了解程序的一般结构组成和 c 语言的简单的语法规范。这段程序的功能是:根据输入的半径 r,计算圆的周长 c 和面积 s。C 语言程序代码如下:a) #include b) #include c) main()d) float r, p, c,s; e) p=3.14; f) printf(“intput R:n“);g) scanf(“%f“,h) c=2*p*r; i) s=p*r*r; j) printf(“c=%f,s=%fn“,c,s); k) system(“pause”);l) 程序解读:按照语句的功能,程序可以解读如下:1)语句 a、b、c、k、l
6、 构成了程序的基本框架,为程序的顺利执行提供必要的功能准备。4 stdio.h 和 stdlib.h 称为库文件,里边包含了程序所需的一些函数命令。输出命令 printf()、输入命令 scanf()包含在 stdio.h 文件库中;屏幕停留命令system(“pause”)包含在 stdlib.h 文件库中,它使输出屏幕短暂停留,方便查看输出结果。 main()是程序主体,每个程序只能有一个主函数。问题求解过程就放在大括号内。2)语句 d、e、f、g、h 、i、j 是问题的处理过程。用程序解决问题可以分为如下四个阶段: 定义变量:语句 d 定义四个变量,分别存储程序运行中的半径 r、周长c
7、和面积 s 四个变量数据。程序中所用到的数据(包括临时数据 ),必须事先定义变量,且先定义后使用。 数据输入:语句 f 是提示用户输入,语句 g 是获得用户的输入数据。 数据处理:语句 e 是给 的变量 p 赋初识值,语句 h、i 利用公式计算周长和面积。 数据输出:语句 j 是将计算结果输出到屏幕上。1.3、程序的编制在对程序有了一个简单的认识后,我们再来了解一下如何通过编译软件将这段代码生成在我们计算机系统中可以直接运行的可执行程序。在此,我们介绍实例程序在全国信息学奥赛中指定的 c 语言编译环境(该软件可以直接从官方网站下载)中编制的过程。步骤 1:打开 dev c 软件,窗口组成如下:
8、5步骤 2:在编辑区,书写程序代码,注意字符区分大小写,每条语句以英文“;”结尾。步骤 3:点编译按钮调试程序。如果在代码中出现错误,调试区会有出错提示,及时修正,再次编译调试,直至成功。编译过程中会生成可执行程序。步骤 4:点击运行按钮,运行可执行程序。 (调试和运行也可以一次点击编译运行按钮完成)通过以上的过程,我们就制作了一个软件。以上,是我们对编程过程的一个简单认识,随着我们对编程语言学习的深入,我们会对编程有一个更深入和更全面的了解,进而掌握这种解决问题的方法,提高我们解决问题的效率和能力。上机实践在 dev c 软件中调试运行示例程序。第二章 顺序结构程序设计程序从控制流程的角度来
9、看,可以分为三种基本结构:顺序结构、分支结构和循环结构,其它复杂程序都可以用这三种结构实现。上一章,我们所接触的实例程序就是工程管理区编译按钮运行按钮编译运行按钮编辑区调试区菜单栏常用工具栏6一个典型的顺序结构的程序。对编程语言的学习,我们就先从顺序结构开始。2.1、变量定义在程序中,如果涉及到了数据处理,就需要事先定义变量,确定数据的类型和所需存储空间的大小。在 c 语言中,有如下几种数据变量的定义形式,它们也被称为 c 语言的基本数据类型。2.1.1、基本数据类型基本数据类型表示的数据范围变量定义标识符变量定义示例输入输出格式标识符变量的可能取值整型 -3276832767 int int
10、 a,b, %d -100,10000实数 -10381038 float float a1 %f 1.2934 .双精度 -1030810308 double double d2 %lf 10100 .字符型 单个字符 char char ch %c A,2,*其它数据类型:short int ,long int ,unsigned int, string2.1.2、运算符C 语言包括了“+ (加) 、(减) 、*(乘) 、/ (除) 、% (取余) 、自加 1(+ ) 、自减 1(-) ”等多种运算符,可以实现相关运算操作。此处,需要注意,如果两个运算数 a、b 都是整数(int 类型)
11、,/ 是指整除,% 是指取余数。示例:int a,b,c;a=6;b=4;a+;/a 的值自加 1,变成 7,b-;/b 的值自减 1 变为 3;c=a/b;/此处为整除, c 的结果为 2c=a%b; /此处为取余数, c 的结果为 1此示例,同学们可以加入输出语句,验证运算的结果。2.2、赋值操作赋值就是将数值赋值给相应的变量,操作由“=”完成。示例 1: 示例 2: char ch1,ch2;ch1=a;ch2=Aint a,b;a=8;b=10000;72.3、输出语句C 语言经常用到的一条输出语句是 printf()语句,其又被称为格式化输出函数,即可以按照规定的格式输出内容。具体语
12、法如下:printf(“格式控制字符串” ,输出表列 )其中格式控制字符串中包含以%开头的格式字符,和以非% 开头的原样输出字符两种。以% 开头的格式字符是输出列表中的各变量依次对应的格式字符,如%d 、%c 等。示例 1:printf(“Hello c world!n”);功能:在屏幕上直接输出“Hello c world!”, “n”表示内容输出后,输出光标换到下一行。示例 2:int a=48;char b=A;printf(“变量 a 的内容为 %d,变量 c 的内容为%c!”,a,b) ;功能:在屏幕上输出“变量 a 的内容为 48,变量 c 的内容为 A!”,%d 用变量 a 的内
13、容 48 替换,%c 用变量 b 的内容 A 替换。此处,格式字符必须与输出列表的数据类型相对应,否则,输出内容可能不会是预期结果,甚至可能是错的。示例 3:int a=50;float d=3.14;printf(“a=%f,d=%dn“,a,d);输出的可能结果是:“a=2680,d=1074339512” ,也有可能是其它结果,不过都不正确。另外,格式字符串中也可以加入加入相应的整数,来控制变量输出的位置。示例 4:int a=50;float d=3.14;printf(“a=%8d,d=%6.3fn“,a,d);输出结果为:2.4、输入语句C 语言中的常用输出语句是 scanf()语
14、句,其被被称为格式输入函数,即可以按用户指定的格式从键盘上把输入数据读入到指定的变量中。scanf 函数的一般形式为:8scanf(“格式控制字符串” ,地址表列);其中,格式控制字符串的作用与 printf 函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。地址表列中给出各变量的地址,即变量名前加取地址符“printf(“input a,b,cn“);scanf(“%d%d%d“,printf(“a=%d,b=%d,c=%d“,a,b,c);在 scanf()语句中,如果变量是整型,或者是实型时,屏幕输入的数据间用空格隔开;如果是字符型,要注意,输入时空格和换行也被看作是一个字符。
15、这两条,初学者要注意。2.5、应用实例实例 2.1: “welcom to C world!”#include #include main()printf(“Welcom to C world!n”);system(“pause”);实例 2.2、用给定的字符在屏幕上输出三角形#include ;#include ;main()char ch; printf(“intput a char:n“); scanf(“%c“, printf(“%20cn“,ch); printf(“%17c%6cn“,ch,ch);/ printf(“%14c%12cn“,ch,ch);printf(“%11c%3
16、c%3c%3c%3c%3c%3c n“,ch,ch,ch,ch,ch,ch,ch);system(“pause”);9实例 2.3、输入四个整数(-50005000)计算他们的和#include “stdio.h“#include main()int a,b,c,d,s;printf(“please input 4 number:n“);scanf(“%d%d%d%d“,s=a+b+c+d;printf(“sum=a+b+c+d=%dn“,s);system(“pause”);实例 2.4、已知圆的半径,编程求解圆的周长和面积。#include ;#include ;main()float r,c,s,p; p=3.14; printf(“intput R:n“); scanf(“%f“,/ c=2*p*r; s=p*r*r; printf(“c=%f,s=%fn“,c,s); system(“pause”);知识扩展:本章的相关内容,可以参考参考书目 1 中的第三、四章,在这些章节中关于各变量、运算有更深入的描述,另外还有其它的一些输入输出语句的介绍。同学们,可以深入阅读,加深认识和理解。上机实践练习实例 2.1-2.4。