计算机编程实习报告

土木工程20##级

计算机实习任务书

                                  

指导教师    李松  李红               

班    级   土木(XX)班               

姓    名   Mr.su               

学    号   12345678               

西南交通大学土木工程学院

20##年11月


(一)实习时间:20##年11月30日—12月14日

(二)实习地点:X7103

(三)实习目的:

计算机实习是本科计算机基础教学的一个重要环节。它对于巩固学生的计算机基础知识,增强学生的计算机应用水平,改善学生的知识结构,具有重要意义。

本课程的教学目的是:通过系统的上机实习,使学生的计算机基础知识与基本操作技能得到进一步的巩固,提高学生的编程能力和用机水平,培养学生用计算机分析与解决问题的意识,为后续课程打下基础。

(四)实习内容:

本实习要求完成如下三项任务:

1. 巩固所学的计算机基本知识和基本操作技能,包括:

(1)   熟练掌握正确的键盘指法和英文盲打技术;

(2)   能熟练使用Windows操作系统;

(3)   熟练掌握Word、Excel、PowerPoint等办公自动化软件;

(4)   能使用网络获取、发送信息;

(5)   用PowerPoint制作一组幻灯片(幻灯片所表述的主题自定),或用Excel绘制出图1所示的sin(x)、cos(x)函数曲线。

2. 计算机语言及编程

用本学期已学过的VC++语言编程。编程题目及要求由指导教师指定(可参考附录中提供的题目)。

3. 提交一份实习报告(要求打印)

实习报告不得少于1000字:主要总结实习心得和实习成果(全部程序及计算结果或图形以及PowerPoint幻灯片)。

 

(五)实习成果:

【1】程序1:


按以下形式打印出杨辉三角形中的各值

算法原理:

数据结构:用一个二维数组存放杨辉三角形的数据。

分析杨辉三角形的数据特点,该三角形每一行的行初和行末的数据都是1,从第三行起,每行数据的第2—i-2列数据都满足以下关系:a[i][j]=a[i-1][j-i]+a[i-1][j];根据上述关系得出杨辉三角的每个数据存放在已定义的二维数组中,然后按照图形格式输出已经存放的数据,得出杨辉三角。

程序流程图:

变量说明:数组a[i][j],i表示行,j表示每一行的第几个数。

使用方法:输入程序,直接显示。

源程序:

#include <iostream>

   #include <iomanip>

   using namespace std;

   void main()

{

   int i,j;

   int a[11][22];

   for(i=0;i<11;i++)

   for(j=0;j<22;j++)

   a[i][j]=0;

   cout<<endl;

   a[0][10]=1;

   a[1][11]=1;

   a[1][9]=1;

   for(i=2;i<11;i++)

   for(j=0;j<22;j++)

   a[i][j]=a[i-1][j-1]+a[i-1][j+1];

   for(i=0;i<10;i++)

{

   for(j=0;j<22;j++)

   if(a[i][j]==0)

   cout<<setw(4)<<' ';

else

   cout<<setw(4)<<a[i][j];

}

   cout<<endl;

}

}  

程序运行结果:

【2】程序2:

从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。

算法原理:没有具体详细的数学算法原理。

程序流程图:

变量说明:p表示的是要输入的字符,char p[100]表示的是一个字符型一维数组,t表示的是输出文件的名称,doc表示的是文件的输出格式,i表示的是循环变量。

使用方法:输入需要的字符,用#键结束,#键之后的不能输出。

源程序:

#include<iostream>

#include<fstream>

using namespace std;

void main()

{char p[100]={0};int i=0;

ofstream t;

t.open("t.doc",ios::out);

if(!t==1)

cout<<"文件打开失败"<<endl;

else

do

cin>>p[i++];

while(p[i-1]!='#');

t<<p <<endl;

}

程序运行结果

 

【3】程序3:

求一元二次方程的根,其中系数a,b,c为实数,由键盘输入

算法原理:

根据一元二次方程的特点就方程系数取不同数值是进行分类考虑:

1 a=0,b=0此时方程不成立。

2 a=0,b!=0,此时方程为一元一次方程。

3 a!=0,此时方程为一元二次方程,依据判别式?,

?>=0,得出方程的两个实数解,?<0得出方程无实数解。

程序流程图:

变量说明:a,b,c表示方程式的系数,x1,x2表示方程的解

