收藏 分销(赏)

技能培训报告rj.doc

上传人:仙人****88 文档编号:9497141 上传时间:2025-03-28 格式:DOC 页数:11 大小:131.50KB
下载 相关 举报
技能培训报告rj.doc_第1页
第1页 / 共11页
技能培训报告rj.doc_第2页
第2页 / 共11页
点击查看更多>>
资源描述
陕西国防工业职业技术学院 《技能培训》报告 专 业: 软件技术 班 级: 软件3101 姓 名: 陈园园 学 号: 13# 指导老师: 淡海英 何杰惠 实训时间: 2011-2012(1)第18周 实训地点: 单片机实验室 成 绩: 二零一一年十二月 题目一 条件\序号 1 2 3 4 A>0 Y Y N N B>0 Y N Y N 1、阅读以下说明和流程图,回答问题1至问题4,将解答填入答题纸的对应栏内。 【说明】 下面的流程图中有两个判断条件A>0和B>0。这些判断条件的各种组合情况如下所示。表中Y表示相应的条件成立,N表示相应的条件不成立。每一列表示一种条件合,并在列首用相应的序号来表示。   【流程图】   【问题1】(4分)   当遇到哪几种条件组合时,流程图能执行“1→i”?(写出相应的序号即可) 【问题2】(4分)     当遇到哪几种条件组合时,流程图能执行“2→j”?(写出相应的序号即可) 【问题3】(6分)     当遇到哪几种条件组合时,流程图能执行“3→k”?(写出相应的序号即可) 【问题4】(1分)     该流程图共有多少条实际执行路径? 2、程序清单 (1) A>0 B>0 A>0 B<=0 (2)A>0 B<=0 A<=0 B<=0 (3)A>0 B>0 A<=0 B>0 A<=0 B<=0 3、运行结果 (截图) (1)1 2 (2)2 4 (3)1 3 4 (4)4条 题目二 1、阅读以下说明和C函数,将应填入(n)处的语句或语句成分写在答题纸的对应栏内。【说明1】     函数deldigit(char*s)的功能是将字符串s中的数字字符去掉,使剩余字符按原次序构成一个新串,并保存在原串空间中。其思路是:先申请一个与s等长的临时字符串空间并令t指向它,将非数字字符按次序暂存入该空间,最后再拷贝给s。 【C函数】 void deldigit(char*s) {   char*t=(char*)malloc((1)):/*申请串空间*/   int i,k=0;   if(!t) return;   for(i=0:i<strlen(s);i++)       if(!(*(s+i)>=‘0’&&*(s+i)<=‘9’)){             t[k++]=(2);       }     (3)=‘\0’              /*设置串结束标志*/   strcpy(s,t);   free(t); } 【说明2】     函数reverse(char*s,int len)的功能是用递归方式逆置长度为len的字符串s。例如,若串s的内容为“abcd”,则逆置后其内容变为“deba”。 【C函数】 void reverse(char*s, int len) {   char ch;   if((4))   {     ch=*s;     *s=*(s+len-1);     *(s+len-1)=ch;     reverse((5));   } } 2、程序清单: 说明1: void deldigit(char*s) {   char*t=(char*)malloc(strlen(s)+1);/*申请串空间,strlen(s)+1是申请空间大小*/   int i,k=0;   if(!t) return;   for(i=0:i<strlen(s);i++)       if(!(*(s+i)>=‘0’&&*(s+i)<=‘9’))/*判断s[i]是否为数字*/ {             t[k++]=s[i];/*如果s[i]是不是数字则将其传给t[k]并且k++指向下一位*/       }     t[k]=‘\0’              /*设置串结束标志*/   strcpy(s,t); /*将t中现有的元素拷贝给s,s中存放的是没有数字的元素*/   free(t);/*释放t空间*/ } main(){ char w[10]; scanf("%s",&w); deldigit(&w); printf("%s",w); } 说明2: #include"stdio.h" void reverse(char *s, int len) { char ch; if (len>1) /*字符串的长度>1*/ { ch = *s; *s = *(s+len-1); *(s+len-1) = ch; reverse(s+1,len-2);/*递归调用依次调换*/ } } main(){ char a[20]; //int s; // s=strlen(a); scanf("%s",&a); reverse(&a,strlen(a)); printf("%s",a); } 3、运行结果 (截图) 说明1: 说明2: 题目三 1、阅读以下说明和C代码,回答问题1和问题2,将解答写在答题纸的对应栏内。 【说明1】   下面代码的设计意图是:将保存在文本文件data.txt中的一系列整数(不超过100个)读取出来存入数组arr[ ],然后调用函数sort()对数组arr的元素进行排序,最后在显示屏输出数组arr的内容。 【C代码】 【问题1】(9分)     以上C代码中有三处错误(省略部分的代码除外),请指出这些错误所在的代码行号,并在不增加和删除代码行的情况下进行修改,写出修改正确后的完整代码行。  【说明2】   下面是用C语言书写的函数get_str的两种定义方式以及两种调用方式。 行号 代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #include<stdio.h> void sort(int a[], int n) {/*对n个元素的整型数组a按递增方式排列*/ /* 此处代码省略 */ return; } int main() { int i, num = 0; int arr[100]; FILE fp; fp = fopen("data.txt", "r"); if (!fp) return -1; while(!feof(fp)) { fscanf(fp, "%d", arr[num++]); } sort(arr[], num); for(i=0; i < num; ) fprintf(stdout, "%d ", arr[i++]); fclose(fp); return 0; 定义方式1 定义方式2 void get_str(char* p) { p = (char *) malloc(1+sizeof("testing")); strcpy(p, "testing"); } void get_str(char** p) { *p =(char *) malloc(1+sizeof("testing")); strcpy(*p, "testing"); } 调用方式1 调用方式2 int main( ) { char* ptr = NULL; get_str(ptr); if (ptr) printf("%s\n", ptr); else printf("%p\n", ptr); /* 输出指针的值*/ return 0; } int main( ) { char* ptr = NULL; get_str(&ptr); if (ptr) printf("%s\n", ptr); else printf("%p\n", ptr); return 0; } 【问题2】(6分)   若分别采用函数定义方式1、2和调用方式1、2,请分析程序的运行情况,填充下面的空(1)~(3)。     若采用定义方式1和调用方式1,则输出为“00000000”。     若采用定义方式1和调用方式2,则(1)。     若采用定义方式2和调用方式1,则(2)。 若采用定义方式2和调用方式2,则(3)。 2、程序清单(要求有主要注释说明) 3、运行结果 (截图) 题目四 1、阅读以下说明和C函数,将应填入(n)处的语句或语句成分写在答题纸的对应栏内。 【说明】 己知单链表L含有头结点,且结点中的元素值以递增的方式排列。下面的函数DeleteList在L中查找所有值大于minK且小于maxK的元素,若找到,则逐个删除,同时释放被删结点的空间。若链表中不存在满足条件的元素,则返回-1,否则返回O。     例如,某单链表如图4-1所示。若令minK为20, maxK为50,则删除后的链表如图4-2所示。   图4-1 图4-2 链表结点类型定义如下:   typedef struct Node{             int data;             struct Node*next;       }Node, *LinkList; 【C函数】     int DeleteList (LinkListL, int minx, int maxK)     {/*在含头结点的单链表L中删除大于minx且小于maxK的元素*/           (1) *q=L, *p=L->next; /*p指向第一个元素结点*/         int delTag=0;         while(p)             if(p->data<=minK)                 {q=P; p=(2);}                 else                 if ( p->data<maxK){/*找到删除满足条件的结点*/                     q->next=(3) free(p);                     p=(4);delTag=1;                   }                   else break;         if((5))return-1;           return 0; } 2、程序清单(要求有主要注释说明) typedef struct Node{             int data;             struct Node*next;       }Node, *LinkList;     int DeleteList (LinkListL, int minx, int maxK)     {/*在含头结点的单链表L中删除大于minx且小于maxK的元素*/          Node *q=L, *p=L->next; /*p指向第一个元素结点*/         int delTag=0;         while(p)             if(p->data<=minK)                 {q=P; p=p->next;}                 else                 if ( p->data<maxK){/*找到删除满足条件的结点*/                     q->next=p->next free(p);                     p=q->next;delTag=1;                   }                   else break;         if(delTag!=1)return-1;           return 0; } 3、运行结果 (截图) 题目五 1、 阅读以下说明和Java代码,将应填入(n)处的语句或语句成分写在答题纸的对应栏内。 【说明】     某数据文件students.txt的内容为100名学生的学号和成绩,下面的程序将文件中的数据全部读入对象数组,按分数从高到低进行排序后选出排名前30%的学生。 【Java代码】 import java.io.*; class Student{     private String sNO; //学号     private int Credit; //分数     public int getCredit(){         return Credit;     }     public String toString(){         return“sN0=“+this.sNO+”,Credit=”+this.Credit;     }     Student(String sNO, int Credit){             (1)=sNO;             (2)=Credit;     } } public class SortStudent{     void sort(Student[] s){ //Sort the array s[] in decending order of Credit         for(int i=0; i<s.length-1;i++){             for (int j=i+1:j<s.length; j++){                 if (s[i].(3)<s[j].(4)){                     Student tmp=s[i];                       s[i]=s[j];                       s[j]=tmp;                   }               }         } } public static void main(String argv[]){        Student[] testStudent=new Student[size];        try{         BufferedReader in=new BufferedReader(new FileReader(“students.txt”));             boolean done=false;             int i=0;             while(!done){               String s=in.readLine();  //每次读取一个学生的学号和成绩       if (s!=null){           String tmp[]=s.split(“,”);            testStudent[i++]=(5) (tmp[0],Integer.parselnt(tmp[1]));                 }else                         done=true;             }             in.closeo();             (6)=new SortStudent();             ss.sort(testStudent);             System.out.println(“top 30%:”);             for (int j=O; j<size*0.3;j++)               System.out.println(testStudent[j]);         }catch (IOException e){             System.out.println(“io error!”);         }catch (NumberFormatException e){             System.out.println(“not a number!”);         }     }       (7)int size=100;//学生总数 } 2、程序清单(要求有主要注释说明) 3、运行结果 (截图) 培训总结 12月26号,我参加了程序员考试培训。在培训期间,听了老师们的培训,使我们受益匪浅,首先要成为一个优秀的程序员需要要学的课程很多,其中,基础课程包括:计算机硬件基础、计算机网络基础、操作系统、计算机组成原理、计算机体系结构、数据库原理、软件工程、离散数学、算法设计与分析、数据结构、编译原理 编程语言可以根据需要选择,底层开发人员必学:汇编语言、c、c++;web应用表示层开发人员:html、xml、javascript、jsp(或asp,php)等;普通应用程序开发:c++、vb、.net(其中包括多种语言,可根据现有基础选择)、java等。深刻体会到了以下的几点: 一、要养成良好的学习习惯;良好的学习习惯包括:课前预习、认真听讲和课后编码练习等。 二、学习过程中,不仅仅是停留在表层的东西,对于简单的例题也应该有耐心去琢磨 、调试和尝试改动,这样也能加深对课程的理解和编程能力。 三、一定要多读、多看与JAVA相关的书籍甚至是论坛的帖子。学习是无止境的,我们在学习的同时,JAVA也在发展。所以,多看些关于JAVA的书籍和论坛上的技术讨论帖是非常有帮助的,因为它们都是与时俱进的,能让我们获得的知识更快,更有时效性,也让我们的知识来源更为广泛和灵活。 这仅仅是我这一个周参加程序员培训以来学到的一部分而已,我需要学习的还有很多很多。在学习的过程中不断的总结和积累经验是非常重要的。老师和同学们在这期间给予的帮助是非常大的,在接下来的学习生活中,我会继续努力的,也让我们继续协作,共同进步!
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 教育培训

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服