当前位置:文档之家› 实训报告1

实训报告1

** **学院实训报告实训科目《C语言基础实训》系部名称: 信息工程系专业班级: 信管09—1学生姓名: ***学号: *********指导教师: **********指导教师评语目录1.概述 (2)1.1课程设计目的 (2)1.2课程设计要求 (2)1.3课程设计的基本步骤 (2)1.4课程设计的进度安排 (3)1.5其它要求 (3)2.实训项目及其说明 (3)2.1项目一 (3)2.2项目二 (4)2.3项目三 (5)2.4项目四 (6)2.5项目五 (7)2.6项目六 (9)3.课程设计总结 (11)4.相关调试软件的使用说明 (12)5.相关错误及改错 (12)6.参考文献 (16)第一部分一、课程设计的性质和目的:基础语言程序设计是计算机及相关专业的一门公共基础课,也是一门实践性很强的课程。

它使学生获得面向过程程序设计的基本编程训练。

每个学生必须完成一定数量的上机作业。

通过上机作业进一步加深对课程基本内容的理解。

同时,在程序设计方法及上机操作等基本技能和科学作风方面受到比较系统的、严格的训练。

二、课程设计教学的基本要求和内容:实践证明,对语言的学习除了学语法之外,还必须经过大量的实践训练(如何阅读、编写与修改、调试程序),授课与上机实训相结合,以提高学生实际应用能力提高动手能力,这就要求学生上机前先编好程序,在老师的指导下,认真调试,对于存在的问题加以分析。

由于学生编程和上机的熟悉程度往往差别较大,本大纲所要求的实验为每个学生必须完成的实验,即最低要求。

鉴于信息系各专业普遍以“C语言程序设计”为基础程序设计语言,故本大纲以“C语言程序设计”为主设定实训内容和要求。

实验实训的基本要求是:1、严格按要求使用计算机等相关实验设备;2、通过实验实训提高动手操作能力;3、通过实验实训学会用专业知识分析问题、解决问题的基本方法和步骤;4、能够用理论指导实践;5、通过实验实训加深对理论知识的理解;6、能够掌握一定软件开发技术,具备一定的软件开发能力。

三、课程设计的基本步骤:设计的课题尽量结合教学、科研的实际课题,规模、大小适当,具有一定复杂度。

应根据题目大小、难度确定是否分组,组内成员人数。

1.需求分析和系统分析根据所选题目,进行必要的需求分析,总结系统所要完成的功能,最终形成完整的需求分析和系统分析。

2.编码在系统分析的基础上,根据已设计的数据库结构,编写系统代码。

3.测试按照系统测试的原则、方法和步骤,对系统进行测试。

测试中应形成测试报告。

4.编写实训报告四、课程设计实训的进度安排实训进度应由学生根据实训时间、本组学生人数、系统大小、难易,自行制定项目进度对学生的其它要求:(1)每人一题,独立完成。

(2)应认真阅读设计指导书,了解所做的设计内容及要求,完成课设。

有问题及时主动通过各种方式与教师联系沟通。

(3)学生要发挥自主学习的能力,查阅相关的参考文献;完成设计任务。

(4)认真撰写实训报告,要求格式规范、文字通顺。

(5)相关实训上交资料:①源程序:学生开发的所有源程序;②实训报告。

第二部分项目一:学生成绩排名1、实训目的(1)熟悉变量、数组定义、使用、输入、输出等基本操作;(2)进行选择、循环结构程序设计练习;(3)掌握冒泡法排序的算法。

2、实训内容(1)定义一个数组a[11],用以存放学生的成绩;(2)从键盘输入10个学生成绩;(3)采用冒泡法,将学生成绩按照从高到低进行排序;(4)再输入一个学生的成绩,将此成绩按照排序规律插入原学生成绩数组;(5)将排好序的成绩单进行反序存放,即原来是从高到低,现在改为从低到高排列。

3、实训要求1、将以上每一步骤的结果均打印输出,验证程序是否正确实现题目要求2、说明程序设计的算法,附主要程序段。