使用方法:输入方程式系数a,b,c,再按Enter键,即可得此一元二次方程的根。

源程序:

#include <iostream>

#include<cmath>

using namespace std;

void main()

{double a,b,c,x1,x2;

cout<<"请输入三个任意实数:"<<endl;

cin>>a>>b>>c;

if(a==0&&b==0)

cout<<"default"<<endl;

if(a==0&&b!=0)

{x1=-(c/b);

cout<<fixed;

cout.precision(2);

cout<<"此方程的解为"<< x1<<endl;}

if(a!=0)

{if(pow(b,2)-4*a*c<0)

cout<<"此方程无实数解"<<endl;

else

{x1=(-b+pow((pow(b,2)-4*a*c),0.5))/(2*a);

x2=(-b-pow((pow(b,2)-4*a*c),0.5))/(2*a);

cout<<fixed;

cout.precision(2);

cout<<"此方程的解为:"<<endl;

cout<<"x1="<<x1<<"   "<<"x2="<<x2<<endl;}}}

运行结果:

附加图表题 :

  用Excel表格绘制正、余弦曲线(如图所示)

(六)实习心得:

    计算机作为计算、控制和管理的理想工具,有力地推动了科研、国防、工业、交通、邮电、医学等各行各业的发展。在快速的发展节奏中,计算机起着不可替代的作用。作为当代大学生,必须熟悉掌握计算机技术。通过这三周的计算机上机实习,我掌握了计算机应用的新知识,并在实习过程中,巩固了我用计算机解决现实问题的应用能力。

    在计算机基本知识和基本操作技能方面,我熟悉掌握了以下技能:

    一.熟练掌握正确的键盘指法和英文盲打技术。本来我的盲打打字速度就比较快,在这次实习中,我通过金山打字通软件,学习到了进一步提高盲打打字速度的技巧;

    二.能熟练使用Windows操作系统;

    三.通过用Word、PowerPoint尝试制作教学课件。通过上机操作,掌握了添加数学符号、编辑公式、添加数据表格、贴图、更改字体、设置页面过渡效果等实用技能;

    四.应用网络搜索学习资料和发送信息。通过百度,google等搜索引擎,快速找到所需的学习资料,提高学习效率。再通过登录邮箱,把资料存进邮箱,便达到了随时随地通过网络都可以看到保存的资料的效果;

    五.用Excel绘制函数曲线处理大学物理实验数据。将实验数据输入Excel,再通过自定义函数计算出实验结果,并用实验数据通过Excel得绘制函数图线功能绘制出实验数据的图线,快速直观地观察出实验变现出的规律。

    在计算机语言及编程方面,我有以下收获体会:

通过C++编程,我们可以开发软件和设计程序。掌握C++的用法,我们便可以通过它来快速地解决现实生活中一系列同类的计算问题。在这次实习中,我们要编写出杨辉三角形。但是由于今年五月的地震,C++课程后面有一部分我还没有学习,导致对该语言掌握还不是很牢固扎实。所以在这次实习中,我回顾了C++教材,并自学了教材靠后几章的课程,不懂的地方与同学们交流探讨。然后通过编写几个课本上的几个编程习题,巩固好知识。在一边学习一边编写杨辉三角形的程序的过程中,我不断地调试程序,克服了遇到的困难,最终完成了这次实习的任务。

在调试过程中得出满意的成果,是的,任何成果的诞生都是这样的一个过程。通过C++编程实习,我掌握了其操作细节,更加深刻地了解了软件的开发及工作原理,同时也提高了自己的编程技能。这一次计算机实习的时间虽然比较短,但是使我对计算机编程有了进一步的了解。我想,这对明年我参加的计算机等级考试是非常有帮助的。而且在今后的工作生活中,我也能利用C++这个工具来快捷地完成一系列的计算任务,有效地提高工作效率。所以说,这次实习正是我在大学生活中提高个人综合能力的一次很好的锻炼。

(七)参考文献:

《大学计算机程序设计基础C++》

《大学计算机程序设计基础与Visual C++实验指导书》

 

第二篇:编程实习报告

编程实习报告

姓名:万林

学院:自动化

学号:09061334

班级:09062813

指导老师:王春林 朱胜利

一、实习目的:

通过编写程序复习大一所学的C语言知识,学习在Microsoft VisualC++环境下编辑、编译及运行C程序。

二、实习任务

