程序设计语言实验指导书(已修改)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
每个学生有学号、姓名、语文、数学、外语和平均成绩。建立一个最多保存五个学生成绩的结构体类型数组。
Input函数输入学生的学号、姓名和三门课的成绩,并计算平均成绩,函数首部为:
Input(int n, struct STUDENT s[])
主程序调用Input函数输入学生成绩,然后输出学生的信息。
2.(本题使用链表)从键盘输入若干个大于0的整数,0表示输入结束。建立一个链表,链表节点的值为输入的数,节点次序和输入次序相同。然后复制该链表,但次序相反,并输出。
《程序设计语言C》实验指导书
适用专业:计算机科学与技术
软件工程
上海应用技术学院
2009-2-20
实验目的:
1.掌握C语言程序结构。
2Fra Baidu bibliotek掌握变量的定义和使用。
3.掌握输入输出函数的使用。
4.掌握赋值语句的使用。
内容:
1.从键盘输入两个数,计算两个数的和,然后输出。
注意:带下划线的内容表示是从键盘输入的,实际上机时并不显示下划线,其余的内容是程序输出的。
实验步骤
1.写程序显示如下菜单
1. 插入 (插入一个数据)
2. 删除 (删除一个数据)
3. 排序 (排序)
4. 输出 (输出表中所数据)
0. 退出 (退出程序)
2. 用输入函数输入菜单选择的数字(0-4)对其他输入要提示错误信息流程控制结构如图1所示。
3.顺序表的数据类型自选,可以先使用基本类型,在此基础上修改使用结构体类型。
2.掌握与数组有关的算法。
内容:
1.输入S1和S2两个字符串,将长的字符串拼接在短的字符串后面并输出,如果长度相等,S1接在S2后面。假设两个字符串的长度相加不超过80。(不能使用strcat等函数)
2.输入两个日期,计算两日期的天数差,并显示两日期的顺序。假设两个日期在同一年份。
(思考:任意给两个日期,求天数差。)(需要考虑两个日期不再同一年份,但不考虑1700、1800等不是闰年的年份)
用一个函数实现统计大于平均值的数据个数,首部为:
int Count(int avg, int n, int s[])
2.组合问题,由组合的基本性质可知:
(1)C(m,n)=C(n-m,n)
(2)C(m,n+1)=C(m,n)+C(m-1,n)
公式(2)是一个递归公式,一直到满足C(1,n)=n为止。当n<2*m时,可先用公式(1)进行简化。使用递归求C(m,n)。
3.依次输入某个班级n个学生的姓名、数学、物理和化学课程的成绩,在输入姓名时直接回车表示输入结束,计算平均成绩后按姓名的字典顺序输出成绩列表,同时还要输出每个学生的平均成绩是否高于班级的平均成绩。(注意:输出时,姓名的首字母大写。)
实验七
实验目的:
1.掌握函数定义的方法。
2.掌握函数调用、实参和形参的传递方法。
用一个函数实现数据输入的功能,其首部为:
intinput(int s[])
input的参数为输入的数据,函数返回值大于0表示该行输入的数据个数,0表示输入结束。
用一个函数实现求最大值、最小值和平均值的功能,首部为:
void statistics(int n, int s[], int *max, int *min, float *avg)
ReverseAndCount函数的功能为颠倒数据存放的次序和统计大于平均数的个数,其首部为:
int ReverseAndCount(int n, int s[])
如果为了程序的结构,你还可以添加其他的子程序。如,可以编写计算数组中数据的平均值的函数,还可将ReverseAndCount函数分成两个子程序实现等。
3.掌握一些简单的算法。
内容:
1.输入N,计算公式 的值,其中N>0。
2.每个大于1的数的立方都可以表示成一连续奇数之和,试证实2到10的数都满足这样的规律。
3.用牛顿迭代法求方程在下面方程在1.5附近的根:不做!!!!!
4.
实验目的:
1.掌握一维数组和二维数组的定义、赋值和输入输出的使用方法。
2.掌握与数组有关的算法。
实验目的:
1.掌握结构体类型变量的定义和使用。
2.掌握结构体类型数组的概念和使用方法。
3.掌握链表的概念和初步的使用方法。
内容:
1. 现有如下定义一个点和圆的结构体:
用一个函数来实现判断某个圆是否包含坐标原点,其首部为:
intHavingOrigin(struct CIRCLE c)
返回1表示包含,0表示不包含。主程序输入圆的参数,然后调用函数判断,并输出判断结果。
3.用递归实现将输入小于32768的正整数按逆序输出。
实验目的:
1.掌握指针的概念、定义指针和使用指针的方法。
2.掌握和理解指针和数组的关系和使用方法。
3.掌握指针和字符串的关系和使用方法。
注意:本次实验需要使用指针进行编程。
内容:
1.从键盘输入若干数据整数(零表示结束),统计出数据个数,以及最大值、最小值和平均值。
实验目的:
1.掌握循环结构的使用方法。
2.掌握while和for语句的使用方法。
3.掌握程序单步调试的方法。
4.掌握一些简单的算法。
内容:
1.公式的计算
x=N!
2.输入最多10个整数,找出最大值、最小值,并计算平均值。
3.输入一个不超过6位的正整数,分别输出该数的每一位,并用逗号分隔,如果该数是一位数,则输出该数。然后再输出该数是几位数。程序需要对输入的数进行合法性检查,对小于0和大于6位的数要有提示。
实验目的:
1.掌握单重循环和多重循环结构的使用方法。
2.掌握程序单步调试的方法。
3.掌握一些简单的算法。
内容:
1.输入N,计算公式 的值。
2.输入一个正整数n(1≤n≤200),输出所有的整数对,其相乘的积等于n。
3.编程打印数字金字塔。
实验目的:
1.掌握单重循环和多重循环结构的使用方法。
2.掌握程序单步调试的方法。
2.编写函数,通过指针一个将字符串反向。
函数首部为:
void ReverseString(char *s)
3.编写一个Insert(插入)函数,将一个字符串插入另一个字符串中指定位置。
函数首部为:
int Insert(char *dest, char *src, int pos)
函数的返回值为插入后的字符串长度。
y= 2x-1 (1<=x<10)
3x-11 (x>=10)
2.输入一个不超过6位的正整数,输出该数的最高位和最低位,如果该数是一位数,则输出该数。然后再输出该数是几位数。程序需要对输入的数进行合法性检查,对小于0和大于6位的数要有提示。
3.输入一个0到100的百分制成绩,转换成五级制A、B、C、D和E。程序中首先需要对输入的数进行合法性检查,对小于0和大于100的数要有提示,然后转换部分使用switch语句实现。
实验目的:
1.掌握函数调用、实参和形参的传递方法。
2.掌握变量作用域和变量类型的使用方法。
3.掌握递归子程序的编写和使用方法。
内容:
1.从键盘输入数行数据,每行最多20个正整数,每行最后用0表示行结束。一个以0开始的行表示输入结束。每输入完一行,输出该行数据的个数、平均值和有几个数据大于该行的平均值。
4.每个功能模块要求用函数实现。
5.在菜单中增加“写入文件”和“读取文件”选项,能将顺序表中的数据写入文件和从文件读取数据。
6.(选做)使用链表来实现。
3.掌握变量作用域和变量类型的使用方法。
内容:
1.从键盘输入数行数据,每行三个正整数n1、n2和n3,三个0表示输入结束。每输入完一行,输出n1和n2之间(包括n1和n2)能被n3整除的数的个数。
要求用一个函数实现统计整除数个数的功能,其首部为:
intaliquot(int n1, int n2, intn3)
实验十一
实验目的:
1.掌握文件的定义和使用。
2.掌握文件的打开、关闭和读写等使用方法。
内容:
1.先利用Notepad在D:\MyDoc目录中建立一个名为MyNew.txt的文本文件,在其中任意输入数行内容,然后编写一个C语言程序,读出MyNew.txt文件的内容并在屏幕上显示。
2.编写C语言程序,在D:\MyDoc目录中建立一个名为MyText.txt的文本文件,在其中写入两行内容,你的学号和你的姓名。在程序正确运行后,利用Notepad打开该文件查看结果。
3.编写文件复制程序。并用Notepad查看复制结果。
如果文件打开错误等要进行提示。
实验目的
1.提高综合应用流程控制语句的能力;
2.提高对复杂流程结构的程序的编写能力和调试能力;
3.掌握利用数组的组织存储数据以及一些实用的算法。
4.掌握对文件的操作。
实验内容
编写和调试一个具有能对用一维数组建立的顺序表进行各种操作的应用程序。
2.从键盘输入一个华氏温度,请转换成摄氏温度后输出。
3.电路图如下所示,从键盘输入5个电阻的电阻值,计算并输出总的电阻值。
实验目的:
1.掌握逻辑表达式的使用方法。
2.掌握if和switch语句的使用方法。
3.掌握一些简单的算法。
内容:
1.有下列函数,写一段程序,输入x的值,输出y的值
x (x<1)
用一个函数实现数据输入的功能,其首部为:
intinput(int s[])
input的参数为输入的数据,函数返回值大于0表示该行输入的数据个数,0表示输入结束。
用一个函数实现求平均值的功能,首部为:
int Average(int n, int s[])
Average的参数是n个数的数组,函数返回值为平均值。
2.求组合数。计算
其中计算C(m,n)的函数首部为:int cmn(int m, int n)
计算阶乘的函数首部为:int fac(int n)
并用cmn函数打印杨辉三角形。
3.从键盘输入最多50个整数,0表示结束。将该批数据存入一个数组中,然后调用ReverseAndCount函数将数据在数组中的存放次序颠倒并统计出大于平均数的个数,输出结果。
内容:
1.输入n及n个整数(n<20),然后按奇数升序、偶数降序排列输出。
2.输入一个日期,计算该天是该年的第几天。
3.依次输入某个班级n个学生的数学、物理和化学课程的成绩,计算平均成绩后输出成绩列表,同时还要输出每个学生的平均成绩是否高于班级的平均成绩。
实验目的:
1.掌握一维数组、二维数组和字符数组的定义、赋值和输入输出的使用方法。
Input函数输入学生的学号、姓名和三门课的成绩,并计算平均成绩,函数首部为:
Input(int n, struct STUDENT s[])
主程序调用Input函数输入学生成绩,然后输出学生的信息。
2.(本题使用链表)从键盘输入若干个大于0的整数,0表示输入结束。建立一个链表,链表节点的值为输入的数,节点次序和输入次序相同。然后复制该链表,但次序相反,并输出。
《程序设计语言C》实验指导书
适用专业:计算机科学与技术
软件工程
上海应用技术学院
2009-2-20
实验目的:
1.掌握C语言程序结构。
2Fra Baidu bibliotek掌握变量的定义和使用。
3.掌握输入输出函数的使用。
4.掌握赋值语句的使用。
内容:
1.从键盘输入两个数,计算两个数的和,然后输出。
注意:带下划线的内容表示是从键盘输入的,实际上机时并不显示下划线,其余的内容是程序输出的。
实验步骤
1.写程序显示如下菜单
1. 插入 (插入一个数据)
2. 删除 (删除一个数据)
3. 排序 (排序)
4. 输出 (输出表中所数据)
0. 退出 (退出程序)
2. 用输入函数输入菜单选择的数字(0-4)对其他输入要提示错误信息流程控制结构如图1所示。
3.顺序表的数据类型自选,可以先使用基本类型,在此基础上修改使用结构体类型。
2.掌握与数组有关的算法。
内容:
1.输入S1和S2两个字符串,将长的字符串拼接在短的字符串后面并输出,如果长度相等,S1接在S2后面。假设两个字符串的长度相加不超过80。(不能使用strcat等函数)
2.输入两个日期,计算两日期的天数差,并显示两日期的顺序。假设两个日期在同一年份。
(思考:任意给两个日期,求天数差。)(需要考虑两个日期不再同一年份,但不考虑1700、1800等不是闰年的年份)
用一个函数实现统计大于平均值的数据个数,首部为:
int Count(int avg, int n, int s[])
2.组合问题,由组合的基本性质可知:
(1)C(m,n)=C(n-m,n)
(2)C(m,n+1)=C(m,n)+C(m-1,n)
公式(2)是一个递归公式,一直到满足C(1,n)=n为止。当n<2*m时,可先用公式(1)进行简化。使用递归求C(m,n)。
3.依次输入某个班级n个学生的姓名、数学、物理和化学课程的成绩,在输入姓名时直接回车表示输入结束,计算平均成绩后按姓名的字典顺序输出成绩列表,同时还要输出每个学生的平均成绩是否高于班级的平均成绩。(注意:输出时,姓名的首字母大写。)
实验七
实验目的:
1.掌握函数定义的方法。
2.掌握函数调用、实参和形参的传递方法。
用一个函数实现数据输入的功能,其首部为:
intinput(int s[])
input的参数为输入的数据,函数返回值大于0表示该行输入的数据个数,0表示输入结束。
用一个函数实现求最大值、最小值和平均值的功能,首部为:
void statistics(int n, int s[], int *max, int *min, float *avg)
ReverseAndCount函数的功能为颠倒数据存放的次序和统计大于平均数的个数,其首部为:
int ReverseAndCount(int n, int s[])
如果为了程序的结构,你还可以添加其他的子程序。如,可以编写计算数组中数据的平均值的函数,还可将ReverseAndCount函数分成两个子程序实现等。
3.掌握一些简单的算法。
内容:
1.输入N,计算公式 的值,其中N>0。
2.每个大于1的数的立方都可以表示成一连续奇数之和,试证实2到10的数都满足这样的规律。
3.用牛顿迭代法求方程在下面方程在1.5附近的根:不做!!!!!
4.
实验目的:
1.掌握一维数组和二维数组的定义、赋值和输入输出的使用方法。
2.掌握与数组有关的算法。
实验目的:
1.掌握结构体类型变量的定义和使用。
2.掌握结构体类型数组的概念和使用方法。
3.掌握链表的概念和初步的使用方法。
内容:
1. 现有如下定义一个点和圆的结构体:
用一个函数来实现判断某个圆是否包含坐标原点,其首部为:
intHavingOrigin(struct CIRCLE c)
返回1表示包含,0表示不包含。主程序输入圆的参数,然后调用函数判断,并输出判断结果。
3.用递归实现将输入小于32768的正整数按逆序输出。
实验目的:
1.掌握指针的概念、定义指针和使用指针的方法。
2.掌握和理解指针和数组的关系和使用方法。
3.掌握指针和字符串的关系和使用方法。
注意:本次实验需要使用指针进行编程。
内容:
1.从键盘输入若干数据整数(零表示结束),统计出数据个数,以及最大值、最小值和平均值。
实验目的:
1.掌握循环结构的使用方法。
2.掌握while和for语句的使用方法。
3.掌握程序单步调试的方法。
4.掌握一些简单的算法。
内容:
1.公式的计算
x=N!
2.输入最多10个整数,找出最大值、最小值,并计算平均值。
3.输入一个不超过6位的正整数,分别输出该数的每一位,并用逗号分隔,如果该数是一位数,则输出该数。然后再输出该数是几位数。程序需要对输入的数进行合法性检查,对小于0和大于6位的数要有提示。
实验目的:
1.掌握单重循环和多重循环结构的使用方法。
2.掌握程序单步调试的方法。
3.掌握一些简单的算法。
内容:
1.输入N,计算公式 的值。
2.输入一个正整数n(1≤n≤200),输出所有的整数对,其相乘的积等于n。
3.编程打印数字金字塔。
实验目的:
1.掌握单重循环和多重循环结构的使用方法。
2.掌握程序单步调试的方法。
2.编写函数,通过指针一个将字符串反向。
函数首部为:
void ReverseString(char *s)
3.编写一个Insert(插入)函数,将一个字符串插入另一个字符串中指定位置。
函数首部为:
int Insert(char *dest, char *src, int pos)
函数的返回值为插入后的字符串长度。
y= 2x-1 (1<=x<10)
3x-11 (x>=10)
2.输入一个不超过6位的正整数,输出该数的最高位和最低位,如果该数是一位数,则输出该数。然后再输出该数是几位数。程序需要对输入的数进行合法性检查,对小于0和大于6位的数要有提示。
3.输入一个0到100的百分制成绩,转换成五级制A、B、C、D和E。程序中首先需要对输入的数进行合法性检查,对小于0和大于100的数要有提示,然后转换部分使用switch语句实现。
实验目的:
1.掌握函数调用、实参和形参的传递方法。
2.掌握变量作用域和变量类型的使用方法。
3.掌握递归子程序的编写和使用方法。
内容:
1.从键盘输入数行数据,每行最多20个正整数,每行最后用0表示行结束。一个以0开始的行表示输入结束。每输入完一行,输出该行数据的个数、平均值和有几个数据大于该行的平均值。
4.每个功能模块要求用函数实现。
5.在菜单中增加“写入文件”和“读取文件”选项,能将顺序表中的数据写入文件和从文件读取数据。
6.(选做)使用链表来实现。
3.掌握变量作用域和变量类型的使用方法。
内容:
1.从键盘输入数行数据,每行三个正整数n1、n2和n3,三个0表示输入结束。每输入完一行,输出n1和n2之间(包括n1和n2)能被n3整除的数的个数。
要求用一个函数实现统计整除数个数的功能,其首部为:
intaliquot(int n1, int n2, intn3)
实验十一
实验目的:
1.掌握文件的定义和使用。
2.掌握文件的打开、关闭和读写等使用方法。
内容:
1.先利用Notepad在D:\MyDoc目录中建立一个名为MyNew.txt的文本文件,在其中任意输入数行内容,然后编写一个C语言程序,读出MyNew.txt文件的内容并在屏幕上显示。
2.编写C语言程序,在D:\MyDoc目录中建立一个名为MyText.txt的文本文件,在其中写入两行内容,你的学号和你的姓名。在程序正确运行后,利用Notepad打开该文件查看结果。
3.编写文件复制程序。并用Notepad查看复制结果。
如果文件打开错误等要进行提示。
实验目的
1.提高综合应用流程控制语句的能力;
2.提高对复杂流程结构的程序的编写能力和调试能力;
3.掌握利用数组的组织存储数据以及一些实用的算法。
4.掌握对文件的操作。
实验内容
编写和调试一个具有能对用一维数组建立的顺序表进行各种操作的应用程序。
2.从键盘输入一个华氏温度,请转换成摄氏温度后输出。
3.电路图如下所示,从键盘输入5个电阻的电阻值,计算并输出总的电阻值。
实验目的:
1.掌握逻辑表达式的使用方法。
2.掌握if和switch语句的使用方法。
3.掌握一些简单的算法。
内容:
1.有下列函数,写一段程序,输入x的值,输出y的值
x (x<1)
用一个函数实现数据输入的功能,其首部为:
intinput(int s[])
input的参数为输入的数据,函数返回值大于0表示该行输入的数据个数,0表示输入结束。
用一个函数实现求平均值的功能,首部为:
int Average(int n, int s[])
Average的参数是n个数的数组,函数返回值为平均值。
2.求组合数。计算
其中计算C(m,n)的函数首部为:int cmn(int m, int n)
计算阶乘的函数首部为:int fac(int n)
并用cmn函数打印杨辉三角形。
3.从键盘输入最多50个整数,0表示结束。将该批数据存入一个数组中,然后调用ReverseAndCount函数将数据在数组中的存放次序颠倒并统计出大于平均数的个数,输出结果。
内容:
1.输入n及n个整数(n<20),然后按奇数升序、偶数降序排列输出。
2.输入一个日期,计算该天是该年的第几天。
3.依次输入某个班级n个学生的数学、物理和化学课程的成绩,计算平均成绩后输出成绩列表,同时还要输出每个学生的平均成绩是否高于班级的平均成绩。
实验目的:
1.掌握一维数组、二维数组和字符数组的定义、赋值和输入输出的使用方法。