• / 32
  • 下载费用:12 金币  

C语言学习实训指导计划.doc

关 键 词:
语言 学习 指导 计划
资源描述:
高 等 职 业 技 术 学 校C语言程序设计实训实 践 教 学 指 导 书(适用于电气专业)宜 宾 职 业 技 术 学 院2015.01宜 宾 职 业 技 术 学 院C语言程序设计实训实 践 教 学 指 导 书适用于电气专业 制定人:刘铭煊一、实践教学的地位与作用实践作为教学的一个重要环节,其目的在于更深入地理解和掌握课程教学中的有关基本概念,应用基本技术解决实际问题,从而进一步提高分析问题、解决问题的能力。本实践教学是为了配合《C语言程序设计》理论教学的需要,帮助学生理解理论知识、掌握C语言具体的上机操作步骤与方法,培养学生理论与实践相结合、提高学生实际动手的能力,并学会应用所学知识解决实际问题。二、实践教学的目标与基本要求通过对C语言程序设计实践教学应达到以下目标和要求:1、熟悉TC开发环境应用,掌握在TC下编辑、编译、调试、运行C程序的方法2、掌握C语言标识符、数据类型、运算符、表达式等的基本应用3、掌握顺序结构、选择结构、循环结构的应用4、掌握一维数组、二维数组的应用及其相关算法的应用5、掌握函数的应用6、了解指针在C语言实际编程中的基本应用7、了解预处理和结构体与共用体的应用8、能够对程序进行基本的程序调试,并能够多常见的错误进行处理9、综合应用三、实践教学组织、场地、主要设备器材及性能简介教学组织: 本课程的实践教学由任课教师依据教学进度组织,一人一机,加强练习教学场地:图形设计室设备器材:PⅢ以上计算机、安装TC 2.0四、实践教学项目及教学目标、要求序号实践教学项目名称学时项目(单元)教学目标、要求单元名称细化项目名称1C语言基本语法C语言环境搭建及基本语法41、TC下编辑、编译、调试和运行C程序的方法 2、C程序的基本结构3、C语言语法基础顺序程序结构41、顺序结构的应用2、模块化设计思想的应用3、数据输入输出应用选择程序结构41、if语句的应用2、switch语句的应用循环程序结构41、for语句的应用2、while语句的应用3、do-while语句的应用2C语言高级应用一维数组应用41、一维数组的定义和使用2、经典算法的应用二维数组应用41、二维数组的定义和使用2、经典算法的应用函数41、函数的定义和使用2、参数的定义和传值3、函数的调用指针41、指针的基本定义2、指针的基本运算3综合应用综合练习8综合运用C语言基础知识进行C程序的开发应用合  计40五、项目指导项目一:C语言环境搭建及基本语法实验目的:a、掌握C语言开发环境的搭建与配置;b、掌握TC环境下如何进行编辑、编译、调试、运行C程序;c、理解C语言的基本结构;d、掌握C语言基本语法的应用;实验要求:a、掌握TC开发环境的搭建和配置;b、在实践程序开发中,如果进行编辑、编译、调试、运行C程序;c、在实践程序开发中C语言基本语法的应用;d、分工协作能力、语言表达能力、创新能力、分析理解能力、实训操作能力; e、可以使用的计算机40台(Windows 2000 Server系统)实验内容和步骤:项目1.Turbo C集成编译环境的基本应用a、 启动、退出Turbo C集成开发环境。(1) 启动Turbo C集成开发环境。如Turbo C集成开发环境安装位置(路径)为:C:\TC,则:C:\>c:\tc\tc<回车> 启动Turbo C集成开发环境。(2) 退出Turbo C集成开发环境。File-Quit 退出Turbo C集成开发环境(3) 再次启动Turbo C环境。C:\>c:\tc\tc<回车>b、 Turbo C环境中,F5/F6;F10,→、←、↑、↓功能键;Alt+高亮度键的效果和作用。(1) 重复按F6键,仔细观察。当前激活窗口在编辑窗口、消息窗口之间切换。(2) 重复按F5键,仔细观察。当前激活窗口最大,正常状态之间切换。(3) 先按F10,可以看到主菜单被激活,按→、←,主菜单各个项被依次激活,试着按↑、↓可以打开相应菜单。重点浏览File(文件管理)、Run(程序运行控制)、Compile菜单(程序编译、连接)菜单。最后按ESC键光标回到编辑窗口。(4) 主菜单各个项,首字母为红色(高亮度)。可以按Alt+高亮字母,直接激活相应菜单选项。例如按Alt+F激活File菜单,比F10再按光标快捷多了!按ESC键光标回到编辑窗口。(5) 观察当前源程序名NONAME.C表示当前的程序还没有取名字,以后保存程序时,系统会提示输入源程序名。c、 按照下面步骤完成第1个程序题。(1) “File”-“New”创建一个新的源程序文件(2) 输入源程序,全屏幕编辑源程序。(3) “File”-“Save”保存源程序(文件名应按题目要求)。观察编辑窗口源程序名是否已经修改。用Windows资源管理器查看用户目录中是否产生了源程序文件*.c。(4) “Compile”-“Build all”编译、连接源程序。如果有语法错误,修改源程序后再次编译、连接程序,直到没有语法错误,系统提示成功。(5) “Run”-“Run”运行程序,用Alt-F5切换到用户屏幕查看运行结果。对比结果是否与预期相同。如果发现逻辑错误-结果与预期不同,修改源程序,重复(3)-(5)保存、编译、运行程序,直到程序获得正确结果。注意:n 必须顺序完成程序编辑、编译连接、运行的各个过程。没有正确编译成功的程序是不可能运行的!n 程序开发中经常用“File”-“Save”保存源程序以免意外导致源程序丢失。d、编写并执行书上的实例。项目2.C语言基础语法练习写出一个程序测试整型、字符型数据表示,并输出以验证是否正确。参考代码:main(){int x=010,y=10,z=0x10; /* 整型数据表示 */char c1='M',c2='\x4d',c3='\115',c4=77,c; /* 字符型数据表示 */ /* 整型数据的输出 */printf("x=%o,y=%d,z=%x\n",x,y,z);/* 数据以原进制输出,注意是否有前导0或0x */printf("x=%d,y=%d,z=%d\n",x,y,z); /* 数据以10进制输出,换算到10进制,结果对吗? *//* 字符型数据的输出 */printf("c1=%c,c2=%x,c3=%o,c4=%d\n",c1,c2,c3,c4); /* 数据以原进制输出,注意是否有前导0或0x */printf("c1=%c,c2=%c,c3=%c,c4=%c\n",c1,c2,c3,c4); /* 结果都是什么字符?,也就是说字符可以自由的表示成几种形式? */printf("c1=%d,c2=%d,c3=%d,c4=%d\n",c1,c2,c3,c4); /* 看看这些字符的10进制ASCII码,哦,ASCII码一样,同一种字符 */ /* 字符型数据参与算术运算 */c=c1+32; /* 字符怎么参加了数学运算,哦,是字符对应的ASCII码-整数/* 参与数学运算;结果还是一个整数-另外一个字符的ASCII码 */printf("c=%c,c=%d\n",c,c); /* 看看这个字符是什么?哇,'M'+32='m'了,看看ASCII码表,原来如此! */}参考结果:x=10,y=10,z=10x=8,y=10,z=16c1=M,c2=4d,c3=115,c4=77c1=M,c2=M,c3=M,c4=Mc1=77,c2=77,c3=77,c4=77c=m,c=109项目3.C语言基础语法练习常见预定义的转义字符对输出的控制作用。参考代码:main(){ int a,b,c; a=5,b=6,c=7; printf("12345678123456781234567812345678\n"); /* 打印一个标尺以便检查输出结果 */ printf("%d\n\t%d %d\n %d %d\t\b%d\n",a,b,c,a,b,c); /* 打印1个字符串 */ printf("c:\\a.txt"); /* 打印一个文件名 */ printf("\n");}参考结果:123456781234567812345678123456785 6 7 5 67c:\a.txt项目4.C语言基础语法练习整型数据的溢出错误,整型(int型)数据的表达范围是-32768~32767,如果最大允许值32767+1,最小允许值-32768-1,会出现什么情况?参考代码:main(){ int a,b; a=32767; b=a+1; printf("a=%d,a+1=%d\n",a,b); a=-32768; b=a-1; printf("a=%d,a-1=%d\n",a,b); getch(); //获得键盘击键,起到暂停程序运行作用,目的是保留用户屏幕,便于查看结果。}参考结果:a=32767,a+1=-32768a=-32768,a-1=32767项目二:顺序程序设计实验目的:a、理解C语言的语句与表达式的关系;b、掌握顺序程序结构在实际编程中的应用;c、掌握基本算法的设计;d、进一步巩固和掌握TC下编辑、编译、调试、运行C程序的方法;实验要求:a、在实际程序开发中,如果进行编辑、编译、调试、运行C程序;b、C语言的语句与表达式和基本语法的基本应用;c、在实际程序开发中顺序程序结构的应用;d、分工协作能力、语言表达能力、创新能力、分析理解能力、实训操作能力; e、可以使用的计算机40台(Windows 2000 Server系统)实验内容和步骤:项目1:输入三角形边长,求面积。 设三角形的三个边分别为a、b、c,周长一半为s,面积为area,则s=1/2*(a+b+c), area=sqrt(s*(s-a)*(s-b)*(s-c))。参考代码:#include #include main(){ float a,b,c,s,area; scanf("%f,%f,%f",&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2f\n",a,b,c,s); printf("area=%7.2f\n",area);}项目2:从键盘输入大写字母,用小写字母输出参考代码:#include "stdio.h"main(){ char c1,c2; c1=getchar(); printf("%c,%d\n",c1,c1); c2=c1+32; printf("%c,%d\n",c2,c2);}项目3:输入一个三位整数,依次输出该数的正(负)号和百位、十位、个位数字。参考代码:#includemain(){ char c1,c2,c3,c4; int x; scanf("%d",&x); /* 输入一个三位的整数 */ c4=x>=0?'+':'-'; /* 将x的符号存入c4 */ x=abs(x); /* 求三位整数的绝对值 */ c3=x%10+48; /* x%10获得个位数字,加48后转换为对应的字符 */ x=x/10; /* 获得x的前两位 */ c2=x%10+48; /* x%10获得十位数字,加48后转换为对应的字符 */ c1=x/10+48; /* x/10获得百位数字,加48后转换为对应的字符 */ printf("%c\n%c\n%c\n%c\n",c4,c1,c2,c3);}项目4:输入两个整数a、b,将它们交换,例如a为3,b为5,交换后a为5,b为3。 参考代码:#include "stdio.h" main(){int a,b,t; /*t就相当于空杯子*/ scanf("%d,%d",&a,&b); printf("a=%d,b=%d\n",a,b); /*观察原来的值*/ t=a;a=b;b=t; printf("a=%d,b=%d\n",a,b);/*观察交换后的值*/ }项目5:输入一个华氏温度,输出对应的摄氏温度。输出取1位小数。转换公式为 c=5/9*(f-32)参考代码:include "stdio.h" main(){float c,f; scanf("%f",&f); c=5.0/9*(f-32); printf("%.1f\n",c);} 项目6:鸡兔同笼问题。已知鸡兔总头数为H,总脚数为F,求鸡兔各有多少只?分析:依题意设鸡有x只,兔有y只。参考结果:main ( ) { int h, f, x, y; / * x为鸡的数量,y为兔的数量 * / printf("请输入鸡兔的总头数h,"); printf("总脚数f,格式:%%d%%d\n"); scanf("%d%d", &h, &f); x=(4*h – f)/2; y=(f - 2*h)/2; printf("笼中有鸡%d只,有兔%d只。\n", x, y ); }项目三:选择程序设计实验目的:a、掌握if三种基本结构的应用;b、掌握switch语句的应用;c、掌握基本算法的设计;d、选择结构的综合应用;实验要求:a、在实际程序开发中,if三种基本结构的应用;b、switch语句的应用;c、在实际程序开发中选择结构的综合应用和基本的算法设计;d、分工协作能力、语言表达能力、创新能力、分析理解能力、实训操作能力; e、可以使用的计算机40台(Windows 2000 Server系统)实验内容和步骤:项目1:根据圆柱体的半径和高,计算圆周长、圆面积、圆柱体表面积、圆柱体体积。参考代码:void main(){float r,h,pi=3.1415926;float c0,s0,s,v;printf("Input r,h(m):");scanf("%f,%f",&r,&h);c0=2*pi*r;s0=pi*r*r;s=2*pi*r*h+2*pi*r*r;v=pi*r*r*h;printf("c0=%.3f(m)\ns0=%.3f(m2)\ns=%.3f(m2)\nv=%.3f(m3)\n",c0,s0,s,v);}项目2:从键盘输入两个整数a和b,如果a大于b则交换两数,否则不交换,最后输出两个数。参考代码:#include "stdio.h"main() {int a,b,t; scanf("%d,%d",&a,&b); if(a>b) {t=a;a=b;b=t;} printf("a=%d,b=%d\n",a,b);}项目3:将任意三个整数按从大到小的顺序输出。 参考代码:#include "stdio.h"main(){int x,y,z,t;scanf("%d,%d,%d",&x,&y,&z);if(x=0) y=2*x+1; else y=0; printf("当x=%d时,f(x)=%d",x,y); }项目6:模拟自动饮料机。按屏幕所示功能,输入所选择的合法数字,输出可获得的相应饮料名称。运行效果:=============自动饮料机==============1.可口可乐2.雪碧3.芬达4.百事可乐5.非常可乐请按1-5按钮选择饮料:3你获得一听芬达参考代码:#include "stdio.h"main(){ int button; printf("==========自动饮料机 ==========\n"); printf("1.可口可乐\n"); printf("2.雪碧\n"); printf("3.芬达\n"); printf("4.百事可乐\n"); printf("5.非常可乐\n"); printf("请按1--5键选择饮料:\n"); scanf("%d",&button);switch(button) { case 1:printf("\n你获得一听可口可乐\n");break; case 2:printf("\n你获得一听雪碧\n");break; case 3:printf("\n你获得一听芬达\n");break; case 4:printf("\n你获得一听百事可乐\n");break; case 5:printf("\n你获得一听非常可乐\n");break; default:printf("\n非法操作!\n");break; } }项目7:当企业利润P等于或低于0.5万元时,奖金为利润的1%;当0.5<P≤1万元时,超过0.5万元部分的奖金为利润的1.5%,0.5万元以下仍按1%计算;当1<P≤2万元时,1万元以下部分仍按前面的方法计算,超过1万元的部分其奖金按利润的2%计算;当2<P≤5万元时,2万元以下部分仍按前面的方法计算,超过2万元部分的奖金按利润的2.5%计算;当5<P≤10万元时,5万元以下部分仍按前面的方法计算,超过5万元部分的奖金按利润的3%计算;当P>10万元时,10万元以下部分仍按前面的方法计算,超过10万元部分按3.5%计算。其中P由键盘输入,计算并输出相应的奖金数W。参考代码:#include "stdio.h"main(){ float p,w; printf("input p: "); scanf("%f",&p); if (p<=0.0) w=0.0; else if (p<=0.5) w=0.01*p; else if (p<=1.0) w=0.005+0.015*(p-0.5); else if (p<=2.0) w=0.0125+0.02*(p-1.0); else if (p<=5.0) w=0.0325+0.025*(p-2.0); else if (p<=10.0) w=0.1075+0.03*(p-5.0); else w=0.2575+0.035*(p-10.0); printf("w=%f\n",w);}项目8:任意输入两个数,和一个运算符(加、减、乘、除),要求输出它们的运算结果。参考代码:#include "stdio.h"main ( ) { float shu1, shu2, jieg; char yunsf; printf(”请输入运算符 + - * /:\n”); yunsf = getchar ( ); printf(”请输入两个数 %%f%%f\n”); scanf("%f%f", &shu1, &shu2 ); switch ( yunsf ) { case '+' : jieg = shu1 + shu2 ; break; case '-' : jieg = shu1 - shu2 ; break; case '*' : jieg = shu1 * shu2 ; break; case '/' : jieg = shu1 / shu2 ; break; default : printf( " 运算符输入错误 !\n" ); } printf("jieg = %.2f \n", jieg ); }项目四:循环程序设计实验目的:a、掌握for语句的应用;b、掌握while语句和do-while语句的应用;c、掌握continue和break辅助语句的应用;d、掌握基本算法的设计;实验要求:a、在实际程序开发中for、while语句和do-while语句的应用;b、continue和break辅助语句的应用;c、在实际程序开发中循环结构的综合应用和基本的算法设计;d、分工协作能力、语言表达能力、创新能力、分析理解能力、实训操作能力; e、可以使用的计算机40台(Windows 2000 Server系统)实验内容和步骤:项目1:用三种循环结构,求1000以内奇数的和。参考代码:do-while和for实现的省略void main(){long sum; int i,item; sum=0,i=0,item=2*i+1; while(item<1000) { sum=sum+item; i++; item=2*i+1; } printf("1+3+5+...999=%ld\n",sum);}项目2:有一堆零件(100-200个之间),如果以4个零件为一组进行分组,则多2个零件;如果以7个零件为一组进行分组,则多3个零件;如果以9个零件为一组进行分组,则多5个零件。编程求解这堆零件总数。参考代码:main(){ int x,flag=0; for(x=100; x<=200; x++) if(x%4==2&&x%7==3&&x%9==5) { flag=1; break; } if(flag)printf("x=%d\n",x); else printf("no answer!\n");}项目3:用while,do-while循环求i-10的连加和,i由用户输入。参考代码:main(){ int sum=0,i; printf("Input i:");scanf("%d",&i); while(i<=10) {sum+=i; i++; } printf("sum=%d\n",sum);}项目4:从键盘上输入若干字符,以“#”号结束,统计其中字符A或a(包括大写字母或小写字母)的个数。 参考代码:#include "stdio.h"main(){ char ch; int k=0; while((ch=getchar())!='#') { if(ch= ='A' || ch= ='a') k=k+1; } printf("%d\n",k);}项目5:用泰勒级数求e的近似值。直到最后一项小于1e-6为止。 e=1+1/1!+1/2!+1/3!+…+1/n!+…参考代码:#include "stdio.h" main() { float e=1.0,t=1.0;/*用e存放结果,用t存放n!,n的值每次加1*/ int n=1; while(1/t>1e-6) { t=t*n; /*求n!*/ e=e+1/t; /* 实现求n!的倒数的和 */ n++; } printf("e=%8.6f\n",e); }项目6、百钱百鸡问题。公元前,我国古代数学家张丘建在《算经》一书中提出了"百鸡问题":鸡翁一,值钱五,鸡母一,值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? 分析:设:cocks:鸡翁数、 hens:鸡母数、chicks:鸡雏数,则有:cocks+hens+chicks=100 5*cocks+3*hens+chicks/3=100cocks:0-19之间的整数。 hens:0-33之间的整数。 chicks:0-100之间的整数。参考代码: #include "stdio.h" main() { int cocks,hens,chicks; for(cocks=1;cocks<=19;cocks++) for(hens=1;hens<=33;hens++) { chicks=100-cocks-hens; if(5*cocks+3*hens+chicks/3.0==100) printf("cocks=%d,hens=%d,chicks=%d\n",cocks,hens,chicks"); } } 程序运行结果如下:cocks=4,hens=18,chicks=78 cocks=8,hens=11,chicks=81 cocks=12,hens=4,chicks=84项目7:爱因斯坦的阶梯问题。设有一阶梯,每步跨2阶,最后余1阶;每步跨3阶,最后余2阶;每步跨5阶,最后余4阶;每步跨6阶,最后余5阶;每步跨7阶时,正好到阶梯顶。问共有多少阶梯?问题分析:设阶梯数为:ladders,则题中条件可以改写为:(1)ladders % 2 =1 (2)ladders % 3 =2 (3)ladders % 5 =4(4)ladders % 6 =5 (5)ladders % 7 =0由条件(5)知,阶梯数一定为7的倍数。于是可以从7开始,分别对7、14、21、28、35…数列进行测试,看哪一个符合题意。由条件(1)又知,阶梯数一定是奇数,因此可把上述数列中的数去掉一半。参考代码:#include "stdio.h" main() { int ladders=7; while(ladders % 3!=2||ladders % 5!=4||ladders % 6!=5) ladders+=14; printf("ladders=%d\n",ladders); }运行结果:ladders=119项目五:数组实验目的:a、理解一维数组和二维数组的概念;b、掌握一维数组和二维数组的定义、初始化、数组元素引用;c、掌握一维数组和二维数组的输入/输出控制;d、掌握基本算法的设计;实验要求:a、在实际程序开发中一维数组的应用;b、二维数组的定义、初始化、引用等;c、在实际程序开发中数组的综合应用和基本的算法设计;d、分工协作能力、语言表达能力、创新能力、分析理解能力、实训操作能力; e、可以使用的计算机40台(Windows 2000 Server系统)实验内容和步骤:项目1:编制程序,求Fibonachi数列的前10项。提示:Fibonachi的第1,2项分别为1,1。其后任何一项满足ai=ai-2+ai-1。。参考代码: main(){ int f[11]={0,1,1},n; for(n=3; n<=10; n++) f[n]=f[n-1]+f[n-2]; for(n=1; n<=10; n++) printf("%d ",f[n]); printf("\n");}项目2:找出1-100之间能被7或11整除的所有整数。参考代码:main(){ int n=0,a[100],i; for(i=1; i<=100; i++) { if(i%7==0||i%11==0) { a[n]=i;n++; } } printf("n=%d\n",n); for(i=0; i#define N 4main(){ int a[N][N],s1=0,s2=1,max=0,i,j; for(i=0; imax)max=a[i][j]; } printf("s1=%d,s2=%d,max=%d\n",s1,s2,max);}项目4:输入10位学生的成绩,求出平均分,并输出高于平均分的同学成绩。参考代码:#include "stdio.h"main(){ int i; float score[10],aver=0.0; printf("Please input scores of 10 students:"); for(i=0;i<10;i++)/*输入10位学生成绩并累加和*/ { scanf("%f",&score[i]); aver+=score[i]; } aver/=10;/*求出10位学生的平均成绩*/printf("The average score is:%.2f\n",aver);printf("They are:");for(i=0;i<10;i++)/*输出高于平均成绩的学生成绩*/ if(score[i]>aver) printf("%6.2f",score[i]);}项目5、用冒泡法对10个整型数按升序进行排序。参考代码:#include "stdio.h"main(){ int i,j,t,a[10]; printf("Please input 10 numbers:\n"); for(i=0;i<10;i++)scanf("%d",&a[i]); for(i=0;i<9;i++)/*对数组a中的10个整数排序*/ for(j=0;j<9-i;j++) if(a[j]>a[j+1])/*前面的元素大于后面的元素则交换*/ { t=a[j]; a[j]=a[j+1]; a[j+1]=t; }printf("The sorted numbers are:");for(i=0;i<10;i++)/*输出数组a中的10个元素*/ printf("%d ",a[i]); printf("\n");}项目6:用选择法对10个整型数按升序进行排序。参考代码:#include "stdio.h"main(){ int i,k,j,t,a[10]; printf("Please input 10 numbers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); /*输入10个整数存入数组a中*/ for(i=0;i<9;i++)/*对数组a中的10个整数排序*/{ k=i; for(j=i+1;j<10;j++) if(a[k]>a[j]) k=j; t=a[k]; a[k]=a[i]; a[i]=t; /*本轮最小的元素与本轮首的元素交换*/}printf("The sorted numbers are:");for(i=0;i<10;i++) printf("%d ",a[i]); /*输出排序后数组a中的10个元素*/ printf("\n");}项目六:字符数组与字符串实验目的:a、理解字符数组和字符串的概念;b、掌握字符数组的定义、初始、数组元素引用、输入输出;c、掌握字符数组的处理;d、掌握基本算法的设计;实验要求:a、常用字符串处理函数的应用;b、字符数组的基本应用等;c、在实际程序开发中数组的综合应用和基本的算法设计;d、分工协作能力、语言表达能力、创新能力、分析理解能力、实训操作能力; e、可以使用的计算机40台(Windows 2000 Server系统)实验内容和步骤:项目1:编制程序:对键盘输入的字符串进行逆序,逆序后的字符串仍然保留在原来字符数组中,最后输出。(不得调用任何字符串处理函数,包括strlen)例如:输入hello world 输出dlrow olleh参考代码: main(){ char str[100];int n,i,j; gets(str); n=0; while(str[n])n++; for(i=0,j=n-1; iworld,输出helloworld参考代码:main(){char s1[100],s2[100];int i,j;gets(s1);gets(s2);i=0;while(s1[i])i++;j=0;while(s2[j]){s1[i++]=s2[j++];}s1[i]='\0';puts(s1);}项目3:编写程序:对从键盘任意输入的字符串,将其中所有的大写字母改为小写字母,而所有小写字母改为大写字母,其它字符不变。(不调用任何字符串处理函数)例如:输入:Hello World!输出:hELLO wORLD!参考代码:#include main(){ char s[100]; int i; gets(s); for(i=0; s[i]!='\0'; i++) { if(s[i]>='A'&&s[i]<='Z')s[i]+=32;else if(s[i]>='a'&&s[i]<='z')s[i]-=32; } puts(s);}项目4编写程序:从键盘输入4个字符串(长度<20),存入二维字符数组中。然后对它们进行排序(假设由小到大顺序),最后输出排序后的4个字符串。(允许使用字符串函数)提示:字符串比较可以用strcmp函数实现,排序方法可以选择法或冒泡法。参考代码:#define N 4main(){ char s[N][20]; int i,j; for(i=0; i0) { char t[20];strcpy(t,s[i]); strcpy(s[i],s[j]); strcpy(s[j],t); } } for(i=0; ivoid fun(char [],char);void main(){ char s[100],c; gets(s); c=getchar(); fun(s,c); puts(s);}void fun(char s[],char c){ int i,j; for(i=0; s[i]!='\0'; i++) { if(s[i]==c) { for(j=i; s[j]!='\0'; j++) s[j]=s[j+1]; } }}项目2:编制函数sortstr,其功能是对多个字符串进行排序。要求:欲排序的字符串在主函数中输入,排好序的字符串在主函数中输出。参考代码:#include void sortstr(char s[][20],int n) { int i,j; for(i=0; i0) {char t[20]; strcpy(t,s[i]); strcpy(s[i],s[j]); strcpy(s[j],t); } }}void main(){ char s[5][20]; int i; for(i=0; i<5; i++)gets(s[i]); sortstr(s,5); for(i=0; i<5; i++)puts(s[i]);}项目3:编写程序:计算s=1^k+2^k+3^k+……+N ^k 参考代码:#define K 4#define N 5long f1(int n,int k)/*计算n的k次方*/ { long power=n; int i; for(i=1;iint Num,Max,Min;int average(int array[]) { int i; int array_aver=array[0]; Max=Min=array[0]; for(i=1;iMax) Max=array[i]; if(array[i]int Count( char str[] ){int i;for( i=1;str[i]!='\0';i++ );return i;}main(){char str[10];int length;printf("input the string:");scanf("%s",str);length=Count(str);printf("The length of string is %d!\n",length);}项目6写一函数,使输入的字符串反序存放,在主函数中输入和输出字符串。说明:(1)字符串反序的函数名为Reverse(2)反序前后的输入输出都应在主函数中完成(3)使用数组作为函数参数(4)需要使用strlen函数得到字符串长度,需要在源文件头部加入#include参考程序如下:#include#includevoid Reverse( char str[] ){int length;int i;char temp;length=strlen(str);for( i=0;imain(){float score[10];float average=0;float sum=0;int i,j;float temp;printf("input the 10 score:");for( i=0;i<10;i++ )scanf("%f",&score[i]);for( i=0;i<=8;i++ ){for( j=0;j<9-i;j++ ){if( score[j]>score[j+1] ){temp=score[j];score[j]=score[j+1];score[j+1]=temp;}}}for( i=1;i<=8;i++ ){sum=sum+score[i];}average=sum/8;printf("The average is %f!\n",average);}项目八:指 针实验目的:a、掌握C语言指针变量的定义、声明和赋值;b、学会使用指针变量的程序设计;c、掌握指针作为函数参数的用法;d、掌握基本算法的设计;实验要求:a、指针变量的定义、声明和赋值;b、指针作为函数参数的用法;c、在实际程序开发中指针的综合应用和基本的算法设计;d、分工协作能力、语言表达能力、创新能力、分析理解能力、实训操作能力; e、可以使用的计算机40台(Windows 2000 Server系统)实验内容和步骤:项目1:使用指针作为函数参数,写一交换两个数的函数说明:(1)交换两个数的函数名为:Swap(2)使用指针变量作为函数参数(3)在主函数中输入输出,自定义函数只完成交换功能参考程序如下:#includeSwap( int *p1,int *p2 ){int temp;temp=*p1;*p1=*p2;*p2=temp;}main(){int a,b;int *p1,*p2;printf("input a,b:");scanf("%d,%d",&a,&b);p1=&a;p2=&b;printf("Before swap a=%d,b=%d\n",a,b);Swap(p1,p2);printf("After swap a=%d,b=%d\n",a,b);}项目2:使用指针作为函数参数,写一求数组中最大值和最小值的函数。说明:(1)函数名为:MaxAndMin(2)使用指针指向一维数组(3)最大值和最小值的输出必须要在主函数中参考程序如下:#includeMaxAndMin( int *array,int *max,int *min ){int i;*max=array[0];*min=array[0];for( i=0;i<10;i++ ){if( *maxarray[i] )*min=array[i];}}main(){int array[10]={0,1,2,3,4,5,6,7,8,9};int max,min;int *p1,*p2;p1=&max;p2=&min;MaxAndMin(array,p1,p2);printf("max=%d\nmin=%d\n",max,min);}项目3:写一函数,求出矩阵中的最大值和最小值,要求使用指针作为函数参数。说明:(1)使用二维数组存放矩阵元素(2)只用指针变量指向数组(3)函数名为:ArrayMaxAndMin参考程序如下:#includeArrayMaxAndMin( int *array,int *max,int *min,int n ){int i=0,j=0;*max=*(array+i*n+j);*min=*(array+i*n+j);for( i=0;i*(array+i*n+j) )*min=*(array+i*n+j);}}}main(){int array[3][3]={1,2,3,4,5,6,7,8,9};int max,min;int *p,*p1,*p2;p=array;p1=&max;p2=&min;ArrayMaxAndMin(p,p1,p2,3);printf("max=%d\nmin=%d\n",max,min);}项目九:综合应用实验目的:a、掌握基本语法的应用;b、掌握程序模块化设计思想和程序的结构;c、掌握数组的综合应用;d、掌握函数的应用和基本算法的设计;实验要求:a、基本语法的应用;b、程序模块化设计思想和程序的结构应用;c、在实际程序开发中数组和函数的综合应用和基本的算法设计;d、分工协作能力、语言表达能力、创新能力、分析理解能力、实训操作能力; e、可以使用的计算机40台(Windows 2000 Server系统)实验内容和步骤:项目1:输入某年某月某日,判断这一天是这一年的第几天?。参考代码: #include "stdio.h"#include "conio.h"main(){ int day,month,year,sum,leap; printf("\nplease input year,month,day\n"); scanf("%d,%d,%d",&year,&month,&day); switch(month) /*先计算某月以前月份的总天数*/ { case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; case 4:sum=90;break; case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; default:printf("data error");break; } sum=sum+day; /*再加上某天的天数*/ if(year%400==0||(year%4==0&&year%100!=0)) /*判断是不是闰年*/ leap=1; else leap=0; if(leap==1&&month>2) /*如果是闰年且月份大于2,总天数应该加一天*/ sum++; printf("It is the %dth day.",sum);}项目2:从键盘输入一个字符,可以是数字、字母、或是标点符号,对输入的字符进行判断,如果是数字则输出“* is a number!”,如果是字母则输出“* is a letter!”,如果是其他的字符怎输出“* is the other!”(*为输入的字符)说明:(1)从键盘输入一个字符,用char类型变量存储(2)使用if语句作判断(3)判断条件根据输入字符的ASCII码值的范围,具体的ASCII码值参看书后的ASCII码表参考代码:#includemain(){ char c; printf("input a char:"); scanf("%c",&c); if( c>=48 && c<=57 ) printf("%c is a number!\n",c); else if( (c>=65 && c<=90) || (c>=97 && c<=122 ) ) printf("%c is a letter!\n",c); else printf("%c is the other!\n",c);}项目3:设计一个较为复杂的一维数组操作程序,实现对一维数组的基本操作说明:(1)通过输入函数实现对一维数组的输入,可以将数组定义为100个整型元素,输入其中的10个元素(2)在屏幕上将数组中的10个元素输出(3)往数组中插入一个元素,并将插入后的11个元素输出(4)从数组中删除一个元素,并将删除后的10个元素输出(5)从数组中查找一个元素,并将查找后的元素下标输出,如果元素不存在,给出提示 参考代码:#includemain(){ int a[100],i,j;int ins,del,find,pos;printf("input the data: ");for(i=0;i<10;i++) scanf("%d",&a[i]);printf("The array is ");for(i=0;i<10;i++)printf("%d ",a[i]);printf("\ninsert a data: ");scanf("%d",&ins);for( i=0;i<10;i++ ){if( ins=i;j-- )a[j+1]=a[j];a[i]=ins;break;}}if( i==10 )a[i]=ins;printf("\nAfter insert: ");for( i=0;i<11;i++ )printf("%d ",a[i]);printf("\ndelete a data: ");scanf("%d",&del);for( i=0;i<11;i++ ){if( del==a[i] ){for( j=i;j<10;j++ )a[j]=a[j+1];break;}}if( i==11 )printf("\nnot found\n");else{ printf("\nAfter delte: ");for( i=0;i<10;i++ )printf("%d ",a[i]);}printf("\nfind a data: ");scanf("%d",&find);for( i=0;i<10;i++
展开阅读全文
  语墨文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:C语言学习实训指导计划.doc
链接地址:http://www.wenku38.com/p-145422.html

                                            站长QQ:1002732220      手机号:18710392703    


                                                          copyright@ 2008-2020 语墨网站版权所有

                                                             经营许可证编号:蜀ICP备18034126号

网站客服微信
收起
展开