在熟练掌握C语言基础下设计并实现一个学生信息系统,管理一个班的学生的基本信息。每个学生的信息名片包含的主要信息有:姓名、电话、手机、学号、四项信息。要求该软件实现以下功能:

1.  创建学生信息联表

2.  添加学生信息

3.  删除学生信息

4.  查找学生信息

5.  显示所有学生信息

6.  保存链表数据到文件

7.  修改学生信息

三、程序流程图(见附录)

四、原代码:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define  CH      30   /* 最大字符数,可修改 */

struct student

{

              char    name[CH];    /* 姓名 */

              int     age;           /* 年龄 */

              char    tel[CH];     /* 电话 */

              int     num;                    /*学号*/

     struct student *next;

};

struct student *creat()              //创建链表函数

{   

     int i ;

        struct student *p1,*p2;

        struct student *head;

        int num_node;

        printf("输入学生人数及资料\n");

        printf("人数:");

     scanf("%d",&num_node);

        p1=p2=(struct student *)malloc(sizeof(struct student));  //这里创建了一个节点

        printf("姓名 :");

     scanf("%s",&p1->name);

     printf("年龄 :");

     scanf("%d",&p1->age);

     printf("电话 :");

     scanf("%s",&p1->tel);

        printf("学号 :");

        scanf("%d",&p1->num);

        head=p1;

        for( i=1;i<num_node;i++)            

        {

                if(num_node==1)

                {

                        head=p1;

                        head->next=NULL;

                        return head;

                }

                else

                {

                            p1=(struct student *)malloc(sizeof(struct student));

                            printf("姓名 :");

                            scanf("%s",&p1->name);

                            printf("年龄 :");

                            scanf("%d",&p1->age);

                            printf("电话 :");

                            scanf("%s",&p1->tel);

                            printf("学号 :");

                            scanf("%d",&p1->num);

                            p2->next=p1;

                            p2=p1;

                }

        }

        p2->next=NULL;

        return head;

}

void print(struct student *head)     //显示链表信息

{

        struct student*p;

        p=head;

        printf("输出学生信息:\n");

        while(p!=NULL)

        {

                printf("姓名: %s 年龄: %d 电话:%s 学号: %d",p->name,p->age,p->tel,p->num);

                p=p->next;

        }

}

struct student *load() //把链表从文件中读入到新的链表中

{

        struct student *p1,*p2,*head=NULL;

        FILE *fp;

        if((fp=fopen("mm.txt","rb"))==NULL)      //mm.txt为文件名,rb为只读使用方式

        {

                printf("打开失败\n");

                exit(1);

        }

        printf("\n -----文件读取!-----\n");

        p1=(struct student *)malloc(sizeof(struct student));

        if(!p1)

        {

                printf("内存溢出!\n");

                return head;

        }

        head=p1;

        while(!feof(fp)) //feof函数判断文件是否读到末尾

        {

                if(1!=fread(p1,sizeof(struct student),1,fp))            //fread为输入函数

          break;

                printf("姓名: %s, 年龄: %d,电话:%s, 学号 :%d\n",p1->name,p1->age,p1->tel,p1->num);

                p1->next=(struct student *)malloc(sizeof(struct student));

                if(!p1->next)

                {

                        printf("溢出内存!\n");

                        return head;

                }

                p2=p1;

              p1=p1->next;

        }

        p2->next=NULL;

        fclose(fp);

        printf("---成功读取文件!!!---\n");

        return head;

}

struct student *del(struct student *head)     //删除学生信息

{

 struct student *p1, *p2;

         char name[CH];

        printf("请输入要删除的学生的姓名:");

        scanf("%s",&name);

         p1=head;

         while( (strcmp(p1->name,name)!=0) && (p1->next!=NULL)) //字符串比较函数

            {

                        p2=p1; p1=p1->next;

            }

        if(strcmp(p1->name,name)==0)  

           {

                  if(p1==head)          //是头节点

                  {  head=p1->next ;       free(p1);   }

                  else if(p1->next==NULL)  //是尾节点

                  {  p2->next=NULL ;    free(p1);  }

                  else

                  {  p2->next=p1->next; free(p1);}

              printf("删除成功\n");

           }

