2022年《程序设计基础》实验指导书 .pdf
程序设计基础 (C 语言) 实验指导书名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 35 页 - - - - - - - - - I 程序设计基础 (C 语言) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 35 页 - - - - - - - - - II 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 35 页 - - - - - - - - - III 目录第 1 章概述 . 1 1.1 课程简介 . 1 1.2 实验环境选择 . 1 第 2 章实验要求 . 1 2.1 实验过程要求 . 1 2.2 考核及评分标准 . 2 第 3 章实验内容 . 2 3.1 实验 1 熟悉 C语言运行环境 . 2 3.2 实验 2 数据类型 . 5 3.3 实验 3 运算符和表达式 . 8 3.4 实验 4 顺序结构及输入和输出. 13 3.5 实验 5 选择结构 . 16 3.6 实验 6 循环结构 . 19 3.7 实验 7 数组(1) . 23 3.8 实验 8 数组(2) . 25 3.9 实验 9 字符串及其操作 . 26 3.10 实验 10 函数 . 27 3.11 实验 11 结构体 . 29 3.12 实验 12 指针 . 30 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 35 页 - - - - - - - - - IV 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 35 页 - - - - - - - - - 1 第 1 章概述1.1 课程简介程序设计基础 (C 语言)是软件工程各专业或其它相近专业学生的公共职业基础课,是软件类各专业的入门课程,直接影响学生后继职业技术课程的学习及可持续发展能力的培养。通过本书,学习基本的程序设计概念和程序设计方法,学会使用C 语言解决实际问题,进行初级的程序设计。1.2 实验环境选择VC+6.0 第 2 章实验要求2.1 实验过程要求本课程中,实验者必须服从指导教师和实验室工作人员的安排,遵守纪律与实验制度,爱护设备及卫生。在指定的实验时间内,必须到机房内实验,其余时间可自行设计和分析。本课程所涉及的程序代码,都要求有较高的可读性和效率,多文件表示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 35 页 - - - - - - - - - 2 2.2 考核及评分标准若实验者在指定上机时间三次不到课,取消考核资格。请假,必须提前出具正式假条,不接受事后假条。如果发现抄袭、篡改、伪造实验数据,或实验报告和设计报告雷同,涉及的所有学生的该课程成绩计为0 分。本课程采用结构化评分,主要由指导教师灵活处理,可以是考勤等。第 3 章实验内容3.1 实验 1 熟悉 C语言运行环境一、 实验目的1. 了解什么是 C 语言2. 熟悉 C 语言程序开发环境二、 实验内容和步骤1. 大学生涯的第一个程序1) 运行 Microsoft Visual Studio 2008 或者 VC6.0 2) 创建项目,选择win32 控制台应用程序或者名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 35 页 - - - - - - - - - 3 空项目,项目名为MyFirstApp 3) 新 建 项 目 , 选 择 C+ 源 文 件 , 文 件 名 为HelloWorld 4) 在程序编辑窗口,输入如下代码#include /* 主程序*/ void main() printf(hello worldn); 5) 执行程序, Ctrl+F5 6) 观察输出结果,并记录2. 修改程序1) 增加语句,观察输出结果是否不同printf(hello worldn); printf(world is men); 2) 删除输出字符串中的 “n” , 观察输出结果是否不同printf(hello worldn); 3) 进行换行输出,观察输出结果是否不同printf(hello, ); printf(world); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 35 页 - - - - - - - - - 4 printf(n); 4) 将上个程序块中的printf(n);去掉,观察输出结果是否不同3. 用自己的语言,描述下对C 语言程序的第一印象4. 简单描述下,第二步骤中,输出结果相同与不同的原因;以及 “n” 的用途名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 35 页 - - - - - - - - - 5 3.2 实验 2 数据类型一、 实验目的1. 掌握变量的命名规则和定义2. 掌握 C 语言程序中的各种数据类型并使用它们二、 实验内容和步骤1. 定义 3 个变量 numInt 、numFloat 、charInfo ,他们的类型分别为整型,单精度类型,字符型;并分别初始化为2,2.0 和A,最后输出这三个变量的值。(变量 c 输出两次)输出格式要求如下 :numInt 2,numFloat 2.000000,charInfo A,charInfo 65 2. 有三个数 25、47、36,编写程序求整数200 减去这三个数的差。3. 定义一个字符型变量a,将其初始化为 b,要求将 a 的值改变为它所对应的大写字母B(不允许使用直接赋值aB的方法) ,最后输出 a的值。(提示:大小写字母之间差32, 如:A 的 ASCII码为 65,a 的 ASCII 码为 97,他们之间差值为名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 35 页 - - - - - - - - - 6 32)输出格式要求如下 :aB 4. 定义一个字符型变量charInfo , 使用 scanf 语句将 charInfo 得到一个值, 并输出该值。 (做此题之前,请先看提供的课件)5. 用 scanf 输入数据,圆半径 r=1.5 和圆柱高 h=3,求圆周长、圆面积、圆球体积、圆柱体积。输出计算结果。6. 由键盘输入底和高,求三角形的面积。7. 从键盘输入两个数为两个变量赋值,然后将两个变量的值互相交换,再输出两个变量的值。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 35 页 - - - - - - - - - 7 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 35 页 - - - - - - - - - 8 3.3 实验 3 运算符和表达式一、 实验目的1. 了解表达式的概念2. 掌握各种运算符和表达式的应用二、 实验内容和步骤1. 以下程序不用第三个变量,实现将两个数进行对调操作,请填空。#include void main() int a,b; scanf(%d%d,&a,&b); printf(a=%d,b=%dn,a,b); a=a+b; b=a-b; a=_; printf(a=%d,b=%dn,a,b); 程序运行结果,如,输入3,4 ,输出:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 35 页 - - - - - - - - - 9 2. 有程序运行结果如下:其作用是将分钟数转换为对应的小时数,不足一小时的显示对应的分钟。请将程序补充完整。#include void main() int i=560,h,m; _; /*计算小时数 */ _; /*计算分钟数 */ printf(%d分 钟 %d小 时%d分 钟n,i,h,m); 3. 先计算下面两题,再编程计算下面算术表达式的值,并思考与自己计算的结果是否一致1) x + a %3 * (int) (x+y) % 2 / 4 设x=2.5,a=7,y=4.7 2) (float) (a + b ) / 2 + (int) x % (int) y 设a=2,b=3,x=3.5, y=2.5 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 35 页 - - - - - - - - - 10 4. 从键盘输入基本工资,并计算输出实领工资1) 说明:a) 物价津贴为基本工资的40% b) 房租津贴为基本工资的25% c) 薪水为三者的和2) 运行结果如下:请输入基本工资: 3000 该员工的工资细目为:基本工资为: 3000 物价津贴为: 1200.0 房租津贴为: 750.0 员工薪水为: 4950.0 5. 幸运抽奖:商场推出幸运抽象活动,具体规则如下1) 输入会员卡号,卡号为4 位整数2) 根据卡号,计算卡号的各位数字之和3) 提示,采用 “% ” 运算符进行分解数字【运行结果】请输入 4 位会员卡号: 8349 会员卡号 8349各位数字之和为: 24 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 35 页 - - - - - - - - - 11 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 35 页 - - - - - - - - - 12 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 35 页 - - - - - - - - - 13 3.4 实验 4 顺序结构及输入和输出一、 实验目的1. 掌握顺序结构程序设计2. 熟练输入与输出的应用二、 实验内容和步骤1. 从键盘输入直角三角形的两条直角边a,b,编程序计算斜边 c。【算法提示】1) 输入 a,b 的值, a,b 为实型数据。2) 根据公式 c=sqrt(a*a+b*b), 求出 c;( 程 序 的 开 头 还 要 使 用 #include ,因为程序中要使用求平方根的 sqrt 函数,这个道理和要使用输入输出函数的时需要使用#include 道理是一样的)3) 输出 c。2. 编写一个程序,实现功能如下:在键盘上任意输入一个三位正整数,然后反向输出对应的一个数。例如,你在键盘中输入 123, 则应输出 321。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 35 页 - - - - - - - - - 14 【算法提示】1) 要求数据从键盘输入 (scanf 函数) 2) 使用如下方法分别得到个、十、百位上的数据,再重新组合数据,实现反向输出对应的数据(即个位作为百位,百位作成个位)涉及到基本算术符号中/ 以及的使用(例如, 假设数据为 123,要分别取它的个、十、百位,再重新组合。参考如下使 用 方 法 : 123/100=1, 123/10=12,123%10023,123103)3. 调试下列程序,使之能正确输出3 个整数之和及 3 个整数之积。#include main( ) int a,b,c; printf(Please enter 3 numbers:); scanf(%d,%d,%d,&a,&b,&c); ab=a+b; ac=a*c; printf(a+b+c=%dn,a+b+c); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 35 页 - - - - - - - - - 15 printf(a*b*c=%dn,a+c*b); 4. 编写一个程序,实现功能如下:从键盘中输入秒数,将它按小时、分钟、秒的形式来输出。例如输入7278秒,则输出 2 小时 1 分 18 秒;5. 编写程序,输入四个数,并求它们的平均值名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 35 页 - - - - - - - - - 16 3.5 实验 5 选择结构一、 实验目的1. 熟练 if 语句的使用2. 熟练 switch 语句的使用二、 实验内容和步骤以下题目,采用if 语句。1. 编写程序,使之具有如下功能:输入a、b、c三个整数,求最小值。2. 编写程序,求解下列分段函数:其他100)100(1)0(105xxxxxxy3. 某托儿所收 2 岁到 6 岁的孩子 ,2 岁、 3 岁孩子进小班( Lower class) ;4 岁孩子进中班( Middle class) ;5 岁、 6 岁孩子进大班( Higher class) 。编写程序(用 switch 语句) ,输入孩子年龄,输出年龄及进入的班号。如:输入: 3 输出: age:3,enter Lower class。以下题目,采用switch 语句。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 35 页 - - - - - - - - - 17 4. 编写程序,求解下列分段函数:有一函数其他08060)1ln()6040(1)4020(cossin200115xxxexxxxxyx以下题目,分别采用if 和 switch 两者语句完成5. 使用 if 语句编写 “ 显示某年某月的天数 ” 程序:【分析】 :一月、三月、五月、七月、八月、十月、十二月,均为31 天。四月、六月、九月、十一月,均为30 天。二月,闰年为29 天,不是闰年为28 天。该题可用switch语句求解,但遇到两个矛盾需解决:如何表示一月、三月、五月、七月、八月、十月、十二月均为31 天?这是第一个矛盾。闰年如何判断?这是第二个矛盾。能看到如下运行结果 ( “2002, 2” 是用户键盘输入的,“2002 年 2 月是 28 天” 是程序运行后显示的 ):Please enter year and month : 2002, 2 2002 2 is 28 days 6. 输入四个数,要求按由小到大顺序输出。得到正确结果后,修改程序使之按从大到小顺序输名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 35 页 - - - - - - - - - 18 出。7. 给 出 一 个 百 分 制 成 绩 , 要 求 输 出 成 绩 等 级A,B,C,D,E 。 90 分以上为 A, 8089 分为 B, 7079 分为 C,6069分为 D,60 分以下为 E 3) 要求分别用 if 语句和 switch 语句编程实现,并检查结果是否正确4) 再运行一次程序,输入分数为负数(如-70) ,这显然是输入时出错,不应该出等级。修改程序,使之能正确处理任何数据。当输入数据大于 100 或小于 0 时,通知用户 “ 输入数据错” ,程序结束。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 35 页 - - - - - - - - - 19 3.6 实验 6 循环结构一、 实验目的1. 熟练 while 语句的使用2. 熟练 dowhile 语句的使用3. 熟练 for 语句的使用二、 实验内容和步骤1.输入一个正整数,将该数逆序输出。2.编写程序,求 100200之间所有的素数,及其个数。3.编写程序,输出以下图案:* * * * * * * * * * * * * * * * * * * * * * * * * 4.编写程序,输出以下图案:* * * * * * * 5. (用 do-while 语句实现)编写程序:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 35 页 - - - - - - - - - 20 从键盘上输入 10 个整数,求其平均值。【注意】1) 用循环条件的设置控制输入的个数2) 整数 /整数=整数,如 10/4=2,而不是 2.5;【继续思考“由人为的控制输入数据的个数,你想求几个数的平均数就求几个数的平均数” ,如何编程】6. (用 while 语句实现)编写程序:输入的不同半径,输出其所对应的圆面积程序,输入半径为负数时结束整个程序运行。7. (用 for 语句实现)编写程序:求 1100之间的素数,将每个素数都打印出来,并且要求每行只显示5 个数。8. 用循环语句编写程序。9. 实现功能“显示乘法口诀表”The multiplication table = | 1 2 3 4 5 6 7 8 9 横向表头- 1 | 1 2 | 2 4 3 | 3 6 9 4 | 4 8 12 16 5 | 5 10 15 20 25 6 | 6 12 18 24 30 36 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 25 页,共 35 页 - - - - - - - - - 21 7 | 7 14 21 28 35 42 49 8 | 8 16 24 32 40 48 56 64 9 | 9 18 27 36 45 54 63 72 81 纵向表头积10.编写程序实现输入整数n, 输出如下所示由数字组成的菱形。(图中 n=4)1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 2 1 1 2 1 1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 26 页,共 35 页 - - - - - - - - - 22 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 27 页,共 35 页 - - - - - - - - - 23 3.7 实验 7 数组 (1) 一、 实验目的1. 掌握数组的应用2. 熟悉二维数组的应用二、 实验内容和步骤1. 以表格的形式输入5 笔购物金额,最后输出各笔信息以及总金额【运行结果】请输入第 1 笔购物金额: 123.6 请输入第 2 笔购物金额: 45.7 请输入第 3 笔购物金额: 325.7 请输入第 4 笔购物金额: 99.0 请输入第 5 笔购物金额: 128.0 序号金额(元)1: 123.6 2: 45.7 3: 325.7 4: 99.0 5: 128.0 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 28 页,共 35 页 - - - - - - - - - 24 总金额722.0 2. 编写一个程序输入4 4 的数组,编写程序实现:1) 求出对角线上各元素的和;2) 求出对角线上行、列下标均为偶数的各元素的积;3) 找出对角线上其值最大的元素和它在数组中的位置。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 29 页,共 35 页 - - - - - - - - - 25 3.8 实验 8 数组 (2) 一、 实验目的1. 掌握数组的冒泡排序和插入排序2. 熟悉数组的折半查找二、 实验内容和步骤1. 编写程序(采用冒泡排序和插入排序两种方法实现) ,任意输入10 个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。2. 利用上题排序好的数组,进行折半查找一个数组的具体位置。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 30 页,共 35 页 - - - - - - - - - 26 3.9 实验 9 字符串及其操作一、 实验目的1. 理解字符串和数组的关系2. 掌握字符串函数的使用二、 实验内容和步骤1. 编 写 一 个 程 序 , 对 给 定 的 一 串 字 符 串s=Iamastudent ,获得该字符串从索引3 到 7的子串,并将结果显示出来。2. 程序要求如下:给定字符串: this is java for you,java is good for programming! 编写代码:完成如下要求:5) 打印这个字符串的长度。6) 打印第一次出现字符a 的位置。7) 打印最后一次出现字符串for 的位置3. 将字符串全部转为大写并打印。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 31 页,共 35 页 - - - - - - - - - 27 3.10 实验 10 函数一、 实验目的1. 掌握函数的定义2. 熟悉函数的调用3. 理解实参和形参的区别二、 实验内容和步骤1. 编写一个求水仙花数的函数,求3 位正整数的全部水仙花数中的次大值。所谓水仙花数是指三位整数的各位上的数字的立方和等于该整数本身。 例如: 153 就是一个水仙花数 :153 = 13 + 53+ 332. 任意输入一个4 位自然数,调用函数输出该自然数的各位数字组成的最大数。3. 编写一个函数,对输入的整数k 输出它的全部素数因子。例如:当 k126时,素数因子为: 2,3,3,7。要求按如下格式输出: 126 = 2 * 3 * 3 * 7 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 32 页,共 35 页 - - - - - - - - - 28 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 33 页,共 35 页 - - - - - - - - - 29 3.11 实验 11 结构体一、 实验目的1. 掌握结构体的定义2. 熟悉结构体的初始化二、 实验内容和步骤1. 有 5 个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入5 个学生数据,要求打印出三门课总平均成绩,以及三门课总分最高的学生的数据(包括学号、姓名、三门课的成绩、平均分数)。要求用一个 input 函数输入 5 个学生数据;用一个 average函数求总平均分;用 max 函数找出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 34 页,共 35 页 - - - - - - - - - 30 3.12 实验 12 指针一、 实验目的1. 理解指针的意义2. 掌握指针变量和指针运算符的使用二、 实验内容和步骤1. 在主函数中任意输入10 个数存入一个数组,然后按照从小到大的顺序输出这10 个数,要求数组中元素按照输入时的顺序不能改变位置。2. 请编程读入一个字符串,并检查其是否为回文(即正读和反读都是一样的) 。例如:读入: MADA M I M ADAM. 输出:YES 读入: ABCDBA. 输出: NO 3. 自己编写一个比较两个字符串s和 t 大小的函数strcomp(s,t),要求 s 小于 t 时返回 -1,s 等于 t?时返回 0,s 大于 t 时返回 1。在主函数中任意输入 4 个字符串,利用该函数求最小字符串。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 35 页,共 35 页 - - - - - - - - -