摘要:以下是由希賽網(wǎng)整理的2010年下半年程序員考試下午真題,希望對備考程序員考試的考生有所幫助。
2010年下半年程序員考試下午真題:
● __(1)__
閱讀以下說明和流程圖,回答問題1至問題4,將解答填入答題紙的對應欄內(nèi)。
【說明】
下面的流程圖中有兩個判斷條件A>0和B>0。這些判斷條件的各種組合情況如下表所示。表中Y表示相應的條件成立,N表示相應的條件不成立。每一列表示一種條件組合,并在列首用相應的序號來表示。
【流程圖】
【問題1】(4分)
當遇到哪幾種條件組合時,流程圖能執(zhí)行“1→i”?(寫出相應的序號即可)
【問題2】(4分)
當遇到哪幾種條件組合時,流程圖能執(zhí)行“2→j”?(寫出相應的序號即可)
【問題3】(6分)
當遇到哪幾種條件組合時,流程圖能執(zhí)行“3→k”?(寫出相應的序號即可)
【問題4】(1分)
該流程圖共有多少條實際執(zhí)行路徑?
● __(2)__
閱讀以下說明和C函數(shù),將應填入 (n) 處的語句或語句成分寫在答題紙的對應欄內(nèi)。
【說明1】
函數(shù)deldigit(char *s) 的功能是將字符串s中的數(shù)字字符去掉,使剩余字符按原次序構(gòu)成一個新串,并保存在原串空間中。其思路是:先申請一個與s等長的臨時字符串空間并令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é)束標志*/
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,將解答寫在答題紙的對應欄內(nèi)。
【說明1】
下面代碼的設(shè)計意圖是:將保存在文本文件data.txt中的一系列整數(shù)(不超過100個)讀取出來存入數(shù)組arr[],然后調(diào)用函數(shù)sort__(4)__對數(shù)組arr的元素進行排序,最后在顯示屏輸出數(shù)組arr的內(nèi)容。
【說明2】
【問題1】(9分)
以上C代碼中有三處錯誤(省略部分的代碼除外),請指出這些錯誤所在的代碼行號,并在不增加和刪除代碼行的情況下進行修改,寫出修改正確后的完整代碼行。
【說明2】
【問題2】(6分)
若分別采用函數(shù)定義方式1、2和調(diào)用方式1、2,請分析程序的運行情況,填充下面的空(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ù),將應填入(n) 處的語句或語句成分寫在答題紙的對應欄內(nèi)。
【說明】
已知單鏈表L含有頭結(jié)點,且結(jié)點中的元素值以遞增的方式排列。下面的函數(shù)DeleteList在L中查找所有值大于minK且小于maxK的元素,若找到,則逐個刪除,同時釋放被刪結(jié)點的空間。若鏈表中不存在滿足條件的元素,則返回-1,否則返回0。
例如,某單鏈表如圖4-1所示。若令minK為20、maxK為50,則刪除后的鏈表如圖4-2所示。
圖4-1
圖4-2
鏈表結(jié)點類型定義如下:
typedef struct Node{
int data;
struct Node *next;
}Node, *LinkList;
【C函數(shù)】
int DeleteList (LinkList L, int minK, int maxK)
{ /*在含頭結(jié)點的單鏈表L中刪除大于minK且小于maxK的元素*/
(1) *q = L, *p = L->next; /*p指向第一個元素結(jié)點*/
int delTag = 0;
while ( p )
if ( p->data <= minK )
{ q = p; p = (2) ; }
else
if ( p->data < maxK ) { /*找到刪除滿足條件的結(jié)點*/
q->next = (3) ; free(p);
p = (4) ; delTag = 1;
}
else break;
if ( (5) ) return -1;
return 0;
}
● __(5)__
閱讀以下說明和C++代碼,將應填入(n) 處的語句或語句成分寫在答題紙的對應欄內(nèi)。
【說明】某數(shù)據(jù)文件students.txt的內(nèi)容為100名學生的學號和成績,下面的程序?qū)⑽募械臄?shù)據(jù)全部讀入對象數(shù)組,按分數(shù)從高到低進行排序后選出排名前30%的學生。
【C++代碼】
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class Student {
private:
string sNO; //學號
int credit; //分數(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;//學生總數(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’)) { //每次讀取一個學生的學號和成績
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代碼,將應填入 (n) 處的語句或語句成分寫在答題紙的對應欄內(nèi)。
【說明】
某數(shù)據(jù)文件students.txt的內(nèi)容為100名學生的學號和成績,下面的程序?qū)⑽募械臄?shù)據(jù)全部讀入對象數(shù)組,按分數(shù)從高到低進行排序后選出排名前30%的學生。
【Java代碼】
import jav
(6)A.io.*;
class Student {
private String sNO;//學號
private int Credit; //分數(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(); //每次讀取一個學生的學號和成績
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; //學生總數(shù)
}
24下半年軟考真題考后分析+估分
▼▼▼
熱門:信息系統(tǒng)管理工程師報考指南 | 2024下半年軟考準考證打印時間
推薦:信息系統(tǒng)項目管理師網(wǎng)絡課堂 |系統(tǒng)架構(gòu)設(shè)計師網(wǎng)絡課程
活動:25年高項備考 | 軟考機考模擬作答系統(tǒng) | 24下半年真題估分預約
備考:章節(jié)練習+真題 | 軟考備考學習資料 | 軟考免費課程
課程:論文專題講解 | 信息系統(tǒng)項目管理師試聽課
軟考備考資料免費領(lǐng)取
去領(lǐng)取