c语言上机实训(共7篇)
一、程序填空
共1题(共计30分)第1题(30.0分)
题号:470 /*------------------------【程序填空】
--------------------------
功能:从两个数组中分别提取任意元素x[i],y[j],问|x[i]-y[j]| 的最小值是多少 ?
------------------------*/ #include
/***********SPACE***********/
#define min(x, y)
(【?】)
x int min_distance(int x[], int y[], int m, int n){ int minimum = INT_MAX; int index_x = 0, index_y = 0; while(index_x < m && index_y < n) /***********SPACE***********/ if(【?】)x[index_x] >= y[index_y] { minimum = min(minimum, x[index_x]-y[index_y]); index_y++; } else { minimum = min(minimum, y[index_y]-x[index_x]); /***********SPACE***********/ 【?】index_x++; } return minimum; } #include int x[] = { 1, 3, 7, 11, 18}; int m = sizeof(x)/sizeof(int); int y[] = { 4, 5, 8, 13, 22}; int n = sizeof(y)/sizeof(int); int i, min_distance(int [], int [], int, int); printf(“nCompute Minimum Distance Between Two Sorted Arrays”); printf(“n====”); printf(“nnGiven Array #1 :”); for(i = 0;i < m;i++) printf(“%5d”, x[i]); printf(“nnGiven Array #2 :”); for(i = 0;i < n;i++) printf(“%5d”, y[i]); printf(“nnMinimum Distance = %d”, min_distance(x, y, m, n));} 答案: =======(答案1)======= x =======(答案2)======= x[index_x] >= y[index_y] =========或========= y[index_y]<=x[index_x] =======(答案3)======= index_x++ =========或========= index_x=index_x+1 =========或========= ++index_x 二、程序改错 共1题(共计30分)第1题(30.0分) 题号:26 /*----------------------- 【程序改错】 ------------------------- 功能:实现3行3列矩阵的转置,即行列互换。 -----------------------*/ #include int i,j,t; for(i=0;i for(j=0;j /**********FOUND**********/ scanf(“%d”,&a[i][j]); for(i=0;i { for(j=0;j printf(“%4d”,a[i][j]); printf(“n”); } for(i=0;i /**********FOUND**********/ for(j=0;j { /**********FOUND**********/ a[i][j]=t; a[i][j]=a[j][i]; /**********FOUND**********/ t=a[j][i]; } for(i=0;i { for(j=0;j printf(“%4d”,a[i][j]); printf(“n”); } } main(){ int b[3][3]; fun(b,3);} 答案: =======(答案1)======= scanf(“%d”,&a[i][j]);=========或========= scanf(“%d”,(*(a+i)+j)); =======(答案2)======= for(j=0;jj;j++)=========或========= for(j=0;j<=i;j++)=========或========= for(j=0;i>=j;j++)=========或========= for(j=i+1;j for(j=i;j =======(答案3)======= t=a[i][j]; =======(答案4)======= a[j][i]=t; 三、程序设计 共1题(共计40分)第1题(40.0分) 题号:341 /*-----------------【程序设计】 ------------------- 功能:删除所有值为y的元素。数组元素中的值和y的值由 主函数通过键盘输入。 -----------------*/ #include void fun(int bb[],int *n,int y){ /**********Program**********/ int i,j;for(i=0;i<*n;) { if(bb[i]==y) {for(j=i;j<*n;j++) bb[j]=bb[j+1]; *n=*n-1; } else i++; } /********** End **********/ } main(){ int aa[M],n,y,k; printf(“nPlease enter n:”);scanf(“%d”,&n); printf(“nEnter %d positive number:n”,n); for(k=0;k printf(“The original data is:n”); for(k=0;k printf(“nEnter a number to deletede:”);scanf(“%d”,&y); fun(aa,&n,y); printf(“The data after deleted %d:n”,y); for(k=0;k printf(“n”); wwjt();} void wwjt(){ FILE *IN,*OUT; int n; int i[10]; int o; IN=fopen(“in.dat”,“r”); if(IN==NULL) { printf(“Read FILE Error”); } OUT=fopen(“out.dat”,“w”); if(OUT==NULL) { printf(“Write FILE Error”); } for(n=0;n<10;n++) { fscanf(IN,“%d”,&i[n]); } fun(i,&n,3); for(o=0;o { fprintf(OUT,“%dn”,i[o]); } fclose(IN); fclose(OUT);} 答案:----------------------int i,j;for(i=0;i<*n;) { if(bb[i]==y) {for(j=i;j<*n;j++) bb[j]=bb[j+1]; *n=*n-1; } else i++; }---------------------- 试题1 所属语言:C语言 试卷方案:C语言上机实训 试卷总分:100分 共有题型:3种 一、程序填空 共1题(共计30分)第1题(30.0分) 题号:417 /*------------------------【程序填空】 -------------------------- 功能:利用全局变量计算长方体的体积及三个面的面积。 ------------------------*/ #include int v; /***********SPACE***********/ v=【?】; s1=a*b; /***********SPACE***********/ s2=【?】; s3=a*c; return v;} main(){ int v,l,w,h; printf(“ninput length,width and height: /***********SPACE***********/ scanf(”%d%d%d“,【?】,&w,&h); /***********SPACE***********/ v=【?】; printf(”v=%d s1=%d s2=%d s3=%dn“,v,s1,s2,s3);} 答案: ”); =======(答案1)======= a*b*c =========或========= a * b * c =======(答案2)======= b*c =========或========= b * c =======(答案3)======= &l =======(答案4)======= vs(l,w,h)=========或========= vs(l , w , h) 二、程序改错 共1题(共计30分)第1题(30.0分) 题号:392 /*----------------------- 【程序改错】 ------------------------- 功能:统计出若干个学生的平均成绩,最低分以及得最低分的人数。例如:输入10名学生的成绩分别为92,87,68,56,92,84,67,75,92,66,则输出平均成绩为77.9,最低高分为56,得最 低分的人数为1人。 -----------------------*/ #include float Min=0;int J=0;float fun(float array[],int n){ int i;float sum=0,ave; Min=array[0]; for(i=0;i { if(Min>array [i])Min=array [i]; /**********FOUND**********/ sum=+array [i]; } /**********FOUND**********/ ave=sumn; for(i=0;i /**********FOUND**********/ if(array [i]=Min)J++; return(ave);} main(){ float a[10],ave; int i=0; for(i=0;i<10;i++) scanf(“%f”,&a[i]); ave=fun(a,10); printf(“ave=%fn”,ave); printf(“min=%fn”,Min); printf(“Total:%dn”,J);} 答案: =======(答案1)======= sum+=array[i];=========或========= sum=sum+array [i]; =======(答案2)======= ave=sum/n; =======(答案3)======= if(array [i]==Min)J++; 三、程序设计 共1题(共计40分)第1题(40.0分) 题号:390 /*-----------------【程序设计】 ------------------- 功能:编写函数求1~100中奇数的平方和。 结果为166650.000000。 -----------------*/ #include float sum(int n){ /**********Program**********/ /********** End **********/ } main(){ printf(“sum=%fn”,sum(100)); wwjt();} void wwjt(){ FILE *IN,*OUT; int i; float o; IN=fopen(“in.dat”,“r”); if(IN==NULL) { printf(“Read FILE Error”); } OUT=fopen(“out.dat”,“w”); if(OUT==NULL) { printf(“Write FILE Error”); } for(j=0;j<5;j++) { fscanf(IN,“%d”,&i); o=sum(i); fprintf(OUT,“%fn”,o); } fclose(IN); fclose(OUT);} 答案:----------------------float s=0;int i;for(i=1;i<=n;i=i+2) s=s+i*i;return(s);---------------------- 试题3 所属语言:C语言 试卷方案:C语言上机实训 试卷总分:100分 共有题型:3种 一、程序填空 共1题(共计30分)第1题(30.0分) 题号:410 /*------------------------【程序填空】 -------------------------- 功能:有n个整数,使其前面各数顺序向后移m个位置,最后m个数 变成最前面的m个数 ------------------------*/ #include /***********SPACE***********/ move(【?】)int n,m,array[20];{ int *p,array_end; /***********SPACE***********/ array_end=*(【?】); for(p=array+n-1;p>array;p--) /***********SPACE***********/ *p=*(【?】); *array=array_end; m--; if(m>0)move(array,n,m);} main(){ int number[20],n,m,i; printf(“the total numbers is:”); scanf(“%d”,&n); printf(“back m:”); scanf(“%d”,&m); for(i=0;i scanf(“%d,”,&number[i]); scanf(“%d”,&number[n-1]); /***********SPACE***********/ move(【?】); for(i=0;i printf(“%d,”,number[i]); printf(“%d”,number[n-1]);} 答案: =======(答案1)======= array,n,m =======(答案2)======= array+n-1 =========或========= array + n-1 =======(答案3)======= p-1 =========或========= p-1 =======(答案4)======= number,n,m 二、程序改错 共1题(共计30分)第1题(30.0分) 题号:413 /*----------------------- 【程序改错】 ------------------------- 功能:读取7个数(1-50)的整数值,每读取一个值,程序打印 出该值个数的*。 -----------------------*/ #include int i,a,n=1; /**********FOUND**********/ while(n<7) { do { scanf(“%d”,&a); } /**********FOUND**********/ while(a<1&&a>50); /**********FOUND**********/ for(i=0;i<=a;i++) printf(“*”); printf(“n”); n++;} } 答案: =======(答案1)======= while(n<=7) =========或========= while(n<8) =======(答案2)======= while(a<1||a>50);=========或========= while(a>50||a<1); =======(答案3)======= for(i=1;i<=a;i++) 三、程序设计 共1题(共计40分)第1题(40.0分) 题号:337 /*-----------------【程序设计】 ------------------- 功能:将两个两位数的正整数a、b合并形成一个整数放在 c中。合并的方式是:将a数的十位和个位数依次放 在c数的百位和个位上,b数的十位和个位数依次放 在c数的十位和千位上。 例如:当a=45,b=12。调用该函数后,c=2415。 -----------------*/ #include void fun(int a, int b, long *c) { /**********Program**********/ /********** End **********/ } main() { int a,b;long c; printf(“input a, b:”); scanf(“%d%d”, &a, &b); fun(a, b, &c); printf(“The result is: %ldn”, c); wwjt(); } void wwjt() { FILE *rf, *wf; int i, a,b;long c; rf = fopen(“in.dat”, “r”); wf = fopen(“out.dat”,“w”); for(i = 0;i < 10;i++) { fscanf(rf, “%d,%d”, &a, &b); fun(a, b, &c); fprintf(wf, “a=%d,b=%d,c=%ldn”, a, b, c); } fclose(rf); fclose(wf); } C语言作为一种程序设计语言,功能丰富,表达力强,目标程序执行效率高,既具有低级语言部分功能,又具备高级语言的结构化特征,但是由于其涉及的基本概念较复杂,语法规则繁多,运用灵活,不少本科生初学者容易犯一些错误。这就要求教师在课堂灵活讲授基本概念、语法和算法思想的同时,要注重学生的上机实践环节,保证上机课的效率,这样才有利于学生迅速掌握程序设计思想,养成良好的编程习惯。然而上机课通常要面对学生人数众多、学生基础不均衡、监督管理机制不完善等一系列问题,降低了教师以及助教辅导的效率,不利于学生对所学知识的巩固和能力的提高。本文尝试将凌波多媒体教学系统引入到C语言上机课中,收到了良好的效果。 1、凌波多媒体教学系统 凌波多媒体教学系统是一套基于纯软件设计的网络教学软件,利用机房的局域网环境,实现了基于文本、图像、声音、视频、动画等多种媒体的同步教学,为教师提供了全新的教学模式,从根本上改变并促进了师生之间的信息交互、资源共享和教学合作,实现了真正意义上的教与学的交互。 2、教学系统的配置与应用 2.1 系统配置 凌波多媒体教学系统采用了类似传统意义上的“服务器-客户端”的配置模式。首先,在机房全千兆局域网的网络环境下,在一台机器上安装凌波多媒体教学软件中的教师端程序,把这台机器固定下来供教师在上机课时进行辅导和管理。其次,任选另外一台机器安装多媒体教学软件中的学生端程序,并完成教师端与学生端的调试工作。最后,在教师端和学生端程序配置正确、调试无误的基础上,利用机房硬盘保护卡将其余准备作为学生端的机器(教师端机器除外)唤醒,把刚刚安装好学生端程序的机器作为发射机,进行网络拷贝,待学生端程序传输完毕之后,就建立了基于“教师端-学生端”模式的多媒体授课环境和教学平台。为了更好地达到教师与学生的教学交互,在进行教师端和学生端设置时还应注意以下几点: (1)为了使屏幕广播效率最高,显示模式中颜色质量应设置为增强色(16位),不要设为真彩色(32位),桌面背景不宜设置复杂的图片,最好设置为无背景; (2)在“系统设置”对话框把“发送数据速率”调整为慢,避免学生端接收屏幕画面时出现丢失现象; (3)将学生端程序中“举手”、“发消息”、“交作业”等权限开启。 2.2 教学应用 在进行C语言程序设计上机课时,教师首先启动教师端程序,会看到教师端窗口。而学生启动机器后,学生端程序自动运行,受控于教师端。根据教师端软件所提供的丰富的功能,可以实现相应多样化的教学环节。 (1)教师端软件预设了十一个组,教师可以通过分组列表窗口选择组。“全体”组含义是上机课班级中的全部学生,教师只能对其他十个小组进行小组成员的添加或删除,系统默认用显示的计算机名来代表成员。通过这种方式,教师可以针对不同专业、不同程度的本科生进行分组,分别建立班组模型,有侧重点的进行干预和辅导。例如针对基础不太好的学生,可以强化语法规则的训练和基本概念的理解;对于基础较好、入门较快的学生,提高其对算法思想和数据结构掌握的要求;对于基础非常好、编程能力很强的学生,教师完全可以抽调出来组建队伍参加程序设计大赛。 (2)教师利用屏幕广播功能可以将教师端画面或某个学生端画面实时的传送到某一组学生或者所有学生的电脑屏幕上,还可以通过电子画板功能直接在屏幕上写写画画,供学生实时的观看到效果,便于将C语言程序设计中的某些操作步骤、重点难点和注意事项演示给学生;同样可以抽查某个学生进行操作演示,既达到了了解学生掌握程度的目的,又可以供其他同学吸取经验和教训。例如,对于C语言中函数的递归调用这部内容的讲解,教师可以将“汉诺塔”这一经典问题的处理以动画或视频的形式广播给学生,给予学生最直观的感觉;教师还可以对于C语言中运用引用和指针时常见的错误以广播的形式进行细致的分析,给予学生最深刻的印象。 (3)教师可以在不离开自己座位的条件下针对某个同学或全体同学进行屏幕监视和远程控制。如果教师在讲课过程中发现个别同学正在玩游戏或随意添加删除程序,可以立即将其电脑锁定,或者将其显示器屏幕设置为黑屏予以警告,强制其停止当前操作,并有意识的记录学生所使用电脑的编号,找到学生进行思想教育。这样充分保证了学生上机课的学习效率,也方便教师及时的从侧面了解学生的思想态度。 (4)借助声音广播、双向对讲和多人会话等功能,教师能够同学生之间形成“一对一”或“一对多”的语音交流模式,取代了传统意义上的语音教学形式,授课、答疑、布置任务都可以通过这种方式简单快捷的实现。 (5)教师端可以随时向全体同学发送文字信息和发布文件,学生及时向教师反馈,类似于QQ聊天的模式;点名签到功能则实现了对学生的上机考勤,考勤的结果以电子版文档的形式保存到教师端机器中,供任课教师考核学生的平时成绩。 (6)教师端软件还提供了关机重启的智能化操作,方便教师在C语言上机课结束时批量的关闭某组机器或全部机器,从而也减轻了实验室维护人员的工作量。如果因为某个应用程序没有正常结束而无法关闭机器或者某台机器出现了蓝屏宕机,教师还可以远程查看这些“问题”机器的系统、内存、驱动器、进程等信息,强制结束进程来关闭机器。 3、凌波多媒体教学的特点 凌波多媒体作为新型的网络化计算机教学系统,有其自身的特点: (1)独创的缩略图显示,可以将任意多台学生端电脑的屏幕画面同时显示在教师端,让教师通览全局; (2)丰富的教学功能可以进行灵活组合,随心所欲; (3)独创的拨网线保护技术,防止学生拨网线而脱离教师端控制; (4)可以自动记录全体学生电脑的屏幕画面,压缩图片文件,保存到指定的文件夹中,供教师事后检查学生电脑的使用情况; (5)兼顾了广播式教学、集体交互式教学、个别化教学和分组教学四种教学模式; (6)极强的系统稳定性,保证教学过程的顺利进行; (7)无用户数限制,方便学校以后添加更多的电脑设备,灵活改变上机实践场所的规模,解除了学校的后顾之忧。 4、结语 实践证明,将凌波多媒体教学系统应用于C语言程序设计上机课中,教师可以利用网络的广播功能完成班级集体授课,也可以通过点对点的操作与学生交流,这种师生间的交互作用既有助于构造学生自主学习的环境,也便于收集反馈信息,这些都有助于改善课堂教学的协调性与适应性。这种新的教学模式也会促使教师的观念和行为发生深刻变化,教师们会感到自己更多是一个管理者和引导者,而不是说教者,这就从根本上改变了传统的师生关系和交流模式。 参考文献 [1]吴一心.非计算机专业《C语言程序设计》教学的几点探讨[J].电脑知识与技术.2010;6 (21) :5854-5855 [2]程志梅, 刘光萍, 李荣.非计算机专业C语言程序设计实验课程教学探讨[J].电脑知识与技术.2009;5 (7) :1649, 1660 [3]谭浩强.C语言程序设计[M].清华大学出版社.2005 [4]刘超慧, 孔庆波, 张福转.军事院校计算机实验室管理与维护[J].价值工程.2010;29 (12) :167 [摘 要]随着信息技术的高速发展,智慧课堂的理念和实践是当今教育界研究的热点。针对高级语言程序设计上机教学的课程特点,充分利用上机实验室的信息设备优势,采用小组合作学习、任务驱动教学、网络学习和多元化考核等教学手段,创建上机教学的智慧课堂,实现学生主动学习、合作学习和快乐学习。 [关键词]智慧课堂 高级语言程序设计 上机教学 [中图分类号] G642 [文献标识码] A [文章编号] 2095-3437(2015)08-0125-02 一、引言 在信息技术高速发展,全面建设智慧城市、智慧校园的大背景下,传统的课堂教学也面临着变与不变的外部挑战。[1]新兴技术的不断冲击,使得课堂教学不再是师生间单一的教与学关系,更多的是师生间平等的对话与互动,传统课堂已无法满足教育需要。将信息技术与教育深度融合,优化教育模式,已经成为一种必然的趋势, 由此智慧课堂这一新的教学模式便应运而生了。智慧课堂是指充分利用信息化技术,以引导学生的高度参与以及主动性的充分发挥,以自主地发现问题、研究问题和解决问题为主要学习形式,是以培养多样化、高素质、创新型人才为目标的教学方式。[2]相对以教师为中心的传统课堂,智慧课堂强调以学生为中心,注重学生的主动学习、合作学习和快乐学习。[3] 作为高校理工科电子、计算机等相关专业的一门重要基础课程,高级语言程序设计的目标是培养学生的程序设计理念、掌握程序设计的基本方法,培养学生熟练使用C语言编程解决实际问题的能力,为后续程序设计课程的学习和应用打下扎实的理论和实践基础。[4]学生是否具有较高的编程能力和良好的编辑习惯是衡量其对该课程掌握程度的一个重要指标,而编程能力的提高和编程习惯的养成离不开上机实践,因此上机实践是高级语言程序设计教学中的一个至关重要的环节。[5] 本文针对高级语言上机教学的课程特点和存在问题,充分利用上机实验室的信息设备优势,将信息技术与教育深度融合,实现上机教学的智慧课堂。 二、教学现状和问题 一般院校的高级语言程序设计理论课和上机课的比例为1∶1,由32学时理论课和32学时上机课组成。上机课目前多采用传统的“教师讲授—教师演示—学生上机练习”的教学模式,主要存在以下问题: (1)学生编程的信心和积极性有待提高。高级语言程序设计的开课时间设在大一的第二个学期,此时绝大部分学生对计算机软硬件知识缺乏全面了解,再加上C语言本身学习起来有难度,使学生不能很快掌握算法的思维特点,编程能力、调试能力普遍较差,增加了C语言上机学习的难度。很多学生在上机的过程中非但没有对编程产生兴趣,反而还产生惧怕心理,进而放弃学习。 (2)学生自主分析问题、解决问题的能力有待提高。目前上机教学模式以教师“教”为中心,学生过多依赖于实验指导书和教师,基本处于被动接受状态。在上机课中常出现“写程序就抄书,出现问题等老师”的现象,分析错误、动手调试本是最能发挥学生能动作用的环节,现在却由教师来承担,往往导致学生离开指导书和教师就写不出程序、调试不了程序的局面,很难培养学生在程序设计上的创新能力和逻辑思维能力。 (3)机房得天独厚的信息技术环境没有得到充分的利用。一般机房都配备有计算机、高速局域网和多媒体教学管理软件,具备开展智慧课堂的条件。以我院机房为例,采用的是海光多媒体软件,海光多媒体软件是一款实现在电子教室、多媒体网络教室或者电脑教室中进行多媒体网络教学的非常好的软件,集电脑教室的同步教学、控制、管理、音视频广播、网络考试等功能于一体,并能同时实现屏幕监视和远程控制等网络管理的目的,其核心功能包括教师演示、学生示范、语音教学、遥控辅导、屏幕录制、屏幕回放、提交作业、电子抢答和文件传输等。但目前该软件主要用于教师演示和收发文件,现有的信息技术设备没有得到充分的利用,信息技术改变教育方式没有得到充分的体现。 三、智慧课堂开展内容 针对以上情况,本文将充分利用机房的信息技术环境优势,将信息技术与教学深度融合,通过分组合作学习、任务驱动教学、网络学习和多元化考核等教学手段,创建高级语言程序设计上机教学的智慧课堂,实现学生主动学习、合作学习和快乐学习。 (一)小组合作学习 针对部分学生不能单独完成编程及缺少兴趣的问题,采用分组学习的教学模式,每次上机课将学生分为4人一组,每组学生通过合作学习共同完成一个实验任务。小组合作学习一方面更能突出学生的主体地位,培养学生主动参与的意识,激发学生的学习兴趣;另一方面学得好的学生可以带动其他学生,在达到学习均衡的同时,也培养了学生的合作能力和团队精神。 分组合作学习的关键是有效地组织学生学习,没有组织的学习会使课堂变得嘈杂、分散,所以合理划分小组是分组合作学习的首要前提。主要考虑两种分组方式,第一种是学生自愿组合,第二种是教师按学生的基础分组。第一种分组方式有利于调动学生合作学习的积极性,激起学生学习的兴趣,但是自由式的小组组合很可能出现分组不均衡的现象,即学习基础好的学生分在一组,学习基础薄弱的学生分在一组;第二种分组方式需要教师在全面了解学生的前提下,根据班级内的情况,有意识地将不同基础、不同类别的学生分到一组,使班级小组间基本上是相似的、均衡的。综合考虑两种分组方式的优缺点,可交替采用两种方式进行分组。 小组划分后需进行合理分工,每一组选择一个组长,组长协助教师组织任务攻关工作,同时监督组员,避免出现“蹭组”现象。组长的选择要考虑学生的成绩、与同学间的关系等因素,可采用自由推选的方式,给每个学生改变角色和锻炼的机会,进而提高其学习兴趣。 (二)任务驱动教学 在上机实验过程中,以完成一个具体的任务为线索,把教学内容隐含在每个任务之中,要求学生在具体的任务驱动下,在讨论和对话的氛围中,进行自主学习和协作学习。这样学生在完成任务的过程中始终处于主体地位,不仅提高了学生的积极性,也培养了学生的探索与创新精神。任务完成后,随机挑选或通过海光多媒体软件的“电子抢答”功能选出若干小组,通过软件的“学生演示”功能进行演示,并引导学生进行总结和改进。 在任务驱动教学中,任务设计的质量直接关系到教学效果。在设计任务时,要以学生为中心,根据学生的实际情况和学生感兴趣的方向来设置任务,同时要注意高级语言知识点的系统性和连贯性,将理论课的知识点融入上机任务中,使学生在完成任务的过程中,既巩固已学过的内容,又探索新知识,实现总体的教学目标。 例如,在练习C语言控制结构中的选择结构时,任务设计为:设计一个程序,输入某年某月某日,要求计算出这一天是该年的第几天。学生拿到任务后,分组讨论程序思路,教师通过管理软件随机选择若干小组听取他们的设计思路,根据回答情况进行引导,学生得到以下正确思路并编程实现: 1.从键盘上读入3个整数,分别作为年、月、日。练习输入函数。 2.要计算出某天是当年的第几天,应该将当年中本月之前所有月份的天数相加,再加上本月的天数。根据所输的月份练习switch选择结构。 3.考虑闰年问题,二月是一个特殊月,如该年是闰年,则二月有29天,否则,便是28天。根据所输的年份练习if选择结构。 4.输出答案。练习输出函数。 这个有趣的任务让学生在讨论中学会了选择结构的使用方法,并了解了switch和if这两种常用的选择结构的区别,且巩固了前面学习的输入输出函数知识点。 (三)网络学习 为学生提供丰富的网络学习资源。利用海光多媒体软件的录制和回放功能,可以在执行“教师演示”播放教师机上的屏幕画面的同时,将播放的图像画面以动画影像的形式录制下来,跟不上教学进度的学生可通过“回放”学习。将录制的视频、课件、参考资料和课外拓展练习资料等上传到课程群,提供丰富的网络学习资源,让学生学习不受时间、地点的限制,实现全方位学习。 (四)多元化考核方式 考核方式对学生有重要的学习方向引导作用,在智慧课堂的教学模式中,采用多元化考核方式,进一步调动学生的学习主动性和积极性。学生的上机成绩由三部分组成:课堂表现考核,由教师根据学生的分组表现、课堂展示和任务完成情况给出成绩,占总成绩的30%;组内考核,每次实验由小组长根据组员的表现打分,最后取平均分,占总成绩的20%;期末上机考试,占总成绩的50%,对学生的总体掌握情况进行测评。 四、结语 本文充分利用了机房得天独厚的信息技术环境,采用小组合作学习、任务驱动教学、网络学习和多元化考核等教学手段,创建了高级语言程序设计上机教学的智慧课堂。实践证明,该教学方法深受学生的欢迎,有效提高了学生的积极性,取得了良好的教学效果。 [ 注 释 ] [1] 黄荣怀,张进宝,胡永斌,等.智慧校园:数字校园发展的必然趋势[J].开放教育研究,2012(4):12-17. [2] 吴晓静,傅岩.智慧课堂教学的基本理念[J].教育探索,2009(9):6. [3] 祝智庭,贺斌.智慧教育:教育信息化的新境界 [J].电化教育研究,2012(12):13. [4] 谭浩强.C程序设计[M].北京:清华大学出版社,2005. [5] 丁海燕,邹疆,邱莎.C语言实验教学体系及改革措施[J].实验技术与管理,2010(11):179-181. 根据本人多年研究全国计算机等级考试二级若错误行中有整数1除以某个表达式或变量时,必C语言,发现很多考生对上机考试存在很大的问须把整数1改为1.0;若变量或表达式是整型时,题。现将本人在教学当中对二级C语言上机考试题则只能进行强制类型转换。 库总结的经验和大家分享,希望能对我们考生的考 试有所帮助,顺利通过考试!以下是对上机考试改 错题的做题方法和总结,改错题的错误主要分为以 7、字符串类问题 下几类: 若错误行中有字符串结束符,则特别要要注意结束 1、if或while语句 符有没有写错。但是要区分清楚字符‘o’和数字’若错误行是if或者while语句,则要注意以下点: 0’。 1)首先判断是否正确书写if或while关键字; 8、指针类问题 2)然后看有没有用小括号把整个表达式括起来,若错误行中有指针变量,并且该变量名之前没有指若没有则加上小括号; 针运算符,则一般都是加上指针运算符; 3)若条件表达式中有指针变量而且没有指针运算 9、函数首部类问题: 符时,则加上指针运算符; 若错误行是函数首部,则要注意: 4)若if条件表达式中只有一个等于号即数学等号1)首先看该行最后有没有分号,若有则删掉分号;(=),则要改写成两个等于号即逻辑等号(= =); 若中间有分号则要改为逗号; 5)若if条件表达式为其他的比较运算符,则一般2)形参和实参类型不一致问题 是进行逆转或加一个等于号;① 若实参是个地址或数组名或指针变量名,则对 2、for语句 应的形参肯定是指针或数组; 若错误行是for语句,则要注意以下几点:②若实参是二维数组名,则对应的形参应该是指 1)首先判断for有没有书写正确; 针数组或是二维数组; 2)然后看for中的表达式是不是用分号(;)隔开,③若后面用到某形参的时候有指针运算符,则该若不是则改为分号。形参比为指针类型; 记住是分号(;),不是逗号(,)!④若形参是二维数组或指向M 个元素的指针变 3)再者,分析for中的三个表达式,是否符合题量,则该二维的长度必须与main中对于数 意; 组的第二维的长度相同。 第一个表达式表示起始条件,3)函数类型不一致问题 第二个表达式表示终止条件,①若函数中没有return语句,则函数类型为第三个表达式表示循环变量的变化。void; 3、return语句 ②若函数中有return语句,则函数的类型必须若错误行为return语句,则要注意以下几点: 与rerun后的变量类型一致; 1)首先看是不是正确书写return关键字; 记住,调用函数的类型与main中的该函数的类型 2)然后看是不是缺少分号,若是则加上分号即可; 一致! 3)再者判断return后的变量或表达式是否正确; 10.语法错误问题: 这种错误需要根据题意来分析,分析返回变量或表1)语句缺少分号。若错误号中语句没有以分号结达式的值和类型。束则加上分号; 2)变量名不一致。C语言是区分大小写的,若错 4、赋值语句 误行中有大写字母一般都改为小写字母; 若错误行是赋值语句,则要看赋值是否正确,然后11.逻辑错误问题: 看赋值运算符是否写正确。这种题型主要是表达式错误,占的题量比较多 5、定义语句 而且我们没有统一的做题方法,需要我们具体问题若错误行是定义语句,则要注意: 具体分析。 1)首先分析变量类型名是否写对; 12.书写错误问题: 2)然后分析给变量赋初值是否正确; 特别注意我们的注释部分,注释是以/*开始,以 3)若以上均不是,则看是不是少定义了某个变量或*/结尾,不能有多余的,有也只能在/*和*/里面。少了花括号; 注意,比如“/***注释部分*****/*/”是错误的! 简单的C程序设计和基本数据处理 实验目的: 1.掌握C语言的运算符和表达式的正确使用以及C语言的几种基本数据类型和基本输入输出函数的使用方法。 2.通过编程进一步理解和掌握运算符的确切含义和功能。3.理解和掌握运算符与运算对象的关系,优先级和结合方向。 1.通过编程,掌握C语言的几种基本数据类型,int、char、flloat、double,以及由这些基本数据类型构成的常量和变量的使用方法。 2.掌握基本输入/输出函数的使用方法,包括printf()、scanf()、getchar()、putchar()。3.掌握简单的C程序的查错方法。实验内容: 一、输入程序,观察输出结果,并对语句做必要的注释。1./* e1.c */ #include int x; x=27 printf(“%4d,%o,%Xn”,x,x,x);} 输出结果: 解释: 2./* e2.c */ #include char ch; int k; ch=’a’;k=10; printf(“%d,%x,%o,%c”,ch,ch,ch,ch,k); printf(“k=%%dn”,k); } 输出结果: 解释: 3./* e4.c */ #include float x=5/2,y=5.0/2; printf(“x=%f,y=%fn”,x,y);} 输出结果: 解释: 二、编写程序。 1. 编程(c1.c)任意输入3个整型变量x,y,z和一个实型变量avg,计算并输出3个整数的平均值avg,从键盘输入数据并验证结果。观察运行结果。源程序: 输出结果: 解释: 2. 输入两个个整数给a,b,然后交换它们的值,源程序: 输出结果: 实验报告要求 将以上各题的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。 实验二 选择结构程序设计与循环结构程序设计 实验目的 1、了解C语句表示逻辑量的方法(以0代表“假”以1代表“真”); 2、学会正确使用逻辑运算符和逻辑表达式;理解循环条件和循环体 3、熟练掌握if语句和switch语句;熟练使用while、do-while语句实现循环程序设计 4、熟练掌握switch语句中break语句的作用。实验内容 编程,输入一个整数,求它的各位数字之和及位数。例如123的各位数字之和是6,位数是3.输入输出示例: 输入一个整数:12345 12345有5位数,各位数字之和是15 提示:n表示一个整数,则n%10取个位数,n=n/10去掉个位数,组成一个新数。思考:如果要把每位数字转换为字符输出,如何编程。 3. 改错,输入2个正整数,分别将其逆向输出。输入输出示例: 123的逆向是321 321的逆向是123 void main(){ int n,m=0; scanf(“%d”,n); while(n>0) { m=m+n%10; m=m*10; n=n/10;} printf(“%d的逆向是%dt”,n,m);} 4. 编程,找出200以内的所有完数,并输出其因子。一个数如恰好等于它的因子之和,这个数称为完数,如6=1+2+3,其中1、2、3为因子,6为因子和。输入输出示例: 1=1 6=1+2+3 28=1+2+4+7+14 main(){ int i,j n;printf();} 实验报告要求 将以上各题的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。 实验三 数组 实验目的 1.熟练掌握数组的定义和初始化 2.熟练掌握使用数组元素的引用 3.继续掌握排序算法 实验内容 2.编程,输入1个正整数n(1 输入输出示例: 输入整数个数:5 输入5个整数:5 2 1 10 9 2 5 9 10 提示:注意下标的变化。 思考:如果输入的是实数,要求将绝对值最小的数与第1个数交换,绝对值最大的数与最后1个数交换,然后输出交换后的n个数,如何编程。 3.编程,输入1个正整数n(1 输入输出示例: 输入整数个数:10 输入10个整数:-11 2 8 5-3-16 9 7 6 10 排序后:2-3 5 6 7 8 9 10-11-16 5.编程,输入一个n行m列(n<=4,m<=4)的数组,先以n行m列的格式输出该数组,然后找出该数组中值最小的元素,输出该元素及其行下标和列下标。 输入输出示例: 输入数组行和列数n、m:2 3 输入2行3列的数组元素: 12-7 15-18 9 11 12.00-7.00 15.00-18.00 9.00 11.00 a[1][0]=-18.00 思考: 1)如果不从键盘输入数组元素,而是用初始化的方式给数组赋值,运行结果一样吗? 2)如何修改程序,求绝对值最大的元素? 3)将数组a的每一行均除以该行的主对角元素,然后最大值,试编制程序。 实验报告要求 请编写一个函数jsvalue(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。 最后调用函数writedat()读取10组数据,分别得出结果且把结果输出到文件out.dat中。 部分源程序存在文件prog1.c中。 例如:若输入17 5 则应输出:19,23,29,31,37。 请勿改动主函数main()和写函数writedat()的内容。 #include #include void readwritedat(); int isp(int m) { int i; for(i=2;i if(m % i==0)return 0; return 1; } void num(int m,int k,int xx[]) { int s=0; for(m=m+1;k>0;m++) if(isp(m)) { xx[s++]=m; k--;} } main() { int m,n,xx[1000]; clrscr(); printf(“nplease enter two integers:”); scanf(“%d%d”,&m,&n); num(m,n,xx); for(m=0;m printf(“%d ”,xx[m]); printf(“n”); readwritedat(); } void readwritedat() { int m,n,xx[1000], i; file *rf,*wf; rf=fopen(“in.dat”,“r”); wf=fopen(“out.dat”,“w”); for(i=0;i<10;i++){ fscanf(rf,“%d %d”,&m,&n); num(m,n,xx); for(m=0;m fprintf(wf,“n”); } fclose(rf); fclose(wf); } 无忧id 14题(无isp()函数) #include void jsvalue(int m,int k,int xx[]) { int i,j,s=0; for(i=m+1;k>0;i++) { for(j=2;j if(i%j==0) break; if(i==j) { xx[s++]=i; k--;} } } main() { int m,n,zz[100]; printf(“n请输入两个整数:”); scanf(“%d%d”,&m,&n); jsvalue(m,n,zz); for(m=0;m printf(“n”); writedat(); } writedat() { int m,n,zz[100],i; file *in,*out; in=fopen(“in.dat”,“r”); out=fopen(“out.dat”,“w”); for(i=0;i<10;i++){ fscanf(in,“%d%d”,&m,&n); jsvalue(m,n,zz); for(m=0;m fprintf(out,“n”); } fclose(in); fclose(out); } 另一解法: void num(int m,int k,int xx[]) { int n=0,data=m+1; while(n if(isp(data)) xx[n++]=data; data++;} 1物流上机实训课的课堂组织方法 常见的物流上机实训课的课堂组织方法有两种:普通实训法和模拟实训法。普通实训法类似于企业中应用一种新软件之前的操作培训,一般先给学生讲解实训软件所针对的业务模型,教会学生软件各主要环节的基本操作方法,然后布置练习让学生自己熟悉各种基本操作,最后以上交作业或操作考试的方式检查学生对软件操作的掌握情况。模拟实训法强调要模拟企业的真实操作环境,以尽量接近软件实际使用状态的方式组织教学活动,在这种方式中对每位学生规定角色,每人进入的操作界面不完全一样,学生有不同的权限,分配的任务各不相同。 两种课堂组织方法各有特色。普通实训法在目前实训课程的教学中使用较为普遍的,因为这种方式比较符合教学规律,组织起来相对简单,所有学生面临的环境、接受的任务、操作的步骤都是完全相同的,有利于教学节奏的控制、学生的互帮互学。虽然这种方式在形式上与企业中的操作培训相似,但是实际过程与效果都与企业培训相差甚远。由于学生缺乏对业务知识的了解,在这样的课堂组织方式下,学生的注意力往往集中在老师教的基本操作方法上,他们的目标和兴趣很大程度上放在能否通过最后的考核,而这样的考核一般都是看结果,很难考察每个学生的操作过程,所以这样上课一般只能让学生掌握实训软件最基本的操作,很难达到实训课程的教学目标。 模拟训练法侧重于模拟企业的实际应用,所以在实训过程中学生不仅会关注软件的功能与操作方法,还会关注到业务的具体流程,以及自己与上下游工序操作人员之间的配合关系,遇到问题的时候,相互之间的讨论涉及到不同的岗位对同一个问题的不同视角,对软件的理解比前一种方式更深刻,对某些细节更注重一些。但是在这种方式下,一个任务只能使学生对自己所操作的环节有比较深刻的了解,对于与自己的岗位距离较远的业务环节往往不够关心,从而导致对软件的全貌缺乏了解,而且不同的岗位接触到的问题是不同的,所以同样的课程中不同的学生掌握的知识与技能也有较大的差异。要消除这种差异,需要对不同岗位进行轮换,所以这种方法对教学过程的组织提出了很高的要求。 考虑到两种物流上机实训课的课堂组织方法的不同特点,我们在教学过程中综合使用了普通实训法和模拟实训法,在教学阶段的初期采用普通实训法,后期采用模拟实训法。在教学中引导学生关注作业流程,在熟悉作业流程的基础上进行相关操作,避免学生只是机械地完成具体操作部分,并不清楚为什么这样操作,以及与之相关的流程是怎样进行的。在教学中把学生的身份分成供应商、采购商、仓储公司和运输公司,如果在学生还不熟悉各部分流程的操作方法之前就严格地进行分组,要求学生按照分配的角色进行操作,那么在讲解的时候就容易出现问题,因为每一段流程都只涉及部分学生参与操作,另一部分学生就无事可做,这就导致他们转向QQ、游戏等休闲活动。为了改善这种状态,对教学阶段的初期并不强制进行分组,而是采用普通实训法教会学生各部分的操作方法。在操作之前特别强调和讲解操作过程中角色的转变。比如当学生的角色定位于供应商或采购商时,主要的操作都在物流信息平台模块进行,当学生的角色定位在仓储公司,那么所有与仓储有关的作业都在仓储配送中心模块完成;而当学生的角色定位在运输公司时,则主要在运输配送中心模块完成相关的操作。等到学生熟悉了各模块的操作过程之后,则采用模拟实训法,对学生进行分组,各组学生按照指定的角色完成相关操作。 2物流上机实训课教学设计 物流上机实训课采用奥派物流教学平台,属于第三方物流流程模拟类教学软件。其中包含物流信息平台、仓储配送中心、运输配送中心、银行等基础模块。教学内容分为基础设置、建立合作伙伴关系、合同管理、物流作业等。每个模块在运行之初都需要进行基础信息的设置,比如在仓储配送中心部分,学生需要设置库位的长、宽、高,而学生之前对库位也没有实际的概念,这就需要在进行相关操作之前讲解库位的相关知识作为先导知识,同时展现一些实际的数据让学生对于实际的库位有具体的认知,而不是在进行相关设置的时候一头雾水,盲目地填上几个数字,如果机房可以上网的话,也可以让学生通过网络搜索相关知识,同时也需要教师适时的引导,而不是放任学生自己盲目的搜索。透过这种方式,一方面可以调动学生的积极性,吸引学生的注意力,另一方面也让整个实训课变得比较有节奏感。 在教授学生操作方法的时候,我们采用的是普通实训法,在操作演示时,并不是采用全程由教师用预设账号完全自己操作的方式,而是请学生用个人账号在教师及上根据教师的指令操作,这样一方面可以提高学生的参与度与积极性,另一方面当操作时,学生个人账号可能会出现一些个性化的问题,这时候也可以因势利导地针对这些个性化的问题去探讨出现问题的的原因。比如,学生演示入库作业时,在经过入库单审核——货物审核——货物包装——入库单确认——分配库位,前面的操作都很正常,到最后分配库位时,系统提示库位体积小于货位体积,入库失败。这时候就可以就这一问题提问,请学生一起思考出现问题的原因,这样比起教师直接给出答案会更有效果。最终找出原因出在基础设置上,由于在基础设置中库位设置的体积太小,入库时,系统发现入库的产品体积大于库位体积,这时系统就会报错。这时候可以一并向学生讲解应用软件时,按照操作规程操作的重要性,以及物流软件的刚性。同时教师在这里也可以一并指出可能出现的其他问题,或者先让学生操作,当发现学生出现其他典型问题时,再把学生请到教师机上进行演示,然后让学生一起诊断,探索出现问题的原因。 3物流上机实训课的应注意的问题 ①教师应经常走动,避免讲完操作过程就让学生放任自流,不管学生。经常走动,一方面查看学生的操作进度,另一方面也可以增加师生间的互动,当学生在操作中出现状况时方便学生及时与教师沟通。 ②教师应避免平铺直叙,过于平淡,善于发掘上机课中的小插曲,及时引导学生,吸引学生的注意力。比如当出现一些操作失误或系统报错是,把问题拿出来,让学生们一起思考,一起尝试找出答案。 ③管理学生期望值。物流上机实训课作为物流专业实践教学的重要组成部分,学生对这门课有较高的期望,希望这门课可以学到很多实际的知识,以后可以直接拿来使用,但是实际感知的实训课往往比较枯燥乏味,达不到学生的预期。所以上课之初,就需要教师适当调整学生的期望值,避免出现学生期望值过高现象,最终导致失去对上机课的兴趣。 ④采用适当的考核方法。物流上机实训课注重过程,课程的考核应有别于理论性课程的考核,物流上机实训课考核要改变以往卷面理论考核、期末考核的做法,而采用过程考核、阶段考核。在物流上机实训课中,考核应紧跟教学之后,进行阶段性考核,应该更注重学生在实训过程中的表现。 参考文献 [1]夏蓓,张鹏.物流专业实训课程课堂组织研究[J].科技信息,2011,(36):222. [2]徐照.物流教学中实训活动的开展与组织[J].中小企业管理与科技,2009,(34):244. 【c语言上机实训】推荐阅读: 《c语言程序设计》上机实验报告要求05-03 各个上机作业01-26 上机材料05-07 c语言总结07-15 c语言课程12-13 上机实习报告07-02 matlab上机报告04-07 黑马程序员C语言教程:C语言基础之#define详解01-13 c语言概念题09-22 C语言教学建议10-25c语言上机实训 篇2
c语言上机实训 篇3
二级C语言上机考试改错题总结 篇4
c语言上机实训 篇5
c语言上机实训 篇6
物流上机实训课教学研究 篇7