2010年下半年程序員考試下午真題

程序員 責(zé)任編輯:YLM 2017-08-16

添加老師微信

備考咨詢

加我微信

摘要:以下是由希賽網(wǎng)整理的2010年下半年程序員考試下午真題,希望對備考程序員考試的考生有所幫助。

2010年下半年程序員考試下午真題:

>>>點(diǎn)擊進(jìn)入軟考初級程序員歷年真題下載

● __(1)__

閱讀以下說明和流程圖,回答問題1至問題4,將解答填入答題紙的對應(yīng)欄內(nèi)。
說明】
下面的流程圖中有兩個(gè)判斷條件A>0和B>0。這些判斷條件的各種組合情況如下表所示。表中Y表示相應(yīng)的條件成立,N表示相應(yīng)的條件不成立。每一列表示一種條件組合,并在列首用相應(yīng)的序號來表示。
1.png

【流程圖】
2.png

問題1(4分)

當(dāng)遇到哪幾種條件組合時(shí),流程圖能執(zhí)行“1→i”?(寫出相應(yīng)的序號即可)

問題2(4分)

當(dāng)遇到哪幾種條件組合時(shí),流程圖能執(zhí)行“2→j”?(寫出相應(yīng)的序號即可)

問題3(6分)

當(dāng)遇到哪幾種條件組合時(shí),流程圖能執(zhí)行“3→k”?(寫出相應(yīng)的序號即可)

問題4(1分)

該流程圖共有多少條實(shí)際執(zhí)行路徑?

● __(2)__
閱讀以下說明和C函數(shù),將應(yīng)填入 (n) 處的語句或語句成分寫在答題紙的對應(yīng)欄內(nèi)。
【說明1】
函數(shù)deldigit(char *s) 的功能是將字符串s中的數(shù)字字符去掉,使剩余字符按原次序構(gòu)成一個(gè)新串,并保存在原串空間中。其思路是:先申請一個(gè)與s等長的臨時(shí)字符串空間并令t指向它,將非數(shù)字字符按次序暫存入該空間,最后再拷貝給s。
【C函數(shù)】

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’;/*設(shè)置串結(jié)束標(biāo)志*/

strcpy(s,t);

free(t);

}

【說明2】

函數(shù)reverse(char *s, int len)的功能是用遞歸方式逆置長度為len的字符串s。例如,若串s的內(nèi)容為“abcd”,則逆置后其內(nèi)容變?yōu)椤癲cba”。

【C函數(shù)】

void reverse(char *s, int len)

{

char ch;

if ( (4) )

{

ch = *s;

*s = *(s+len-1);

*(s+len-1) = ch;

reverse( (5) );

}

}

● __(3)__閱讀以下說明和C代碼,回答問題1和問題2,將解答寫在答題紙的對應(yīng)欄內(nèi)。
【說明1】
下面代碼的設(shè)計(jì)意圖是:將保存在文本文件data.txt中的一系列整數(shù)(不超過100個(gè))讀取出來存入數(shù)組arr[],然后調(diào)用函數(shù)sort__(4)__對數(shù)組arr的元素進(jìn)行排序,最后在顯示屏輸出數(shù)組arr的內(nèi)容。
3.png
【說明2】
4.png5.png
【問題1】(9分)

以上C代碼中有三處錯(cuò)誤(省略部分的代碼除外),請指出這些錯(cuò)誤所在的代碼行號,并在不增加和刪除代碼行的情況下進(jìn)行修改,寫出修改正確后的完整代碼行。

【說明2】

6.png

7.png

【問題2】(6分)

若分別采用函數(shù)定義方式1、2和調(diào)用方式1、2,請分析程序的運(yùn)行情況,填充下面的空(1)~(3)。

若采用定義方式1和調(diào)用方式1,則輸出為“00000000”。

若采用定義方式1和調(diào)用方式2,則 (1) 。

若采用定義方式2和調(diào)用方式1,則 (2) 。

若采用定義方式2和調(diào)用方式2,則 (3) 。

● __(4)__
閱讀以下說明和C函數(shù),將應(yīng)填入(n) 處的語句或語句成分寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
已知單鏈表L含有頭結(jié)點(diǎn),且結(jié)點(diǎn)中的元素值以遞增的方式排列。下面的函數(shù)DeleteList在L中查找所有值大于minK且小于maxK的元素,若找到,則逐個(gè)刪除,同時(shí)釋放被刪結(jié)點(diǎn)的空間。若鏈表中不存在滿足條件的元素,則返回-1,否則返回0。
例如,某單鏈表如圖4-1所示。若令minK為20、maxK為50,則刪除后的鏈表如圖4-2所示。
8.png圖4-1
9.png圖4-2
鏈表結(jié)點(diǎn)類型定義如下:
typedef struct Node{
int data;
struct Node *next;
}Node, *LinkList;
【C函數(shù)】

int DeleteList (LinkList L, int minK, int maxK)

{ /*在含頭結(jié)點(diǎn)的單鏈表L中刪除大于minK且小于maxK的元素*/

(1) *q = L, *p = L->next; /*p指向第一個(gè)元素結(jié)點(diǎn)*/

int delTag = 0;

while ( p )

if ( p->data <= minK )

{ q = p; p = (2) ; }

else

if ( p->data < maxK ) { /*找到刪除滿足條件的結(jié)點(diǎn)*/

q->next = (3) ; free(p);

p = (4) ; delTag = 1;

}

else break;

if ( (5) ) return -1;

return 0;

}

● __(5)__
閱讀以下說明和C++代碼,將應(yīng)填入(n) 處的語句或語句成分寫在答題紙的對應(yīng)欄內(nèi)。
【說明】某數(shù)據(jù)文件students.txt的內(nèi)容為100名學(xué)生的學(xué)號和成績,下面的程序?qū)⑽募械臄?shù)據(jù)全部讀入對象數(shù)組,按分?jǐn)?shù)從高到低進(jìn)行排序后選出排名前30%的學(xué)生。

【C++代碼】

#include <iostream>

#include <fstream>

#include <string>

using namespace std;

class Student {

private:

string sNO; //學(xué)號

int credit; //分?jǐn)?shù)

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;//學(xué)生總數(shù)

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’)) { //每次讀取一個(gè)學(xué)生的學(xué)號和成績

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;

}

● __(6)__
閱讀以下說明和Java代碼,將應(yīng)填入 (n) 處的語句或語句成分寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
某數(shù)據(jù)文件students.txt的內(nèi)容為100名學(xué)生的學(xué)號和成績,下面的程序?qū)⑽募械臄?shù)據(jù)全部讀入對象數(shù)組,按分?jǐn)?shù)從高到低進(jìn)行排序后選出排名前30%的學(xué)生。

【Java代碼】

import jav

(6)A.io.*;

class Student {

private String sNO;//學(xué)號

private int Credit; //分?jǐn)?shù)

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(); //每次讀取一個(gè)學(xué)生的學(xué)號和成績

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; //學(xué)生總數(shù)

}

更多資料
更多課程
更多真題
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請考生以權(quán)威部門公布的內(nèi)容為準(zhǔn)!

軟考備考資料免費(fèi)領(lǐng)取

去領(lǐng)取

!
咨詢在線老師!