附:(冒泡法排序的算法)#include <stdio.h>void main(){ float t, a[11];int i,j;float m;}void ex(float x[],float p);printf("请输入10个学生的成绩:\n");for(i=0;i<10;i++)scanf("%f",&a[i]);printf("\n");for(i=0;i<9;i++)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("学生成绩从高到低排序为:\n");for(i=0;i<10;i++)printf("%f ",a[i]);printf("\n");printf("再输入一个学生的成绩:\n");scanf("%f",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;printf("插入一个学生之后学生成绩排序为:\n");for(i=0;i<11;i++)printf("%f ",a[i]);printf("\n");ex(a,11);printf("成绩从低到高排序为:\n");for(i=0;i<11;i++)printf("%f ",a[i]);printf("\n"); }void ex(float x[],float p){ float t;int i,j,q=(p-1)/2;for(i=0;i<=q;i++){ j=p-1-i;t=x[i];x[i]=x[j];x[j]=t; }return; }项目二:按条件实现学生成绩排名1、实训目的(1)复习数组,选择、循环结构程序设计;(2)掌握函数的定义、调用、声明,以及参数的两种传递方式。

2、实训内容(1)在函数中进行10个学生成绩从高到低排名sort(int a[10]);(2)改进第一步的函数为sort(int a[],int n),进行n个学生成绩从高到低排名;(3)改进第二步的函数为sort(int a[],int n, char style), 将n个学生成绩从高到低排名,排名方式;(4)根据sort()函数的style参数进行,如style为‘a’按升序排,style为’d’按降序排。

(a:ascending 升,d:descending 降)3、实训要求(1)说明程序设计的算法,附主要程序段;附:(选择排序的算法)#include<stdio.h>main(){ void sort (int a[],int n,char style);int a[10],i,n;char s;printf ("请输入n的值:\n");scanf("%d",&n);printf ("请输入%d个学生的成绩:\n",n);for (i=0;i<n;i++)scanf ("%d",&a[i]);printf ("请输入style的值:\n");scanf ("%c",s);sort (a,n,s);printf ("\n");printf("输出:\n");for(i=0;i<n;i++) printf("%d ",a[i]); }void sort (int a[],int n,char style) { int i,j,k,t;if (style=='a'){ for(i=0;i<n-1;i++){ k=i;for (j=i+1;j<n;j++)if (a[k]>a[j])k=j;t=a[k];a[k]=a[j];a[i]=t; } }if (style=='b'){ for(i=0;i<n-1;i++){ k=i;for (j=i+1;j<n;j++)if (a[k]<a[j]) k=j;t=a[k];a[k]=a[j];a[i]=t; } } }项目三:用指针、数组优化学生成绩排名1、实训目的(1)熟悉变量的指针和指向变量的的指针变量的概念和使用;(2)熟悉数组的指针和指向数组的的指针变量的概念和使用。

2、实训内容(1)定义一个数组stu[10]存放10个学生的成绩,从键盘输入数据,要求用指针实现;(2)将数组stu[10]的内容输出到屏幕上,要求用指针实现;(3)将成绩数组按照从高到低进行排序,要求用指针实现;(4)将第三步内容放在函数中实现,在主函数中调用实现排序,用指针实现,输出排序后的成绩单;(5)采用指针方法,输入字符串“student score ”,复制该字符串并输出(复制字符串采用库函数或用户自定义函数)。

3、实训要求(1)说明程序设计的算法,附主要程序段。

附:(用数组的形式实现选择排序的算法)#include<stdio.h>void main(){chara[]="studentscore",b[20],*p1,*p2; int i,stu[10],*p; void sort (int * x,int n);p1=a;p2=b;for (; *p1!='\0';p1++,p2++) *p2=*p1;*p2='\0';printf ("输出字符串b:\n");for (i=0;b[i]!='\0';i++)printf ("%c\n ",b[i]); p=stu;printf ("请输入十个学生的成绩:\n"); for (i=0;i<10;i++)scanf("%d",p++);p=stu; sort (p,10);printf("\n");for (i=0;i<10;i++)printf("%d ",*(stu+i));printf ("\n"); }void sort (int * x,int n){ int i,j,k,t;for (i=0;i<10;i++){k=i;for (j=i+1;j<n;j++)if (* (x+j)> * (x+k)) k=j;if (k!=i){ t=* (x+i); * (x+i)= * (x+k); * (x+k)=t; } } }项目四:学生成绩单制作1、实训目的(1)掌握结构体变量及数组的定义、赋值、初始化、输入、输出;(2)结构体数组的操作。

相关主题