本栏目下题库来源于互联网,轻速云承诺对于用户导入平台的题库是严格保密的,不会在此呈现!
轻速云给您提供更好的在线考试系统服务!
2010年下半年程序员下午试卷
1、【 简答题
试题一(共15分)
    阅读以下说明和流程图,回答问题1至问题4,将解答填入答题纸的对应栏内。【说明】
    下面的流程图中有两个判断条件A>0和B>0。这些判断条件的各种组合情况如下表所示。表中Y表示相应的条件成立,N表示相应的条件不成立。每一列表示一种条件组合,并在列首用相应的序号来表示。
    
【流程图】
    
【问题1】(4分)
    当遇到哪几种条件组合时,流程图能执行“1→i”?(写出相应的序号即可)【问题2】(4分)
    当遇到哪几种条件组合时,流程图能执行“2→j”?(写出相应的序号即可)【问题3】(6分)
    当遇到哪几种条件组合时,流程图能执行“3→k”?(写出相应的序号即可)【问题4】(1分)
    该流程图共有多少条实际执行路径? [15分]
解析:
【问题1】(4分)
1  或A>0,B>0                                (2分)
2  或A>0,B≤0                              (2分)
以上解答不分次序,多答一个扣2分,多答两个不得分
【问题2】(4分)
2  或 A>0,B≤0                              (2分)
4  或 A≤0,B≤0                              (2分)
以上解答不分次序,多答一个扣2分,多答两个不得分
【问题3】(6分)
1 或A>0,B>0                                  (2分)
3 或A≤0,B>0                                (2分)
4 或 A≤0,B≤0                              (2分)
以上解答不分次序,多答一个扣2分
【问题4】(1分)
    4
2、【 简答题
试题二(共15分)
  阅读以下说明和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”,则逆置后其内容变为“dcba”。
【C函数】
void reverse(char *s, int len)
{
  char ch;
  if (  (4)  )
  {
    ch = *s;
    *s = *(s+len-1);
    *(s+len-1) = ch;
    reverse(  (5)  );
  }
} [15分]
解析:
(1)strlen(s)+1                                                   (3分)
    其中,strlen(s)不可缺少,1可用大于1的任何一个整数代替
    若考生解答为strlen(s),则给2分
(2)*(s+i),或s[i],或其等价表示                                    (3分)
(3)*(t+k),或t[k] ,或其等价表示                                   (3分)
(4)len > 1,或len >= 1,或其等价表示                               (3分)
(5)s+1,len-2                                                      (3分)
3、【 简答题
试题四(共15分)
    阅读以下说明和C函数,将应填入 (n) 处的语句或语句成分写在答题纸的对应栏内。
【说明】
    已知单链表 L 含有头结点,且结点中的元素值以递增的方式排列。下面的函数DeleteList在L中查找所有值大于minK且小于maxK的元素,若找到,则逐个删除,同时释放被删结点的空间。若链表中不存在满足条件的元素,则返回-1,否则返回0。
    例如,某单链表如图4-1所示。若令minK为20、maxK为50,则删除后的链表如图4-2所示。
       
    链表结点类型定义如下:
    typedef struct Node{
    int data;
    struct Node *next;
    }Node, *LinkList;
【C函数】
    int DeleteList (LinkList L, int minK, int maxK)
    {  /*在含头结点的单链表L中删除大于minK且小于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;
    } [15分]
解析:
(1)Node                                                     (3分)
(2)p->next                                                  (3分)
(3)p->next                                                  (3分)
(4)q->next                                                  (3分)
(5)!delTag,或delTag==0,或delTag!=1                         (3分)
4、【 简答题
试题五(共15分)
    阅读以下说明和 C++代码,将应填入 (n) 处的语句或语句成分写在答题纸的对应栏内。
【说明】
    某数据文件students.txt的内容为100名学生的学号和成绩,下面的程序将文件中的数据全部读入对象数组,按分数从高到低进行排序后选出排名前30%的学生。【C++代码】
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class Student {
    private:
    string sNO;    //学号
    int credit;      //分数
    public:
    Student(string a,int b) { sNO = a; credit = b;}
    Student(){}
    int getCredit();
    void out();
};
  (1)  ::getCredit() {
    return credit;
}
  (2)  ::out() {
    cout << "SNO: " << sNO << ", Credit=" << credit << endl;
}
class SortStudent {
    public:
    void sort(Student *s, int n);
    SortStudent(){}
};
void SortStudent::sort(Student *s,int n) {
    for(int i = 0; i < n-1; i++) {
    for(int j = i+1; j < n; j++) {
    if(s[i].  (3)  < s[j].  (4)  )    {
    Student temp = s[i];    s[i] = s[j];    s[j] = temp;
    }
    }
    }
}
int main(int argc, char* argv[])
{
    const int number = 100;    //学生总数
    ifstream students;
    students.open("students.txt");
    if(!students.is_open()) {
    throw 0;
    }
    Student *testStudent =  (5)  [number];
    int k = 0;
    string s;
    while (getline(students,s,'\n')) {    //每次读取一个学生的学号和成绩
    Student student(s.substr(0,s.find(',')), atoi(s.substr(s.find(',')+1).c_str()));
    testStudent[k++] = student;
    }
    students.close();
    (6)  ;
    ss.sort(testStudent,k);
    cout <<"top 30%: "<<endl;
    for(k = 0; k < number * 0.3; k++) {
    testStudent[k].out();
    }
    delete []testStudent;
    return 0;
} [15分]
解析:
(1)int Student                                  (3分)
(2)void Student                                 (2分)
(3)getCredit()                                  (2分)
(4)getCredit()                                  (2分)
(5)new Student                                  (3分)
(6)SortStudent ss                               (3分)
5、【 简答题
试题六(共15分)
    阅读以下说明和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 "sNO = " + 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.parseInt(tmp[1]));
    } else
    done = true;
    }
    in.close();
    (6)  = new SortStudent();
    ss.sort(testStudent);
    System.out.println("top 30%:");
    for (int j = 0; 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; //学生总数
} [15分]
解析:
(1)this.sNO                           (2分)
(2)this.Credit                        (2分)
(3)getCredit()                        (2分)
(4)getCredit()                        (2分)
(5)new Student                        (3分)
(6)SortStudent ss                     (2分)
(7)static,或static final             (2分)
1
1页,共5个题库
1页,共5个题库
轻速云给您提供更好的在线考试系统服务!
推荐
推荐题库
众多企事业单位的信赖之选
36万+企事业单位的共同选择
查看更多合作案例
众多企事业单位的信赖之选
开始使用轻速云组织培训考试
四步组织一场考试答题,一键搭建企业培训平台
免费使用 免费使用 预约演示
咨询热线
400-886-8169
周一到周日 8:00-22:00
©2023 轻速云 苏ICP备16049646号-1 轻速云科技提供专业的在线考试系统、在线培训系统
联系我们
客服热线客服热线:400-886-8169 | 周一至周日 8:00-22:00
©2023 轻速云 苏ICP备16049646号-1
轻速云科技提供专业的在线考试系统、在线培训系统
在线咨询 400-886-8169