摘要:以下是由希賽網(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】(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)容。
【說明2】
【問題1】(9分)
以上C代碼中有三處錯(cuò)誤(省略部分的代碼除外),請指出這些錯(cuò)誤所在的代碼行號,并在不增加和刪除代碼行的情況下進(jìn)行修改,寫出修改正確后的完整代碼行。
【說明2】
【問題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所示。
圖4-1
圖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ù)
}
旦愿有禮,添加好友獲軟考大額滿減券!
▼ ▼ ▼
活動(dòng)時(shí)間:2024年12月28日-12月31日
熱門:信息系統(tǒng)管理工程師報(bào)考指南 | 2025年軟考報(bào)名時(shí)間及入口
推薦:信息系統(tǒng)項(xiàng)目管理師網(wǎng)絡(luò)課堂 |系統(tǒng)架構(gòu)設(shè)計(jì)師網(wǎng)絡(luò)課程 | 工信部信創(chuàng)認(rèn)證培訓(xùn)
活動(dòng):25年高項(xiàng)備考 | 軟考機(jī)考模擬作答系統(tǒng) | 網(wǎng)絡(luò)工程師網(wǎng)絡(luò)課程
軟考備考資料免費(fèi)領(lǐng)取
去領(lǐng)取
共收錄117.93萬道題
已有25.02萬小伙伴參與做題