C语言实训计划指导书.docx
- 文档编号:13583840
- 上传时间:2023-06-15
- 格式:DOCX
- 页数:40
- 大小:33.71KB
C语言实训计划指导书.docx
《C语言实训计划指导书.docx》由会员分享,可在线阅读,更多相关《C语言实训计划指导书.docx(40页珍藏版)》请在冰点文库上搜索。
C语言实训计划指导书
《C语言程序设计》实训指导书
郭莹编写
前言
C语言是功能很强,应用面广,使用灵活的一种语言。
用它不仅可以实现其他高级语言所实现的功能,编写出应用程序,而且还能调用系统的功能,实现对硬件的操作。
本实训除了使学生熟悉C语言的一般应用外,重点介绍后一方面的应用,旨在使学生得以提高及扩展知识,为今后的工作打下初步基础。
本实训中将C语言的一般应用概括为以下几个问题:
1、查找最值问题
2、数学问题
3、数学应用题
4、字符串问题
5、统计问题
6、排序问题(插入数值、删除数值、逆序排列)
7、成绩问题
8、链表处理
9、文件处理
另外本实训将指导学生完成以下综合应用实例:
10、简单的数据库管理
11、简单的弹出式菜单
12、用C语言编制画图程序
实训一查找最值问题
一、目的和要求
1、掌握查找最小数或最大数的方法;
2、掌握两个数间的最值问题;
3、掌握三个数以上的最值问题。
二、实验原理
1、两个数a,b进行最值比较可以利用if语句或?
:
表达式语句实现。
格式如下:
if(a>b)max=a;elsemax=b;
max=(a>b)?
a:
b;
2、三个以上的数字a,b,c,d……进行最值比较,要分步实现,简化为两个数的最值比较问题,即先比较前面两个数字的最值,再用最值和后面一个数字比较最值,以此类推。
格式如下:
if(a>b)max=a;elsemax=b;if(max 三、实验内容和步骤 1、下面的程序功能是求出任意两个数的最小值,填空完成程序。 1#include 2main() 3{floata,b,c; 4printf(“pleaseinputtwonumber); 5scanf(“___”,&a,&b); 6if(a 7elsec=b; 8printf(“thesmalleris_____”,c); 9} 调试无语法错误后,分别使用下列测试用例对上述程序进行测试: (1)1.51.98 运行结果: ____________________________ (2)-86 运行结果: ____________________________ (3)330005555.55 运行结果: ____________________________ 2、下面的程序功能是按照由小到大的顺序输出任意三个数,填空完成程序。 1#include 2main() 3{floata,b,c,t; 4scanf(“%f%f%f”,_________); 5if(a>b){t=a;a=b;b=t;} 6if(a>c){t=a;a=c;c=t;} 7if(b>c){t=b;b=c;c=t;} 8printf(“%5.2f,%5.2f,%5.2f”,___________);} 调试无语法错误后,分别使用下列测试用例对上述程序进行测试: (1)1.51.98-1.2 运行结果: ____________________________ (2)-860.5 运行结果: ____________________________ (3)330005555.550.99999 运行结果: ____________________________ 3、下面的程序功能是从一个3行4列的矩阵中找出最小的那个元素的值,以及其所在的行号和列号,填空完成程序。 1main() 2{inti,j,row=0,colum=0,min; 3inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; 4min=a[0][0]; 5for(i=0;i<=2;i++) 6for(j=0;j<=3;j++) 7if(____________________) 8{min=a[i][j]; 9row=i; 10colum=j;} 11printf(“min=%d,row=%d,colum=%d\n”,min,row,colum);} 输出结果为: _______________________________________。 四、分析讨论 1、程序1的第6行和第7行可以用条件表达式_____________________代替。 2、假设a,b,c,d均为整型,以下语句借助于中间变量t把a,b,c,d的值进行交换,即把b中的值给a,把c中的值给b,把d中的值给c,把a中的值给d。 填空: ________________________________________________。 3、若有inti,j;对于一个二维数组a[5][6],若要显示第3行的所有元素(从第0行计数),引用语句为______________________________________。 五、进一步实验 编程实现找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。 也可能没有鞍点。 实训二数学问题 一、目的和要求 1、学会利用C语言程序解决数学问题; 2、熟悉常用数学函数的作用及用法; 3、熟练掌握条件语句及循环控制等语句。 二、实验原理和程序算法 1、C语言系统提供了很多标准函数即库函数,用户不必关心这些函数的构成可以直接使用它们。 调用格式: #include“math.h”或#include“stdio.h”。 2、数a判断条件a%2==0,奇数判断条件: a%2==1。 3、和的做法sum+=t;通过循环语句改变加数t,不断增加sum的值。 三、实验内容和步骤 1、调用库函数,求以下的函数值: 1.cos3.56782)lg903)e2.5674) 5)tan0.78563 1) a)#include“math.h” b)main() c){floatc; d)c=cos(3.5678); e)printf(“c=%10.7f\n”,c);} 运行结果: _____________________ 参考库函数说明,完成其他程序,第4行分别表示为: 2)____________________________运行结果为: _________________ 3)____________________________运行结果为: _________________ 4)____________________________运行结果为: _________________ 5)____________________________运行结果为: _________________ 2、下程序能够求出0~100之间全部偶数之和。 1main() 2{intm,sum; 3sum=0; 4for(m=0;m<=100;________) 5______________________________ 6printf(“sum=%d\n”,sum);} 运行结果为: __________________________ 3、用 公式求π的近似值,直到最后一项的绝对值小于10-4为止。 1#include“math.h” 2main() 3{ints; 4floatn,t,pi=0; 5t=n=s=1.0; 6while(fabs(t)>=1e-4) 7{pi=pi+t; 8n+=______; 9s=-s; 10t=________;} 11pi*=4; 12printf(“pi=%f\n”,pi);} 运行结果为: _____________________________________________________ 4、打印形状为直角三角形的九九表。 1 24 369 481216 510152025 61218243036 7142128354249 816243240485664 91827364554637281 1main() 2{inti,j,k; 3printf(“*”); 4for(i=1;i<10;i++) 5printf(“%4d”,i); 6printf(“\n”); 7for(j=1;j<10;j++) 8{printf(“%2d”,j); 9for(k=1;k<=j;k++) 10printf(“%4d”,______); 11printf(“\n”);}} 12 四、分析讨论 总结循环语句的不同类型和用法。 五、进一步实验编程求 实训三数学应用题 一、目的和要求 1、通过简单数学应用问题的解决,建立利用C语言解决实际问题的初步认识; 2、掌握基本语句的应用,以及特类问题的常用算法。 二、实验内容和步骤 1、输入矩形的两条边长,求矩形的面积。 1#include“stdio.h” 2main() 3{floata,b,area; 4scanf(“%f,%f”,&a,&b); 5area=a*b; 6printf(“a=%f,b=%f,area=%f\n”,a,b,area);} 调试无语法错误后,分别使用下列测试用例对上述程序进行测试: (1)1.2,3.6运行结果: ____________________________ (2)160,55运行结果: ____________________________ 2、以下程序能够判断任意年份是否闰年。 1main() 2{intyear,leap; 3scanf(“%d”,&year); 4if(_____________________________________________)leap=1; 5elseleap=0; 6if(______)printf(“%dis”,year); 7elseprintf(“%disnot“,year); 8printf(“aleapyear.\n”);} 调试无语法错误后,分别使用下列测试用例对上述程序进行测试: (1)1996运行结果: ____________________________ (2)2000运行结果: ____________________________ (3)2003运行结果: ____________________________ 3、递增的牛群: 若一头小母牛,从第四年开始每年生一头母牛,按此规律,第n年时有多少头母牛。 i.main() ii.{ iii.inti,year,f,f1,f2,f3; iv.printf(“enteryear: ”); v.scanf(“%d”,&year); vi.for(i=1;i<=year;i++) vii.{if(i<4)f=f1=f2=f3=1; viii.else{________________________________} ix.printf(“i=%2d,n=%3d\n”,i,f);}} 调试无语法错误后,分别使用下列测试用例对上述程序进行测试: (1)5运行结果: ____________________________ (2)7运行结果: ____________________________ 4、换零钱。 把一元钱全兑换成硬币,有多少种兑换方法。 1main() 2{inti,j,k,n; 3n=100; 4k=0; 5for(i=0;i<=n/5;i++) 6for(j=0;___________;j++) 7{printf(“5cent=%d\t2cent=%d\t1cent=%d\n”,i,j,n-i*5-j*2); 8k++;} 9printf(“totaltimes=%d\n”,k);} 记录运行结果,其中totaltimes=_____________。 三、分析讨论 1、if(leap==1)可以等价为if(__________)或if(______________);if(leap==0)可以等价为if(________________)或if(_____________)等。 2、总结在printf函数中可以使用的各转义字符及其功能。 四、进一步实验 从键盘输入三个数,让它们代表三条线段的长度。 请写一个判断这三条线段所组成的三角形属于什么类型(不等边、等腰、等边或不能构成三角形)的C语言程序。 实训四字符串问题 一、目的和要求 1、学会利用C语言程序给字符串加密和解密; 2、学会利用C语言程序给字符串插入或删除指定字符; 3、熟悉常用的字符、字符串函数。 二、实验原理和程序算法 1、字符在计算机系统中的存放方式是ASCII码,用特定的ASCII码值代表特定字符。 A~Z: (65-90),a~z: (97~122) 2、字符串可以通过字符数组组织起来,例如: a[30]=”student”;通过数组下标分别引用各个元素。 3、常见的字符函数有putchar(),getchar(),字符串函数有puts(),gets(),strcpy(),strcmp(), strlen(),strlwr(),strupr()等。 三、实验内容和步骤 1、为了使电文保密,往往按照一定规律将其转换成密码,收报人再按照约定的规律将其译回原文。 例如有以下规律: 将A变成E,a变成e,即变成其后第4个字母,W变成A,X变成B,Y变成C,Z变成D。 任意输入一个字符串对其加密,完成程序。 1、#include 2、main() 3、{charc; 4、printf(“pleaseinputastring: \n”);/*请输入一个字符串*/ 5、while(c=getchar()! =’\n’) 6、if(c>=’a’&&c<=’z’||c>=’A’&&c<=’Z’) 7、{c=_____________; 8、if(c>’Z’&&c<=’Z’+4||c>’z’)_____________;} 9、printf(“%d”,c);}} 调试无语法错误后,分别使用下列测试用例对上述程序进行测试: (1)student运行结果: ____________________________ (2)holidy运行结果: ____________________________ 2、编写一个函数del_str(chara[],charb[],intn),实现将指定位置的字符删除。 1、intLen=10; 2、voiddel_str(chara[],charb[],intn) 3、{inti,j=0; 4、for(i=0;i 5、if(_______________) 6、{___________________; 7、__________________;}} 8、#include 9、main() 10、{charstr1[10],str2[10]; 11、intn; 12、printf(“enterthestring: ”); 13、gets(str1); 14、printf(“enterthepositionofthestringdeleted: ”); 15、scanf(“%d”,&n); 16、del_str(str1,str2,n); 17、printf(“thenewstringis: %s”,str2); 调试无语法错误后,分别使用下列测试用例对上述程序进行测试: (1)student3运行结果: ____________________________ (2)happyholidy5运行结果: ____________________________ 3、输入三个字符串,要求找出最大者,完成程序。 1、#include 2、main() 3、{charmax[20]; 4、charstr[3][20]; 5、inti; 6、for(i=0;i<3;i++) 7、gets(str[i]); 8、if(strcmp(str[0],str[1])>0)____________________; 9、else__________________________; 10、if(_____________________)strcpy(max,str[2]); 11、printf(“\nthelargetstringis: \n”,max);} 调试无语法错误后,分别使用下列测试用例对上述程序进行测试: (1)studentteacherstudy运行结果: ____________________________ (2)englishmathcprogram运行结果: ____________________________ 四、分析讨论 1、程序1的第8行,完成什么功能____________________________。 2、字符数组长度若为10,当从键盘输入多于10个字符时,系统如何处理。 3、如何引用一维数组、多维数组以及字符数组? 4、总结常用字符、字符串函数的用法。 五、进一步实验 1、有一行文字,要求删去某个字符。 此行文字和要删去的字符均由键盘输入,要删 去的字符以字符形式输入。 2、设计两个函数strupr(charstr[])和strlwr(charstr[])将一个字符串中的字母全部变成大写或小写。 实训五统计问题 一、目的和要求 1、学会利用C语言程序针对给定条件进行各类统计; 2、学会利用C语言程序给字符串插入或删除指定字符; 二、实验原理和程序算法 统计问题记载即查找整个范围,对满足条件的项目进行统计,一般要用到if条件语句和计数器变量。 三、实验内容和步骤 1、统计100以内的全部素数个数并逐个输出。 1、#include 2、main() 3、{intm,k,i,num=0; 4、for(m=3;m<100;m+=2) 5、{k=_______________; 6、for(_________;i<=k;i++) 7、if(m%i==0)break; 8、if(_________){printf(“%d”,m);num++;} 9、if(n%10==0)printf(“\n”);} 调试无语法错误后,运行结果: ____________________________ 2、输入一行字符,统计其中有多少个单词,单词之间用空格隔开。 10、#include 11、main() 12、{charstring[81]; 13、inti,num=0,word=0; 14、charc; 15、_______________________;/*从键盘接收一个字符串*/ 16、for(i=0;(c=_____________)! =’\0’;i++) 17、for(c==’‘)word=0; 18、elseif(word==0) 19、{word=1; 20、num++;} 21、printf(“Thereare%dwordsintheline.\n”,num);} 调试无语法错误后,分别使用下列测试用例对上述程序进行测试: (1)iamastudent.运行结果: ____________________________ (2)icanusecomputerwell.运行结果: _________________________ 四、进一步实验 从键盘人一输入一个整数,求出其中0的个数和最大的数字。 实训六排序问题 一、目的和要求 熟练掌握C语言程序的各种排序方法。 二、实验原理和程序算法 1、起泡法排序原理: 将相邻两个数比较,将小的调到前头。 2、选择法排序原理: 将所有数中的最小数放到第一个位置,再从剩下的数中找出最大数放到第二个位置,以此类推。 三、实验内容和步骤 1、用起泡法对10个数排序(有小到大),完成程序。 1、main() 2、{inta[10]; 3、inti,j,t; 4、printf(“input10numbers: \n”); 5、for(i=0;i<10;i++) 6、scanf(“%d”,&a[i]); 7、printf(“\n”); 8、for(j=1;j<=9;j++) 9、for(i=0;_______________;i++); 10、if(____________________) 11、{t=a[i];a[i]=a[i+1];a[i+1]=t;} 12、printf(“thesortednumbers: \n”); 13、for(______________;________________;i++); 14、printf(“%d”,a[i]);} 调试无语法错误后,分别使用下列测试用例对上述程序进行测试: (1)2304167895运行结果: ____________________________ (2)9753124680运行结果: ____________________________ 2、用选择法对数组中10个整数按由小到大排序。 编写sort(intarray[],intn)函数实现此功能。 1、voidsort(intarray[],intn) 2、{inti,j,k,t; 3、for(i=0;__________;i++) 4、{k=i; 5、for(_____________;j 6、if(__________________)k=j; 7、{t=array[k];array[k]=array[i];array[i]=t;} 8、main() 9、{inta[10],i; 10、printf(“enterthearray: \n”); 11、for(_______________________)/*从键盘输入10个数字存入a数组*/ 12、scanf(______________________________); 13、sort(_______________________);/*函数调用*/ 14、printf(“thesortedarray: \n”); 15、for(_______________________________)/*输出数组*/ 16、printf(______________________); 17、printf(“\n”);} 调试无语法错误后,分别使用下列测试用例对上述程序进行测试: (1)2304167895运行结果: ____________________________ (2)9753124680运行结果: ______________________
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 计划 指导书