《《C程序设计》的实验指导书.doc》由会员分享,可在线阅读,更多相关《《C程序设计》的实验指导书.doc(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C程序设计实验指导书信息工程学院 计算机系目 录实验要求3实验一 简单程序设计310011 计算球体积310012 计算书费410013 时间相加4实验二 分支结构程序设计510021 函数值计算510022 颠倒整数610023 整数排序610024 自整除数710025 选作题:Fibonacci Again7实验三 循环结构程序设计810031 整数的立方和810032 求累加和810033 与7无关的数910034 选作题:细菌繁殖9实验四 数组应用1010041 杨辉三角形1010042 矩阵乘法1010043 学生成绩管理1110044 选作题:大整数乘法12实验五 函数应用121
2、0051 各类型变量在函数调用过程中的变化1210052 最大公约数和最小公倍数1310053 进制转换1310054 字符串替换1410055 排序1510056 选作题:数制转换15实验六 综合应用(一)1610061 同一天生日1610062 忽略大小写比较字符串1710063 不吉利日期1710064 统计字符数1810065 选作题:Digital Roots18实验七 指针应用1910071 求平均成绩1910072 字符串排序2010073 字符串比较2110074 选做题:学生成绩统计21实验八 结构体应用2210081 学生成绩统计2210082 图书价格统计23实验九 链表
3、应用2410091 列车排队2410092 选做题:猴子选大王24实验十 文件应用2510101 学生成绩管理25实验十一 综合应用(二)2610111 小白鼠排队2610112 吃糖果2710113 日期转换问题28附录29一、Visual C+调试环境的使用29二、TC环境下的使用33三、实验报告要求37四、C程序设计常见错误及解决方案38实验要求课程实验是C程序设计课程的一个重要的实践环节,要求每个同学按以下要求独立完成每次实验,每次上机前必须编写完实验要求的所有题目,并按输出格式写出程序的运行结果。上机时调试程序并验证结果的正确性。若与运行结果不符,则要分析原因,上机时间包括课内和课外
4、上机两部分。C程序设计课程包括十一个实验,共有39个实验题目。实验一 简单程序设计目的及要求: 1.熟练掌握 C开发环境的窗口、菜单命令及相应的命令,并掌握在开发环境下如何编辑、编译、连接、运行一个C程序,以及如何保存和修改C语言的源程序。2.通过运行一个简单的C程序过程,逐步了解C程序的基本结构及特点。3.掌握C语言的基本数据类型,熟悉它们的使用方法及定义方式,了解各类型数据输出时所用的格式转换符,熟悉各种运算符和表达式的使用特点。4.熟练掌握C中赋值运算的使用。10011 计算球体积Description已知一个球的半径为R,计算球的体积V。球体积的计算公式为:V = 4/3 * 3.14
5、 *R3Input输入一个整数,表示球的半径。Output输出一行。该行包含一个浮点数V,表示球的体积。精确到小数点后两位。Sample Input3Sample Output113.0410012 计算书费Description下面是一个图书的单价表:计算概论 28.9 元/本 数据结构与算法 32.7 元/本 数字逻辑 45.6元/本 C+程序设计教程 78 元/本 人工智能 35 元/本 计算机体系结构 86.2 元/本 编译原理 27.8元/本 操作系统 43 元/本 计算机网络 56 元/本 JAVA程序设计 65 元/本 给定每种图书购买的数量,编程计算应付的总费用。Input输入
6、每行包含一组10个整数(大于等于0,小于等于100),分别表示购买的计算概论、数据结构与算法、数字逻辑、C+程序设计教程、人工智能、计算机体系结构、编译原理、操作系统、计算机网络、JAVA程序设计的数量(以本为单位)。每两个整数用一个空格分开。Output输出一行。该行包含一个浮点数,表示应付的总费用。精确到小数点后两位。输出参考格式:%.2fn。Sample Input1 5 8 10 5 1 1 2 3 4 Sample Output2140.2010013 时间相加Description用整数表示时间,如:1050表示10点50分,2010表示20点10分。现输入两个时间,求两个时间的和
7、。例:2030 + 850 = 520 不是28801055 + 850 = 1945 不是1905Input两行数据,每行一个整数。Output输出相加后的时间整数。Sample Input2030850Sample Output520实验二 分支结构程序设计目的及要求: 1.掌握C程序设计的基本语句表达方式及基本语句结构的方法。2.掌握C语言中输入、输出函数的基本功能。3.掌握顺序和分支结构程序设计的方法。4.能独立编写顺序及分支结构的C程序。10021 函数值计算Description有一个函数 y = x ( x 1 )= 2x - 1 (1 = x = 10 )写一程序,输入x值,计
8、算y值。Input一个整数x。Output输出函数值y。Sample Input20Sample Output4910022 颠倒整数Description给定一个最多4位的正整数,将其颠倒过来输出。例如:输入123,则输出321。Input一个小于10000的正整数。Output颠倒后整数。Sample Input1234Sample Output432110023 整数排序Description对给定的4个整数进行排序,将由小到大的顺序输出。Input一行中有4个整数,整数之间用空格分隔。Output按升序输出,各整数之间用一个空格分隔。Sample Input25 314 18 27Sa
9、mple Output18 25 27 31410024 自整除数Description对一个整数n,如果其各个位数的数字相加得到的数m能整除n,则称n为自整除数.例如21,21%(2+1)=0,所以21是自整除数。Input一个整数nOutput若n为自整除数,则输出TRUE,否则输出FALSE。Sample Input42Sample OutputTRUE10025 选作题:Fibonacci AgainProblem DescriptionThere are another kind of Fibonacci numbers: F(0) = 7, F(1) = 11, F(n) = F(
10、n-1) + F(n-2) (n=2).InputInput an integer n. (n 1,000,000).OutputPrint the word yes if 3 divide evenly into F(n).Print the word no if not.Sample Input5Sample OutputnoSample Input2Sample Outputyes实验三 循环结构程序设计目的及要求:1.熟练掌握循环语句中for语句、while语句和do while语句使用方法。2.掌握编写循环结构程序的方法。10031 整数的立方和Description给定一个正整数k
11、(1k10),求1到k的立方和m。即m=1+2*2*2+k*k*k。Input输入只有一行,该行包含一个正整数k。Output输出只有一行,该行包含1到k的立方和。Sample Input5Sample Output22510032 求累加和Description求出下列分数序列的前n项之和:2 ,3 ,5 ,8 ,13 ,21 1 2 3 5 8 13Input输入只有一行,该行包含一个正整数n ( n 200 )。Output序列前n项之和(保留两位小数)。Sample Input2Sample Output3.5010033 与7无关的数Description一个正整数,如果它能被7整除
12、,或者它的十进制表示中某位数字为7,则称其为与7相关的数。现求所有小于等于n(n100)的与7无关的正整数的平方和.Input输入为一行,正整数n,(n100)。Output输出小于等于n的与7无关的正整数的平方和Sample Input21Sample Output233610034 选作题:细菌繁殖Description一种细菌的繁殖速度是每天成倍增长。例如:第一天有10个,第二天就变成20个,第三天变成40个,第四天变成80个,。现在给出第一天的日期和细菌数目,要你写程序求出到某一天的时候,细菌的数目。Input一行有5个整数,整数之间用一个空格隔开。第一个数表示第一天的月份,第二个数表
13、示第一天的日期,第三个数表示第一天细菌的数目,第四个数表示要求的那一天的月份,第五个数表示要求的那一天的日期。已知第一天和要求的一天在同一年并且该年不是闰年,要求的一天一定在第一天之后。数据保证要求的一天的细菌数目在长整数(long)范围内。Output对于每一组测试数据,输出一行,该行包含一个整数,为要求的一天的细菌数。Sample Input2 28 10 3 2Sample Output40实验四 数组应用目的及要求:1.理解并掌握一维数组、二维数组的定义及引用。2.熟练掌握利用数组处理数据的方法。3.掌握字符串数组和字符串的使用方法及常用字符串函数在程序中的使用。10041 杨辉三角形
14、Description打印出杨辉三角形的前n行。Input输入一个正整数n ( n 20 )。Output杨辉三角形。Sample Input5Sample Output 1 1 1 1 2 1 1 3 3 1 1 4 6 4 110042 矩阵乘法Description已知矩阵A(mn)和矩阵B(np),求C = AB 。Input第一行三个整数为m、n、p(m、n、p均小于10),从第二行开始为m行n列A矩阵,然后为n行p列的B矩阵。所有数据之间均由一个空格分隔。Output输出m行p列的C矩阵,所有数据之间均由一个空格分隔。Sample Input2 3 41 0 33 4 01 0 2
15、 12 3 4 52 1 1 5Sample Output7 3 5 1611 12 22 2310043 学生成绩管理Description学生信息包括:学号、姓名、数学成绩、英语成绩、计算机成绩。共有N个人(N=10,可在程序内部定义,如用#define N 10)的信息,要求计算每人的总成绩,并按总成绩由高到低的顺序输出所有人的信息。最后输出各门课程的平均成绩(保留2位小数)。Input输入分N行,每行为一个学生的学号、姓名、数学成绩、英语成绩、计算机成绩信息。Output输出为N+4行。第一行为固定字符串;第2N+1行为按总成绩由高到低顺序输出的所有人信息;最后3行输出各门课程的平均成
16、绩。Sample Input1001 zhang 90 80 881002 huang 78 80 821003 xiong 88 85 80Sample OutputNo Name Maths English Computer Total1001 zhang 90 80 88 2581003 xiong 88 85 80 2531002 huang 78 80 82 240average of Maths:85.33average of English:81.67average of Computer:83.3310044 选作题:大整数乘法Description求两个不超过200位的非负整
17、数的积。Input有两行,每行是一个不超过200位的非负整数,没有多余的前导0。Output一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。 Sample InputSample Output实验五 函数应用目的及要求:1.理解函数的定义及函数的调用过程(函数的调用格式、调用方式及被调用函数的使用说明)。2.掌握局部变量、全局变量的说明形式和引用方法。3.掌握函数的嵌套与递归调用的全过程。10051 各类型变量在函数调用过程中的变化Description采用单步运行方式运行下面程序,观察各变量(静态局部变量及自动变量)在函数调用过程中的变化。voi
18、d main()int a=3,i;for(i=0;i3;i+)printf(“P=%dn”,p(a);int p(a)int a; static int c=1;auto int b=0;b=b+1;c=c+1;return(a+b+c);10052 最大公约数和最小公倍数Description对给定的两组数(每组包括2个整数),分别计算出两组数的最大公约数和最小公倍数的和。如:20、12为第一组,28、7为第二组。第一组数的最大公约数为4,最小公倍数为60;第二组数的最大公约数为7,最小公倍数为28;所以两组数的最大公约数之和为11,两组数的最小公倍数之和为88。Input输入包括两行,每
19、行为一组,每组两个整数。Output输出包括两行,第一行为两组数的最大公约数之和,第二行为两组数的最小公倍数之和。Sample Input20 1228 7Sample Output118810053 进制转换Description对输入的两十六进制数(两个字符串),将其转换成十进制后再求和。要求十六进制到十进制的转换功能由函数完成。例如:输入3a1、80,由于3a1转换为十进制后为929,80转换为十进制后为128,所以和为1057。Input输入包括两行,每行为一个十六进制数。Output输出包括一行为两数之和的十进制表示。Sample Input3a180Sample Output105
20、710054 字符串替换Description将一段英文文章中字符串用给定的字符串替换。Input输入包括多行,第一行为一段英文文章(长度不超过80)。以后每行包括2个字符串(长度不超过20),之间由空格分隔,第一个串为原串,第二个串为替换串。当遇到0 0两个串时表示输入结束,并且此行不需处理。Output输出替换后的文章。Sample Inputhello how are yes.h Hes ou0 0Sample OutputHello How are you.10055 排序Description对输入的10个整数进行排序,按从小到大的顺序输出。要求排序过程由函数完成。Input输入包括
21、一行,共10个整数,各数之间由空格分割。Output在同一行上输出排好序的10个数,各数之间由空格分割。Sample Input25 48 13 27 68 76 43 20 9 65Sample Output9 13 20 25 27 43 48 65 68 76 10056 选作题:数制转换Description求任意两个不同进制非负整数的转换(2进制16进制),所给整数在long所能表达的范围之内。不同进制的表示符号为(0,1,.,9,A,B,C,D,E,F)。Input输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十
22、进制整数,2 = a,b = 16。Output输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,.,9,A,B,C,D,E,F)。 Sample Input15 AAB3 7Sample OutputHint用字符串表示不同进制的整数。实验六 综合应用(一)目的及要求:1.掌握程序的基本方法和技巧,能够独立完成较复杂程序的设计。2.掌握程序的调试方法,熟悉各种类型错误的改正方法。10061 同一天生日Description在一个有200人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的学号,出生月日。试找出所有生日相同的学生。Input第一
23、行为整数n,表示有n个学生,n=200。 此后每行包含一个字符串和两个整数,分别表示学生的学号(字符串长度为11位)和出生月(1=m=12)日(1=d=31)。学号、月、日之间用一个空格分隔。Output对每组生日相同的学生,输出一行,其中前两个数字表示月和日,后面跟着所有在当天出生的学生的学号,数字、学号之间都用一个空格分隔。对所有的输出,要求按日期从前到后的顺序输出。对生日相同的学号,按输入的顺序输出。Sample Input6 3 15 4 5 3 15 4 5 4 5 8 10Sample Output3 15 4 5 8 10 10062 忽略大小写比较字符串Description一
24、般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按ASCII码值大小比较),直到出现不同的字符或遇到0为止。如果全部字符都相同,则认为相同;如果出现不相同的字符,则以第一个不相同的字符的比较结果为准。但在有些时候,我们比较字符串的大小时,希望忽略字母的大小,例如Hello和hello在忽略字母大小写时是相等的。请写一个程序,实现对两个字符串进行忽略字母大小写的大小比较。Input输入为两行,每行一个字符串,共两个字符串。(请用gets录入每行字符串)(每个字符串长度都小于80)Output如果第一个字符串比第二个字符串小,输出一个字符 如果两个字符串相
25、等,输出一个字符= Sample InputHellohelloSample Output=10063 不吉利日期Description在国外,每月的13号和每周的星期5都是不吉利的。特别是当13号那天恰好是星期5时,更不吉利。已知某年的一月一日是星期w,并且这一年一定不是闰年,求出这一年所有13号那天是星期5的月份,按从小到大的顺序输出月份数字。(w=1.7)Input输入有一行,即一月一日星期几(w)。(1=w=7)Output输出有一到多行,每行一个月份,表示该月的13日是星期五。 Sample Input7Sample Output11010064 统计字符数Description判断
26、一个由a-z这26个字符组成的字符串中哪个字符出现的次数最多。Input第1行是测试数据的组数n,每组测试数据占1行,是一个由a-z这26个字符组成的字符串,每行数据不超过1000个字符且非空。Output输出n行,每行输出对应一个输入。一行输出包括出现次数最多的字符和该字符出现的次数,中间是一个空格。 如果有多个字符出现的次数相同且最多,那么输出ascii码最小的那一个字符。Sample Input2abbcccadfadffasdfSample Outputc 3f 410065 选作题:Digital Roots DescriptionThe digital root of a posi
27、tive integer is found by summing the digits of the integer. If the resulting value is a single digit then that digit is the digital root. If the resulting value contains two or more digits, those digits are summed and the process is repeated. This is continued as long as necessary to obtain a single
28、 digit.For example, consider the positive integer 24. Adding the 2 and the 4 yields a value of 6. Since 6 is a single digit, 6 is the digital root of 24. Now consider the positive integer 39. Adding the 3 and the 9 yields 12. Since 12 is not a single digit, the process must be repeated. Adding the 1
29、 and the 2 yeilds 3, a single digit and also the digital root of 39.。InputThe input file will contain a list of positive integers, one per line. The end of the input will be indicated by an integer value of zero.OutputFor each integer in the input, output its digital root on a separate line of the o
30、utput.Sample Input24390Sample Output63实验七 指针应用目的及要求:1理解和掌握指针及指针变量的基本概念和定义。2熟练掌握指针的运算(算术运算、关系运算和赋值运算)。 3熟练掌握几种不同类型的指针(指向变量的指针、指向数组的指针、指向字符串的指针、指向函数的指针、指向指针的指针)。10071 求平均成绩Description某班期末考试后要统计本班某门课程的平均成绩、最高成绩和最低成绩,你的任务是编程序实现这一功能。一个班的人数不超过30人,要求实现求最高成绩,最低成绩和平均成绩的功能用一个函数完成,并用参数返回最高成绩、最低成绩和平均成绩。Input一组测
31、试数据,第一行为一个整数N,表示本班有N个人(N=30),接下来的N行中每行一个整数,表示一个人的成绩。Output输出一行。该行包含三个数,分别是:最高成绩、最低成绩和平均成绩。成绩之间由空格分隔,其中平均成绩为实数,并精确到小数点后两位。Sample Input59083768562Sample Output90 62 79.2010072 字符串排序Description按字典顺序输出某班所有人的名单。Input一组测试数据,第一行为一个整数N,表示本班有N个人(N=30),接下来的N行中每行一个人名(人名均由小写字母组成,并且名字长度小于20)。Output2按字典顺序排列的人员名单。
32、每个人名占一行。Sample Input5zhangsanliyangwangxiaoliqingwuhuiSample Outputliqingliyangwangxiaowuhuizhangsan10073 字符串比较Description按字符串比较过程对给定的两个字符串进行比较,若相等则结果为0,若不等则结果为对应不等字符的差。按要求实现对给定字符串的比较。要求程序中用函数实现两个字符串的比较。int stringcmp(char *str1 , char *str2 )Input第一行为一个整数N,表示测试数据的组数,接下来的N行中每行包含两个字符串,字符串之间由空格分隔。Outpu
33、t输出共N行,每行为对应输入一行的两个字符串的比较结果。Sample Input3Happy HelpHelp HelpHelp HappySample Output-40410074 选做题:学生成绩统计Description某班有N(N=30)个学生,共开设5门课程,分别用三个函数实现如下功能:求第一门课程的平均分;找出有2门及2门以上不及格的学生,并输出其学号;找出平均成绩在90分以上的学生,输出他们的学号。Input第一行为一个整数N,表示本班共N个人,接下来的N行中每行包含一个学生的信息,包括学号(长度小于10的字符串)、课程1成绩、课程2成绩、课程3成绩、课程4成绩、课程5成绩。成
34、绩均为整数。Output输出共三行:第一行为本班第一门课程的平均成绩。(保留小数点后两位)第二行为有2门及2门以上不及格的学生的学号,各学号之间用一个空格分隔。若不存在,则打印“no”。第三行为平均成绩在90分以上的学生的学号, 各学号之间用一个空格分隔。若不存在,则打印“no”。Sample Input3 90 80 85 50 42 93 95 90 88 92 98 92 84 90 91Sample Output93.67 实验八 结构体应用目的及要求:1理解并掌握结构类型、结构变量的定义和引用方法。2掌握结构体在程序设计中的使用方法。 10081 学生成绩统计Description用
35、结构数组实现学生成绩统计各功能。某班有N(N=30)个学生,共开设5门课程,分别用三个函数实现如下功能:求第一门课程的平均分;找出有2门及2门以上不及格的学生,并输出其学号;找出平均成绩在90分以上的学生,输出他们的学号。Input第一行为一个整数N,表示本班共N个人,接下来的N行中每行包含一个学生的信息,包括学号(长度小于10的字符串)、课程1成绩、课程2成绩、课程3成绩、课程4成绩、课程5成绩。成绩均为整数。Output输出共三行:第一行为本班第一门课程的平均成绩。(保留小数点后两位)第二行为有2门及2门以上不及格的学生的学号,各学号之间用一个空格分隔。若不存在,则打印“no”。第三行为平
36、均成绩在90分以上的学生的学号, 各学号之间用一个空格分隔。若不存在,则打印“no”。Sample Input3 90 80 85 50 42 93 95 90 88 92 98 92 84 90 91Sample Output93.67 10082 图书价格统计Description用结构数组保存书的信息。现有N(N1),两数之间由空格分隔。Output输出共N行,每行为对应输入行获胜猴子的编号。Sample Input28 55 8Sample Output31实验十 文件应用目的及要求:1理解文件的概念,掌握文件类型指针的定义方法。2掌握文件的打开、读写、定位及关闭的方法。3掌握利用文件
37、进行数据处理的方法。 10101 学生成绩管理Description学生成绩管理,每个学生的数据包括学号、姓名、3门课的成绩,数据保存在文件中(内存中只保留一个学生的信息,处理后写回文件)。分别用三个函数实现如下各操作,主函数中列出选择菜单,根据选择执行相应功能。1)输入学生成绩;2)给出学号或姓名,找到该学生的信息。3) 给出学号或姓名,修改某学生的信息。4)找出某门课程不及格的学生,并输出其学号和不及格课程的成绩;若不存在,则打印no。5)给出所有学生的各科平均成绩和总平均成绩。Input第一行为一个整数N,表示学生数;接下来的N行中每行包含5个数据:学号(字符串)、姓名(字符串)、3门课
38、的成绩(成绩为整数);第N+2行为一个字符串,表示要查找的学生学号;第N+3行为6个数据(姓名、学号、姓名、3门课的成绩),表示要修改信息的学生姓名以及欲修改的该学生信息;第N+4行为数字(1、2或3),表示要查找的是第几门课程。Output第1行为给定学号的学生信息;第2行为给定姓名的已经修改的学生信息;第3行为指定课程中不及格学生的学号以及不及格课程的成绩(各数之间由空格分隔);第4行为所有学生的各科平均成绩和总平均成绩(各数之间由空格分隔,保留两位有效数字)。Sample Input3 ZhangLi 90 80 85 WangHua 93 55 90 ChenHai 58 42 84ChenHai ChenHai 58 42 902Sample Output WangHua 93 55 90 ChenHai 58 42 90 55 4278.00 59.00 88.33实验十一 综合应用(二)目的及要求:1学习对复杂问题的分析,掌握程序设计方法与技巧。2掌握综合应用问题的处理方法。10111 小白鼠排队DescriptionN只小白鼠(1 N 100),每只鼠头上戴着一顶有颜色的帽子并且有一个编号。现在称出每只白鼠的重量,要求按照