            return head;

}

  struct student *insert(struct student *head)           //增加学生信息

 {

  struct student *pnew;

  pnew=(struct student *)malloc(sizeof(struct student));

     printf("姓名 :");

     scanf("%s",&pnew->name);

     printf("年龄 :");

     scanf("%d",&pnew->age);

     printf("电话 :");

     scanf("%s",&pnew->tel);

     printf("学号:");

     scanf("%d",&pnew->num);

     pnew->next=head;

  head=pnew;

  return head;

}

  struct student *find(struct student *head)             //查询学生信息

{

        struct student *p1,*p2;

        char name[CH];

        printf("查询学生姓名:");

        scanf("%s",name);

     p1=head;

        while(strcmp(name,p1->name)!=0 && p1!=NULL)

        {

            p2=p1;p1=p1->next;

        }

        printf("姓名: %s 年龄: %d 电话: %s学号: %d\n",p1->name,p1->age,p1->tel,p1->num);

        return head;

}

 struct student *gai(struct student *head)          //修改学生信息

{

 struct student *p1, *p2;

        char n;

        char name[30];

        printf("请输入要修改的学生的姓名:");

        scanf("%s",&name);

         p1=head;

         while( (strcmp(p1->name,name)!=0) && (p1->next!=NULL))

            {

                        p2=p1; p1=p1->next;

            }

        if(strcmp(p1->name,name)==0)   //找到了!

           {

                   printf("1.修改姓名\n");

                   printf("2.修改年龄\n");             

                   printf("3.修改电话\n");

                   printf("4.修改学号\n");

                   printf("请选择菜单编号:   ");

                   scanf("%d" ,&n);

                   switch(n)

                   {

                           case 1: printf("输入新姓名 :");

                                 scanf("%s",&p1->name);break;

                           case 2:printf("输入新年龄 :");

                                 scanf("%d",&p1->age);break;

                                 case 3:printf("输入新电话 :");

                                 scanf("%s",&p1->tel); break;

                                 case 4:printf("输入新学号 :");

                                 scanf("%d",&p1->num);;break;

                                 default:printf("请在1-4之间重新选择\n");

                   }

           }

                      return head;

}

void save(struct student *head)                    //保存链表数据到文件

{

 FILE *fp;

 struct student *p;

 if((fp=fopen("mm.txt","w"))==NULL)                    //fopen函数使变量w与文件mm.txt相连

 {

                printf("打开文件失败\n");

                exit(1);

 }

 printf("\n正在保存......\n");

 p=head;  

 printf("保存完成, head : %d\n",head);

 while(p!=NULL)

 {

                printf("姓名: %s 年龄: %d 电话: %s学号: %d\n",p->name,p->age,p->tel,p->num);

                fwrite(p,sizeof(struct student),1,fp);        //fwrite为输出函数

                p=p->next;

 }

 fclose(fp);                                                                         //关闭文件

 printf("-----保存成功!!-----\n");

}

void main()

{

               char ch;

               struct student *head;

               for(;;)

                     {

                            printf("\t\t学生信息系统\n");

                printf("*****系统功能菜单*****\n");

                printf("----------------------------\n");

                            printf("1.  创建学生信息链表\n");

                            printf("2.  显示学生信息\n");

                            printf("3.  删除学生信息\n");

                            printf("4.  增加学生信息\n");

                            printf("5.  保存学生信息\n");

                            printf("6.  查询学生信息\n");

                            printf("7.  修改学生信息\n");

                            printf("请选择菜单编号:   ");

                            scanf(" %d",&ch);

                            switch(ch)

                            {

                                   case 1: head=creat();       break;             //调用creat函数

                                   case 2: print(head);        break;

                                   case 3: head=del(head);     break;

                                   case 4: head=insert(head);  break;

                                   case 5: save(head);         break;

                                   case 6: head=find(head);    break;

                                   case 7: head=gai(head);        break;

                                   default:printf("请在1-7之间重新选择\n");

                            }

                     }

                    

}

五、程序运行图

六、心得体会:

程序设计是一门实践性很强的课程,对C程序设计者初学者而言,除了学习、熟记C语言的一些语法规则外,更重要的是多读程序,懂动手编程序。先模仿,在模仿的基础上改进,在改进的基础上提高。做到善于思考,边学边练,举一反三,学会“小题大做”,一题多解。学过的知识会应用才能体现出它的价值。

C语言作为广为流行的计算机程序设计语言,对于跟程序有关的专业学生是必须掌握的。这次实习让我重温了编写一个简单程序的步骤,认识到自己在程序编写还是那么的缺少经验。

相关推荐