- 相關(guān)推薦
2016年計算機軟考程序員模擬試題
2016年計算機軟件水平測試一年有兩次考試機會,同學(xué)們參考了嗎?下面百分網(wǎng)小編為大家分享的是計算機軟考程序員模擬試題,希望對大家備考有所幫助!
●試題一
閱讀下列函數(shù)說明和C代碼,把應(yīng)填入其中n處的字句寫在答卷的對應(yīng)欄內(nèi)。
【函數(shù)1.1說明】
函數(shù)strcpy(char*to,char*from)將字符串from復(fù)制到字符串to。
【函數(shù)1.1】
void strcpy(char*to,char*from)
{while( (1) );}
【函數(shù)1.2說明】
函數(shù)merge(int a[ ],int n,int b[ ],int m,int *c)是將兩個從小到大有序數(shù)組a和b復(fù)制合并出一個有序整數(shù)序列c,其中形參n和m分別是數(shù)組a和b的元素個數(shù)。
【函數(shù)1.2】
void merge(int a[ ],int n,int b[ ],int m,int *c)
{ int i,j;
for(i=j=0;i
*c++=a[i]
while( (2) )*c++=a[i++];
while( (3) )*c++=b[j++];
}
【函數(shù)1.3說明】
遞歸函數(shù)sum(int a[ ],int n)的返回值是數(shù)組a[ ]的前n個元素之和。
【函數(shù)1.3】
int sum(int a[ ],int n)
{ if(n>0)return (4) ;
else (5) ;
}
●試題二
閱讀下列函數(shù)說明和C代碼,將應(yīng)填入(n)處的字句寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
該程序運行后,輸出下面的數(shù)字金字塔
【程序】
#include
main ()
{char max,next;
int i;
for(max=′1′;max<=′9′;max++)
{for(i=1;i<=20- (1) ;++i)
printf(" ");
for(next= (2) ;next<= (3) ;next++)
printf("%c",next);
for(next= (4) ;next>= (5) ;next--)
printf("%c",next);
printf("\n");
}
}
●試題三
閱讀下列函數(shù)說明和C代碼,將應(yīng)填入(n)處的字句寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
函數(shù)diff的功能是:根據(jù)兩個由整數(shù)(都大于-32768)按升序構(gòu)成的單鏈表L1和L2(分別由A,B指向)構(gòu)造一個單鏈表L3(由*r指向),要求L3中的所有整數(shù)都是L1,并且不是L2中的整數(shù),還要求L3中的所有整數(shù)都兩兩不等。
【函數(shù)】
#include
C.h>
typedef struct node{
int d;
struct node *next
}Node;
void diff(Node *A,Node *B,Node **r)
{
int lastnum;
Node*p;
*r=NULL;
if(!A)return;
while( (1) )
if(A->dd)
{
lastnum=A->d;
p=(Node*)malloc(sizeof(Node));
p->d=lastnum;
p->next=*r; (2) ;
do
A=A->next;
while( (3) );
}
else if(A->d>B->d)
B=B->next;
else{
(4) ;
lastnum=A->d;
while (A && A->d==lastnum)A=A->next;
}
while(A)
{
lastnum=A->d;
p=(Node*)malloc(sizeof(Node));
p->d=lastnum;
(5) ;
*r=p;
while (A && A->d==lastnum) A=A->next;
}
}
●試題四
閱讀下列程序說明和C代碼,將應(yīng)填入(n)處的字句寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
本程序從若干個原始文件合并成的合并文件中恢復(fù)出其中一個或全部原始文件。所有文件均作為二進制文件進行處理。合并文件中先順序存儲各原始文件,然后順序存儲各原始文件的控制信息,即文件名、文件長度和在合并文件中的位置(偏移量 )。其結(jié)構(gòu)為:
typedef struct{char fname [256]/*原始文件名*/
long length;/*原始文件長度(字節(jié)數(shù))*/
long offset;/*原始文件在合并文件中的位置(偏移量)*/
}FileInfo;
在合并文件最后存儲如下一個特殊的標(biāo)志信息作為合并文件的結(jié)束標(biāo)記:
FileInfo EndF1ag={"Combined File",0,_offset};
其中_offset是第一個原始文件的控制信息在合并文件中的位置(偏移量)。
啟動本程序的命令行的格式是:
程序名合并文件名[原始文件名]
如果不指定原始文件名,默認(rèn)恢復(fù)合并文件中的所有原始文件。
程序中涉及的部分文件操作的庫函數(shù)簡要說明如下:
int fread (void *buffer,int size,int count,F(xiàn)ILE *fbin):從二進制文件流fbin中讀取count塊長度為size字節(jié)的數(shù)據(jù)塊到buffer指向的存儲區(qū)。返回值為實際讀取的數(shù)據(jù)塊數(shù)。
int fwrite(void *buffer,int size,int count,F(xiàn)ILE *fbin):各參數(shù)和返回值的意義與fread相同,但對文件進行寫操作。
int fseek(FILE *fbin,long offset,int position):將文件流fbin的讀/寫位置以position為基準(zhǔn)移動offset字節(jié)。position的值可以是SEEK_SET(文件頭),SEEK_CUR(當(dāng)前位置),SEEK_END(文件尾);offset為正,表示向文件尾方向移動,為負(fù)表示向文件頭方向移動,為零表示到基準(zhǔn)位置。
long ftell(FILE *fbin):返回文件流fbin的當(dāng)前讀/寫位置(相對于文件頭的偏移量)。上述偏移量均以字節(jié)為單位,即偏移字節(jié)數(shù)。
【程序】
#include
#include
typedef struct{char fname[256];long length;long offset;
}FileInfo;
void copyfile(FILE *fin,F(xiàn)ILE *fout,int fsize)
{char buf[1024];int siz=1024;
while(fsize !=0){/*每次復(fù)制siz個字節(jié),直至復(fù)制完fsize個字節(jié)*/
if(siz >fsize) (1) ;
fread(buf,1,siz,fin);fwrite(buf,1,siz,fout);
fsize= (2) ;}
}
int dofile(FILE *fin,F(xiàn)ileInfo *inp)
{ long offset;
FILE *fout;
if((fout=fopen(inp->fname,"wb"))==NULL){
printf("創(chuàng)建文件錯誤:%s\n",inp->fname);
return 1;
}
offset= (3) ;/*保留合并文件讀/寫位置*/
fseek( (4) );/*定位于被恢復(fù)文件首*/
copyfile(fin,fout,inp->length);
fclose(fout);
printf("\n---文件名:%\n文件長:%1d.
\n",inp->fname,inp->length);
(5) ;/*恢復(fù)合并文件讀/寫位置*/
return 0;
}
int main(int argc,char *argv[])
{FileInfo finfo;
char fname[256];FILE *fcmbn;
if(argc<2){printf("輸入合并文件名:");scanf("%s",fname);}
else strcpy(fname,argv[1]);
if((fcmbn=fopen(fname,"rb"))==NULL){
printf("文件打開錯誤:%s\n",fname);return 1;
}
fseek(fcmbn,-sizeof(FileInfo),SEEK_END);/*定位于合并文件末尾的標(biāo)志信息*/
fread(&finfo,1,sizeof(FileInfo),fcmbn);
if(finfo.length!=0 || strcmp(finfo.fnane,"CombinedFile")){
printf("指定的文件不是合法的合并文件\n");
fclose(fcmbn);return 2;
}
fseek(fcmbn,finfo.offset,SEEK_SET);/*定位于首個原始文件的控制信息*/
for(;;){/*恢復(fù)一個(argc>2)或全部(argc=2)原始文件*/
fread(&finfo,1,sizeof(FileInfo),fcmbn);
if(finfo.length==0)break;
if(argc>2 && strcmp(finfo.fname,argv[2]))continue;
if(dofile(fcmbn,&finfo)!=0)break;
}
fcolse(fcmbn);return 0;
}
【計算機軟考程序員模擬試題】相關(guān)文章:
2016年計算機軟考網(wǎng)絡(luò)管理員模擬試題03-20
計算機四級軟測模擬試題及答案02-28
2016計算機三級軟測模擬試題及答案06-21
軟考程序員輔導(dǎo):程序員C語言新人常見問題04-19
駕考科四模擬試題及答案03-29
2017中考英語模擬試題05-23
2017中考語文模擬試題02-11
最新駕考科目四模擬試題08-15