资源描述
程序设计语言C实验,金鑫,实验一C简单程序设计,实验目的了解C程序的基本编辑操作,熟悉编辑界面;掌握在TurboC集成开发环境下编辑、编译、连接和运行C程序的方法实验内容使用DOS操作命令查看TC目录下的文件。学习建立个人的C源程序文件子目录在TurboC集成开发环境下,输入教材P37例3.1的程序并进行编译和运行。观察C程序的书写格式,学会在用户屏幕上查看运行结果,熟悉编辑操作,了解基本调试程序的操作。,实验二数据类型、运算符和表达式,实验目的掌握C语言的基本数据类型:整型、字符型、长整型、单精度、双精度类型,以及对它们赋值的方法学会使用C有关的运算符和表达式,以及自加和自减运算符的使用实验内容编写一个程序,分别定义字符型、整型、长整型、单精度、双精度变量,并给这些变量赋值,输出这些变量的存储宽度。运行P5例1.1,模仿例1.1编写P9的习题3程序。运行P6例1.2、P13例2.1、P15的程序、P18页的程序运行课堂中的有关自加(减)的例题。,实验三数据类型、运算符和表达式,实验目的进一步理解数据类型的概念,理解运算符的含义;掌握运用编程的方法来分析表达式值的方法;重点分析整型表达式运算结果、逻辑表达式运算结果实验内容编程完成第二章的习题,实验三数据的输入和输出,实验目的掌握输出函数printf、输入函数scanf的几种常用的控制格式的用法掌握字符输入函数getchar、输出函数putchar的用法实验内容编写一个程序,输入一个字符,输出它的前后邻居编写一个程序,求三角形的面积。其中,a、b、c为三角形的三条边,s=(a+b+c)/2,面积为area=编写一个程序,求摄氏温度。公式:c=5*(f-32)/9,实验四自己动手编写一个C程序,实验目的利用已学的知识编写一个解决实际问题的程序实验内容设计一个程序,输入正五边形的边长的长度a,按公式计算该五边形外接圆的半径。设计一程序,输入空间中两点的坐标x1,y1,z1和x2,y2,z2计算两点之间的距离。编写一个C程序,输入一个3位整数,分别输出百位数、十位数和个位数。,实验五选择结构基础,实验目的掌握选择控制语句掌握正确使用逻辑运算符和逻辑表达式实验内容编写程序输入四个整数,要求输出最小的一个。编写程序判断体重。体指数(t)=体重(w)/身高2(h)其中,t=27时为肥胖。分别用ifelseif语句和switch语句编写书P58,实验六选择结构的使用,实验目的练习根据具体问题,利用选择控制语句编写程序实验内容有一人过独木桥,到桥中间时看见前面有狼,后面有虎,底下是深深的河水。编程写出此人的最后结局。从键盘输入3个数,判断能否构成三角形,若能构成三角形,计算以这3个数为边长的三角形面积;否则,输出相应的提示信息。编写一个程序,输入某学生成绩,若成绩在85分以上,则输出“VeryGood”,若成绩在60分到85分之间,则输出“Good”,若成绩低于60分,则输出“Bad”。编写程序,读入一个年份和月份,打印出该月有多少天,实验七循环结构的实现,实验目的掌握三种基本循环语句注意循环条件的控制实验内容请分别用while语句和do-while语句编程求的值请分别用while语句和do-while语句编程求12/(1+1)+22/(2+1)+32/(3+1)+n2/(n+1)输入一个字符串,将其中的空格和数字删除后输出,实验八循环结构应用,实验目的掌握在程序设计中用循环的方法编写程序实现各种算法实验内容编写程序求出满足不等式1+2+3+n500的最大n值及总和。编程实现求数列1/2,3/4,5/8,7/16的所有大于等于0.000001的数据项之和,显示输出计算结果。编程找出1000以内的完数。所谓完数是它等于它的因子之和。如:6=1+2+3。,实验九综合训练,实验目的掌握用顺序结构、选择结构、循环结构编写程序,解决实际问题掌握程序的调试方法实验内容求100200之间的素数。求20+21+22+263。完成P5558的练习。,实验十上机测试,实验目的综合测验实验内容编写一个程序,能显示两行文字。已知三角形的两个边长A,B和其夹角,求三角形的面积S。输入圆的半径R和一个整数K,K=1时,计算圆的面积;当K=2时,计算圆的周长;当K=3时,既要求面积也要求周长。编程实现以上功能。编写程序,求1-3+5-7+9-99+101的值。,实验十一一维数组的使用,实验目的掌握一维数组的定义、赋值和输入输出方法;掌握一维数组的基本用法。实验内容1.用筛法求100以内的素数。2.编写一个程序,计算若干学生的某门功课的平均成绩、标准差,找出最高分和最低分。3.编写一个程序,让计算机产生20个随机数,用选择法排序。4.根据上题的内容1,编一程序在数组中查找一个数。要求:若有该数,则输出该数,否则输出找不到的信息;用顺序查找实现;用折半查找实现。,实验十二一维数组,实验内容1、根据实验11中的内容3,编写一程序删除指定的一个数。2、根据实验11中的内容3,编写一程序插入一个指定的数,插入后,数组仍然有序。3、完成C语言复习中第六章的练习题(选择、填空),实验十三二维数组的使用,实验目的掌握二维数组的定义、赋值和输入输出的方法。练习用二维数组解决实际问题。实验内容1找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有“鞍点”。要求用随机函数生成数据。2使用二维数组,打印杨辉三角形前10行。3编写程序,将一个55的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(按从左到右、从上到下的顺序,依次从小到大存放。4编写程序,用随机函数产生一个二维迷宫(用0表示通道,1表示隔墙),实验十四字符数组与字符串函数的使用,实验目的掌握字符数组和字符串函数的使用实验内容1、编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中。(不能使用strcpy函数。)2、有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。3、有n个字符串,要求找出其中最大和最小的字符串。,实验十五编程实现非数值信息的处理,实验目的进一步掌握字符数组的使用;了解非数值信息的处理;初步了解排序算法。实验内容1、有n个字符串,要求按字母顺序从小到大对其排序。2、编写一个程序,解决骑士周游世界问题。在国际象棋中,马的走步是“L”形(相当于中国象棋中的马走日),如上图。那么,马从国际象棋盘(棋盘为88=64格)上的某一点出发,能否跳遍全棋盘,且每个方格只跳过一次?试打印出马的路线。,实验十六排序问题,实验目的掌握选择法排序的思想掌握冒泡法排序的思想掌握插入法排序的思想实验内容1编一程序,对n个整数用选择法排序(从小到大);2编一程序,对n个整数用冒泡法排序(从大到小);3编一程序,输入若干学生某门功课的成绩,计算平均分、标准差,并按从高分到低分的顺序排列(用插入法排序)。,实验十六常用算法,实验目的掌握查找的常用算法(顺序查找、折半查找)掌握在数组中删除一个元素或插入一个元素的算法实验内容1、根据实验15中的内容1,编一程序在数组中查找一个数。要求:若有该数,则输出该数,否则输出未找到的信息;用顺序查找实现;用折半查找实现。2、根据实验内容1,编写一程序删除指定的一个数。3、根据实验内容1,编写一程序插入一个指定的数,插入后,数组仍然有序。,实验十七函数的定义与调用,实验目的掌握定义函数的方法;掌握函数的调用方法;掌握函数实参和形参的对应关系;实验内容1、写一个判断素数的函数。要求:在主函数中输入一个整数并输出是否素数的信息;用自定义函数判断此数是否素数;测试数据:17、34、2、1、0、49、39。2、编一个函数,其功能是:求高于平均分的人数,并作为函数值返回。要求:学生的成绩放在student数组中;在主函数中输入学生的成绩,用-1结束成绩的输入;在主函数中输出高于平均分的人数;测试数据:78、34、65、86、54、76、65、48、29、9487、46、88、71、68、60、83、92、57、5169、89、79、39、55、44、21、99、96、703、P103第三题的第三小题。,实验十八函数实参、形参的结合及递归调用,实验目的进一步掌握函数的实参与形参的结合;掌握函数的递归调用;实验内容1、用递归法求n阶勒让德多项式的值,递归公式为:2、运行汉诺塔程序3、写一个函数,使输入的一个字符串反序存放。,实验十八函数实参、形参的结合及递归调用,实验内容2、编辑调试下列程序:voidmove(charx,chary)printf(“%c%cn”,x,y);voidHanoi(intn,charone,chartwo,charthree)if(n=1)move(one,three);elseHanoi(n-1,one,three,two);move(one,three);Hanoi(n-1,two,one,three);main()intm;printf(“inputthenumberofdiskes:”);scanf(“%d”,测试用例:4,10。,实验十九模块化程序设计的综合练习(上),实验目的综合掌握程序的控制结构和数组;进一步学习模块化程序设计;实验内容1、有一行原文,请按下面规律译成密码:AZaz,BYby,CXcx,即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。非字母字符不变。要求:在主函数中输入电文;写一个函数将密码译回原文;在主函数中输出密码和原文;测试用例:Iamastudent,youareateather.2、有n位学生,每个学生有m门功课,请编写程序解决:在主函数中定义数组;写一个enter函数输入学生的成绩;写一个sort函数,按总成绩对数组排序;写一个print函数输出成绩表,每行输出一位学生的成绩。,实验二十模块化程序设计的综合练习(下),实验目的进一步掌握模块化程序设计的思想;阶段考核实验内容1、编写一个程序,解决以下问题:n个人围成一圈,从第一个人开始顺序报数1、2、3。凡是报到“3”的人退出圈子。找出最后留在圈子中的人的原来的序号。测试用例:15、22、39。2、用递归方法求n阶勒让德多项式的值,递归公式为:3打印杨辉三角形,要求:用自定义函数输出三角形;输出行数由用户自行决定。,实验二十一多文件程序的编辑、编译及运行,实验目的掌握在TC下如何编辑、编译运行一个多文件程序实验内容编写一段程序,用来实现10个学生成绩的输入、求和、求平均分,分别用三个函数来实现。将三个函数分别存为三个独立的程序文件,名称分别是f1.c、f2.c和f3.c在编译状态下,建立一个“项目文件”,名称为f,将以上三个程序文件放入项目文件中并存盘。编译执行,并得出结果。,实验二十二预处理命令的使用,实验目的掌握预处理命令(重点是宏定义)的使用方式,并用预处理命令来解决实际问题实验内容编译执行下列程序,体会宏定义的用法:#include#defineP2#definePOWER(x)P*x*xmain()intx=1,y=2;printf(“%d,%d”,POWER(x+y),POWER(y+x);编写一段程序,用来求两个数的最小值,其中用来求最小值的部分用宏定义来实现。编写完成后编译执行。有以下程序,将其格式输出部分改写成宏定义后并添加到format.h头文件中,编写完成后编译执行。#definePRprintf#defineNL“n”#defineF“%36.3f”#defineF1FNL#defineF2FFNL#defineF3FFFNL,main()floatx,y,z;x=1.2;y=2.3;z=3.4;PR(F1,x);PR(F2,x,y);PR(F3,x,y,z);,实验二十三指针和指针变量的使用,实验目的掌握指针的概念,要求会定义和使用指针变量;了解指向指针的概念及其使用方法;实验内容编制交换整型变量值的函数swap()。函数swap()的功能是交换两个整型变量的值,函数swap()设有两个指向整型变量的指针参数,函数利用指针参数间接访问变量。调用swap()函数时,两个参数分别是两个待交换值得整型变量的地址。编写程序,用指针来实现数组的输入和输出。数组定义如下:a10=1,2,3,4,5,6,7,8,9,0用指针编写一个程序,解决以下问题:n个人围成一圈,从第一个人开始顺序报数1、2、3。凡是报到“3”的人退出圈子。找出最后留在圈子中的人的原来的序号。测试用例:15、22、39。,实验二十三指针和指针变量的使用,输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:输入10个数;对换处理;输出10个数。有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。写一函数实现上面的功能,在主函数中输入n个整数和输出调整后的n个数。有一个班5个学生,5门课程。求第一门课的平均成绩;找出有2门以上课程不及格的学生,输出他们的学号和全部课程成绩和平均分;找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编写3个函数实现以上3个要求。,实验二十四用“数组指针”和“字符串指针”解决实际问题,实验目的掌握数组指针和字符串指针二者的概念和联系;学会使用字符串的指针的指向字符串的指针变量;学会使用数组的指针和指向数组的指针变量;学会使用指向函数的指针变量;实验内容编制实现对整型数组前n个成分求和的函数sun()。编写一函数,将字符串按照顺序的逆序存放,并在主函数中从键盘输入该字符串(字符串长度不超过30),输出其逆序结果。下面的程序是用来完成将一个33的矩阵进行转置。将程序补充完整并调试通过。main()inta33,*p,i;printf(“请按行输入33的矩阵:n”);for(i=0;i3;i+)scanf(“%d%d%d”,趣味小程序,编写一个程序,用随机数发生器生成句子。程序中要使用以下4个char类型的指针数组:article、noun、verb、preposition。每个数组指向一组单词。程序按以下顺序抽取单词:article、noun、verb、preposition、article、noun。抽取的单词放入一个足够大的字符型数组(用于存放句子)中,每抽取一个单词,放到前一个单词的后面,单词中间用空格分隔。最后输出整个句子。输出时,第一个字符要大写,最后要有句号。冠词article指向:“the”,“a”,“one”,“some”,“any”名词noun指向:“boy”,“girl”,“dog”,“town”,“car”动词verb指向:“drove”,“jumped”,“ran”,“walked”,“skipped”介词preposition指向:“to”,“from”,“over”,“under”,“on”用上述程序生成20个句子并调试运行。修改上述程序,使其能够生成一个小故事。,趣味小程序,洗牌和发牌模拟用intdeck413表示一副牌,其中03行分别表示红心、方块、梅花和黑桃,012列分别表示A、2、K;用char*face13表示牌面点数,记录A、2、K;用char*suit4表示牌面花色,记录红心、方块、梅花和黑桃;洗牌步骤:首先把数组deck清0;然后,随机地从03中选择一行(row),从012中选择一列(column)。把数1插入到deckrowcolumn中,表示这张牌将是从洗好的牌中发出的第一张牌;继续这个过程,把数2、3、52随机地插入到数组deck中,表示从洗好的牌中发出的第2、第3、第52张牌。在把发牌序号插入到数组deck中的过程中,一张牌被选择两次以上是可能的,第二次及以后的选中应该忽略,因此第二次及以后选中时,应重新随机得到row、column本算法效率低下,请重新设计算法,提高效率。,实验二十五结构体数据类型的定义和应用,实验目的掌握结构体的定义方式和使用,并可以地用结构体来处理一些简单问题;掌握结构体类型变量的定义和使用;掌握结构体类型数组的概念和应用。实验内容从键盘输入10个人的姓名和年龄并存到结构数组中,编写程序从中查找年龄最大和最小的人的姓名和年龄,并输出。利用结构体来实现一个简单的数据库,该数据库可以完成添加、按序号查询、显示等功能。下面将该程序的主函数部分给出,要求学生将给出自定义函数补充完整,并在机器上调试通过。#include#include#includevoidadd(void);/*向数据库中添加记录*/voidquery(void);/*按指定的序号查找相应的记录*/voidlistall(void);/*列出数据库中的全部记录*/voidlist(intn);/*列出给定序号的记录*/structemployeeintno;/*序号*/charname15;/*姓名*/charphone12;/*电话号码*/intage;;/*年龄*/,实验二十五结构体数据类型的定义和应用,实验内容(续)intindex;structemployeerecord20;main()charch;system(“cls”);while(1)printf(“n1.Enternewemployeen”);printf(“2.Queryemployeen”);printf(“3.Listalln”);printf(“4.Quitn”);printf(“Select:”);ch=getchar();,实验内容(续)switch(ch)case1:add();break;case2:query();break;case3:listall();break;case4:exit(0);default:break;,实验二十六单链表的建立和操作,实验目的在掌握指针和结构体的基础上学习单链表的使用,让学生初步掌握基本数据结构的操作方法;掌握链表的概念,初步学会对链表进行操作。实验内容建立一个包含学生信息的单链表,要求包含三个学生,每个学生具有学号、姓名、成绩三项基本信息。在以上单链表中再加入一个学生。将一个链表按逆序排列,即将链头当链尾,链尾当链头。,实验二十七综合练习,实验目的在前面学习的基础上,要求学生掌握C的综合使用;复习C语言中最基本的结构,如数组、函数、指针、结构体等。实验内容编程实现,从终端输入名字表,然后按字符串从小到大顺序排序名字表,最后输出排序后的名字表。将一个55的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(按从左到右、从上到下的的顺序,依次从小到大存放),编程实现。,实验二十八上机测试,测试内容编程实现从键盘输入以字符串,要求将每个单词中的第一个字母改写成大写字母(如果原来已经是大写字母则保持不变)然后输出转换结果。利用指针数组实现,在主函数中输入10个等长的字符串,用另一个函数对它们进行排序,然后在主函数中输出已排好序的字符串。请详细说明实现上述两题的基本思想和算法。,实验二十九文件的基本操作,实验目的掌握文件的基本使用;掌握基本文件库函数的用法;掌握文件以及缓冲文件系统、文件指针的概念。实验内容编程实现从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到磁盘文件“test”中保存。输入的字符串以“!”结束。先有两个文件A和B,文件A存放的信息是“QingHaiUniversity”,文件B中存放的信息是“”,现要求将这两个文件中的信息进行合并,最后输出“QingHaiUniversityIamastudent”,并存放到文件C中去。,实验三十用文件实现一个具体的应用,实验目的通过编制该程序让学生初步掌握用C语言文件来实现具体的应用程序的开发;进一步熟悉如何利用文件进行世纪应用程序开发的技巧。实验内容有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生学号、姓名、三门课的成绩),要输入的5个学生的信息如下:99101Wang89,98,67.599103Li60,80,9099106Fun75.5,91.5,9999110Ling100,50,62.599113Yuan58,68,71现编程实现以下操作:计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud。将stud文件中的学生数据按平均分进行排序处理,并将已排序的学生数据存入一个新文件stud_sort中。在已排好序的学生成绩中插入一个学生的3门课成绩,实现方法如下:先计算新插入学生的平均成绩,然后将它按平均成绩高低顺序插入,插入后建立一个新文件new_sort。要插入的学生的数据如下:99108Xin90,95,60,
展开阅读全文