2019年计算机软件水平考试初级程序员精选模拟试题
2019年上半年软件水平考试(初级)程序员下午(应用技术)真题试卷含答案解析

流程图题---为题目类型1.阅读以下说明和流程图,填写流程图中的空缺,将解答填入对应栏内。
【说明】如果 n 位数(n≥2)是回文数(从左到右读与从右到左读所得结果一致),且前半部分的数字递增(非减)、后半部分的数字递减(非增),则称该数为拱形回文数。
例如,12235753221 就是一个拱形回文数。
显然,拱形回文数中不含数字 0。
下面的流程图用于判断给定的 n 位数(各位数字依次存放在数组的各个元素 A[i]中,i=1,2,…,n)是不是拱形回文数。
流程图中,变量 T 动态地存放当前位之前一位的数字。
当 n 是奇数时,还需要特别注意中间一位数字的处理。
【流程图】C 语言题---为题目类型2.阅读以下说明和 C 代码,回答问题,将解答写入对应栏内。
【说明】函数 bubbleSort(int arr[],int n,int(*compare)(int,int))的功能是根据调用时传递的比较函数 compare 对数组 arr 的前n 个元素进行排序。
【C 代码】 #define swap(a,b) {a=a^b;b=a^b;a=a^b;} //交换 a 与b 的值 int less(int x, int y) { return ((x<y) ? 1 :0); } int larger(int x,int y) { return ((x>y) ? 1 :0); } void bubbleSort(int arr[],int n,Int(*compare)(int,int)) { int i,j; int swapped=1; for(i=0;swapped;i++){ swapped=0; for(j=0;j<n-1-i;j++) if(compare(arr[j+1],arr[j])){ swap(arr[j+1],arr[j]); swapped=1; } } }【问题】设有如下数组定义: int data1[]={4,2,6,3,1}; int data2[]={4,2,6,3,1}; int data3[]={4,2,6,3,1};请分别给出下面的函数调用执行后,数组data1、data2 和data3 各自的元素序列。
2019年计算机软考程序员模拟试题及答案2

2019年计算机软考程序员模拟试题及答案2试题四阅读下列函数说明和C函数,将应填入 n 处的字句写在答题纸的对应栏内。
[函数2.1说明]函数strcat(char s[], char t[])的功能是:将字符串t复制连接字符串s的尾部,并返回新字符串的首地址作为函数值。
例如:若s=“abcd”,t=“efg”,则新字符串应该是“abcdefg”。
[函数2.1]char *strcat(char s[], char t[]){ char *p;p = s + strlen(s)-1while( (1) ) {(2) ;}*p = ‘\0’;return s;}[函数2.2说明]函数f(char *str, char del)的功能是:将非空字符串str中的指定字符del删除,形成一个新字符串仍存放在str所指内存单元中。
例如若str的值为“33123333435”,del的值为‘3’,调用此函数后,新字符串为:“1245”。
[函数2.2]void f(char *str, char del){int i, j, len;len=strlen(str);i=j=0;while(i if ( (3) )(4) = str[i];i++;}(5) ;}试题五阅读以下说明和C代码,将应填入 n 处的字句写在答题纸的对应栏内。
[说明]下面程序中函数fun的功能是:在含有10 个元素的s数组中查找数,及数所在位置 (即,下标值),数可能不止一个。
数作为函数值返回,数的个数通过指针变量n传回,所在位置由数组pos传回。
例如:若输入 2 8 5 7 8 4 5 3 2 8则应输出:The max: 8Total: 3 //数出现次数The positions: 1 4 9#include#define M 10int fun(int *a, int *n, int pos[]) { int i, k, max=-32767;(1)for(i=0; i if( (2) ) max=a[i]; for(i=0; i if( (3) ) pos[k++]=i; *n=k;return max;}main(){ int a[M], pos[M], i=0, j, n; printf("Enter 10 number :");for(i=0; i j=fun( (5) );printf("The max: %d\n", j);printf("Total: %d",n); printf("The position:"); for(i=0; i printf("\n"); }。
2019年计算机软考程序员考试部分真题

2019年计算机软考程序员考试部分真题试题 1A. 最有可能成为国际上操作系统的标准的操作系统.B. 在当前,用于保证软件质量的主要手段.C. 进入80年代后,已迅速成为常用的程序设计语言之一.D. 在软件开发中,有利于发挥集体智慧的一种做法.E. 在开发软件时,可用来提升程序员的工作效率.供选择的答案:A. (1)MS-DOS (2)VMS (3)VM (4)UNIXB. (1)准确性证明 (2)测试 (3)自动程序设计 (4)符号执行C. (1)Smalltalk-80 (2)Ada (3)C (4)PROLOGD. (1)设计评审 (2)模块化 (3)主程序员组 (4)进度控制E. (1)程序开发环境 (2)操作系统的作业管理功能(3)编译程序的优化功能 (4)并行运算的大型计算机试题 2最初的软件开发方式是(A), 人们用笔和纸编写程序. 从60年代后期开始, *软件开发方式逐步发展成为使用终端设备编写程序的(B), 从80年代初开始, 发*达国家的软件开发方式正在向(C)转变.在结构化程序设计思想提出以前, 在程序设计中以前主要强调程序的(D). *现在, 与程序的(D)相比, 人们更重视程序的(E).供选择的答案:A,B,C: 1.实时方式 2.分时方式 3.批方式 4.并行方式 5.工作站方式 6.阵列方式D,E: 1.安全性 2.专用性 3.一致性 4.合理性 5.可理解性 6.效率试题 3从下列叙述中选出5条准确的叙述.(1) 每种程序设计语言都有它特定的语法.(2) 结构化的程序设计语言中没有 GOTO 语句.(3) 定义程序设计语言时用的字符集各种语言不完全相同.(4) 在汇编语言中, 用调用指令, 返回指令和转移指令改变程序中指令的执行顺序.(5) 因为 FORTRAN 语言的结构是块结构, 所以它特别适合于模块化程序设计.(6) PASCAL 语言允许用户定义结构化的数据结构.(7) 一般来说, 语言级别越高, 用它编出的程序越短.(8) 结构化程序设计能够大大提升程序的执行效率.(9) 编译程序是一种常用的应用软件.(10) 编译程序在实行优化时有时需要用到源程序的注释.试题 4(1) 按逻辑结构分, 文件主要有两类: (A) 和 (B) . UNIX 中的文件系统采用(B).(2) 文件系统的主要目的是 (C).(3) 文件系统中用 (D) 管理文件.(4) 为了允许不同用户的文件具有相同的文件名, 通常在文件系统中采用 (E).A,B : (1) 网状文件 (2) 只读文件 (3) 读写文件(4) 记录式文件 (5) 索引文件 (6) 流式文件C : (1) 实现对文件的按名存取 (2) 实现虚拟存贮器(3) 提升外部设备的输入输出速度 (4) 用于存贮系统文档D : (1) 堆栈结构 (2) 指针 (3) 目录 (4) 页表E : (1) 重名翻译 (2) 多级目录 (3) 约定 (4) 路径试题 5排序的方法有很多种, (A) 法从未排序序列中依次取出元素, 与已排序序列中(初始时为空)的元素作比较, 将其放入已排序序列的准确位置上;(B) 从未排娦蛐蛄兄刑粞≡*, 并将其依次放入已排序序列的一端; 交换排序法是对序列中的元素实行一系列比较, 当被比较的两元素逆序时, 实行交换.(C) 和 (D) 是基于这类方法的两种排序方法, 而(D) 是比 (C) 效率更高的方法. 利用某种算法,根据元素的关键值计算出排序位置的方法是 (E).(1) 选择排序 (2) 快速排序 (3) 插入排序 (4) 冒泡排序 (5) 合并排序(6) 二分排序 (7) 杂凑排序 (8) 基数排序试题6下列流程图用于从数组K中找出一切满足:K(I)+K(J)=M的元素对(K(I),K(J))(1 结束│ ┌───K(I)+K(J):M ────┐│ ↓ ↓= ↓│ (C) 输出I,J,K(I),K(J) (D)│ │ ↓ ││ │ (C) ││ │ ↓ ││ │ (D) │└──┴─────┴───────┘此流程图中,比较“K(I)+K(J):M"最少执行次数约为 (E) 。
2019年计算机软考程序员模拟测习题及答案

2019年计算机软考程序员模拟测习题及答案1.下列设备中,既能向主机输入数据又能接收主机输出数据的设备是A.CD-ROMB.显示器C.软磁盘驱动器D.光笔2.在计算机领域中,通常用英文单词"BYTE"来表示A.字B.字长C.二进制位D.字节3.某工厂的仓库管理软件属于A.应用软件B.系统软件C.工具软件D.字处理软件4.微型计算机的主机包括A.运算器和显示器B.CPU和内存储器C.CPU和UPSD.UPS和内存储器5.下面四条常用术语的叙述中,有错误的一条是A.光标是显示屏上指示位置的标志B.汇编语言是一种面向机器的低级程序设计语言,用汇编语言编写的源程序计算机能直接执行C.总线是计算机系统中各部件之间传输信息的公共通路D.读写磁头是既能从磁表面存储器读出信息又能把信息写入磁表面存储器的装置参考答案:1-5 CDABB6.下列字符中,其ASCII码值的是A.9B.DC.aD.y7.下列四个无字符十进制整数中,能用八个二进制位表示的是A.257B.201C.313D.2968.计算机病毒是指A.编制有错误的计算机程序B.设计不完善的计算机程序C.计算机的程序已被破坏D.以危害系统为目的的特殊的计算机程序9.在计算机应用中,"计算机辅助设计"的英文缩写为A.CADB.CAMC.CAED.CAT10.WINDOW98系统安装并启动后,由系统安排在桌面上的图标是A.资源管理器B.回收站C.MICROSOFTWORDD.MICROSOFTFOXPRO参考答案:6-10 DBDAB11.在WINDOW98中,有两个对系统资源实行管理的程序组,它们"资源管理器"和A."回收站"B."剪贴板"C."我的电脑"D."我的文档"12.在WINDOW98中,下列准确的文件名是A.MYPRKGRAMGROUP.TXTB.FILE1|FILE2C.A<>B.CD.A?B.DOC13.WINDOW98中,不能在"任务栏"内实行的操作是A.设置系统日期的时间B.排列桌面图标C.排列和切换窗口D.启动"开始"菜单14.word主窗口的标题栏右边显示的按钮是A.最小化按钮B.还原按钮C.关闭按钮D.化按钮15.在word的编辑状态,单击按钮后能够A.将指定的文档打开B.为指定的文档打开一个空白窗口C.使当前窗口还原D.使当前窗口极大化参考答案:10-15 CABBA16.在word的哪种视图方式下,能够显示分页效果A.普通B.大纲C.页面D.主控文档17.在word的编辑状态,执行"文件"菜单中的"保存"命令后将所有打开的文档存盘A.将所有打开的文档存盘B.只能将当前文档存储在原文件夹内C.能够将当前文档存储在已有的任意文件内D.能够先建立一个新文件夹,再将文档存储在该文件夹内18.在word的编辑状态,连续实行了两次"插入"操作,当单击一次"撤消"按钮后A.将两次插入的内容全部取消B.将第一次插入的内容全部取消C.将第二次插入的内容全部取消D.两次插入的内容都不被取消19.下列属于微机网络所特有的设备是A.显示器B.UPS电源C.服务器D.鼠标器20.CPU中有一个程序计数器(又称指令计数器),它用于存放A.正在执行的指令的内容B.下一条要执行的指令的内容C.正在执行的指令的内存地址D.下一条要执行的指令的内存地址参考答案:11-20 CBCCD。
2019年软考程序员考试模拟预测习题及答案

2019年软考程序员考试模拟预测习题及答案1.在Word的编辑状态打开了一个文档,对文档没作任何修改,随后单击Word主窗口标题栏右侧的“关闭”按钮或者单击“文件”菜单中的“退出”命令,则A.仅文档窗口被关闭B.文档和Word主窗口全被关闭C.Word主窗口被关闭D.仅文档和Word主窗口全未被关闭2.在Word的编辑状态,文档窗口显示出水平标尺,拖动水平标尺上沿的“首行缩进”滑块,则A.文档中各段落的首行起始位置都重新确定B.文档中被选择的各段落首行起始位置都重新确定C.文档中各行的起始位置都重新确定D.插入点所在行的起始位置被重新确定3.在Word的编辑状态,打开了“wl.doc”文档,若要将经过编辑后的文档以“w2.doc”为名存盘,理应执行“文件”菜单中的命令是A.保存B.另存为HTMLC.另存为D.版本4.在word的编辑状态,被编辑文档中的文字有“四号”、“五号”、“16”磅、“18”磅四种,下列关于所设定字号大小的比较中,准确的是A.“四号”大于“五号”B.“四号”小于“五号”C.“16”磅大于“18”磅D.字的大小一样,字体不同5.OSI(开放系统互连)参考模型的层是A.表示层B.网络层C.应用层D.会话层6.微型计算机中使用最普遍的字符编码是A.EBCDIC码B.国标码C.BCD码D.ASCII码7.微型计算机中的内存储器,通常采用A.光存储器B.磁表面存储器C.半导体存储器D.磁芯存储器8.微型计算机键盘上的Tab键是A.退格键B.控制键C.交替换档键D.制表定位键9.下列四种软件中,属于系统软件的是A.WPSB.WordC.DOSD.Excel310.“计算机辅助制造”的常用英文缩写是A.CADB.CAIC.CATD.CAM参考答案:1-5 BBCAC6-10 DCDCD。
2019年下半年软件水平考试(初级)程序员下午(应用技术)真题试卷含答案解析

流程图题---为题目类型1.阅读以下说明和流程图,填写流程图中的空缺,将解答填入答题纸的对应栏内。
【说明】某系统中有 N 个等长的数据记录,其主键值为随机排序且互不相等的正整数编号,表示为K(0),K(1),…,K(N-1)。
现采用杂凑法将各数据记录存入区域 S(0),S(1), S(2),…,S(M-1)中(M≥N),以加快按主键值检索的效率(初始时各区域都是空的)。
下面流程图中,选用适当的质数P(N≤P≤M),对每个主键值先计算出它除以 P 的余数j。
如果区域 S(j)己占用,则考查下一个区域 S(j+1),……,直到发现某个区域为空时,则将该主键值相应的数据记录存入该区域(注意,S(M-1)的下一个区域是 S(0))。
为了标记每个区域是否己占用,采用了 M 个标记位 F(0),F(1),…,F(M-1)。
初始时所有的标记位都为 0,每当一个区域被占用时,将相应的标记位置 1。
例如,设 6 个记录的主键值分别为 31、 15、20、35、18、10,取质数 P=7,用上述杂凑法将这些记录存入区域 S(0)~S(7)后,各区域中记录的主键值依次为 35、15、空、31、18、10、20、空。
【流程图】C 语言题---为题目类型阅读以下 C 代码,回答下列问题,将解答写入答题纸的对应栏内。
【C 代码 1】 #include <stdio.h> int main() { int num=5; printf("%d\n", ++num); printf("%d\n", num++); printf("%d\n", num-); printf("%d\n", num); return 0; } 【C 代码 2】 void func(char ch) { while(ch<'f'){ printf("%c:%d\n",ch,ch); ch+=2; } } 【C 代码 3】 #define CHARS 5 const int ROWS=5; void test() { int row; char ch; for(row=0; row<ROWS; row++) { for(ch='B'+row; ch<('B'+CHARS);ch++) putchar(ch); printf("\n"); } }2.请给出C 代码1 运行后的输出结果。
2019年计算机软考程序员模拟题及答案

2019年计算机软考程序员模拟题及答案6. main(){ int i,a[5];for(i=0;i2))%5;for(i=4;i>=0;i--)printf("=",a[i]);}【分析】我们能够按照程序中语句执行的顺序,记录各个变量及数组元素值的方法来解决这种阅读程序写运行结果的问题。
首先执行第1个for循环。
i=0, i2))%5=9*(-2)%5=-18%5=-3i=1,12))%5=9*(-1)%5=-9%5=-41=2,i2))%5=9*(0)%5=0%5=0i=3,i2))%5=9*(5)%5=45%5=01=4,12))%5=9*(6)%5=54%5=4i=5,12”是关系运算,结果只能为1或0;“x%5”是模运算,结果是x除5的余数,且余数的符号和x符号相同。
再执行第2个for循环。
i=4,i>=0的条件成立,执行循环体。
输出数组元素a[4]的值,等于4i=3,i>=0的条件成立,执行循环体。
输出数组元素a[3」的值,等于0i=2,1>=0的条件成立,执行循环体。
输出数组元素a[2」的位,等于0i=1,i>=0的条件成立,执行循环体。
输出数组元素a[1]的值,等于-4i=0,1>=0的条件成立,执行循环体。
输出数组元素a[0]的值,等于-3i=-1,i>=0的条件不成立,退出第2个for循环。
【参考答案】 4 0 0 -4 -37.main(){ char s[][6]={”1234”,”56789”},*p[2];int i,sum=0;p[0]=s[0],p[1]=s[1];for(i=0;p[0][i」!=’\0’;i++,i++)sum=10*sum+p[0][i]-’0’;for(i=1;p[1]「i」!=’\0’;i++,i++)sum=10*sum+p[1][i]-’0’;printf("%d",sum);}【解析】本程序的第1条语句是定义2行5列的二维字符型数组s,并且赋了初值如下:s[0][0]='1's[0][1]='2's[0][2]='3's[0][3]='4's[0][4]='\0's[1][0]='5's[1][1]='6's[1][2]='7's[1][3]='8's[1][4]='9'S[1][5]='\0'此外还定义了字符型指针数组p,利用第3条语句赋了值,结果如下:p[0]指向以“s[0][i]”为数组名的一维数组首地址,即p[0][i]就相当于s[0][i]p[1]指向以“s[1][i]”为数组名的一维数组首地址,即p[1][i]就相当于s[1][i]第2条语句定义了整型变量i(用于单重循环的控制变量)和sum,并对sum清0。
2019年计算机软件水平考试程序员练习习题

2019年计算机软件水平考试程序员练习习题试题一【说明】该程序的功能是从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,以行为单位对行中以空格或标点符号为分隔的所有单词实行倒排。
最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中,最后把结果xx输出到文件OUT6.DAT中。
例如:原文:You He MeI am a student.结果:Me He Youstudent a am I原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。
【函数】#include#include#include#includechar xx[50][80];int maxline=0;/*文章的总行数*/int ReaaDat(void);void WriteDat(void);void StrOL(void){char*pl,*p2,t[80];int i;for(i=0;i {p1=xx[i];t[0]=0;while(*p1)p1++;while(p1>=xx[i]){while(!isalpha(*p1)&&p1!=xx[i])p1--; p2=p1;while( (1) )p1--;if(p1==xx[i])if(isalpha(*p1))p1--;else if(!isalpha(*(p1+1)))break;p2++;(2) ;strcat(t,p1+1);strcat(t," ");}strcpy(xx[i],t);}}{if( (3) ){printf("数据文件in.dat不能打开!\n\007");return;}StrOL();writeDat();getch();}int ReadDat(void){FILE*fp;int i=0;char*p;if((fp=fopen("e:\\a\\in.dat","r"))==NULL)return 1; while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],′\n′);if(p)*p=0;i++;}fclose(fp);return 0;}void WriteDat(void){FILE*fp;int i;fp=fopen("e:\\a\\out6.dat","w");> for(i=0;idata (4) ;∥小于查找左子树else if(tree->data (5) ;∥大于查找左子树else return tree;}return tree;}【答案】(1)p=p->left(2)p=p->right(3)return P(4)return SearchSortTree(tree->left)(5)return SearchSortTree(tree->right)试题三假设以带头结点的单循环链表作非递减有序线性表的存储结构。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2019年计算机软件水平考试初级程序员精选模拟试题
1.假定a和b为int型变量,则执行下述语句组后,b的值为( )。
a=1;
b=10;
do
{
b-=a;
a++;
} while (b--20)
break;
} while (a=14);
printf("a=%d\n",a);
}
答案:
a=12 y=12
a=16 y=28
a=16
提示:首先第一次的结果不用说了?需要的话,请先把C的书再读一遍先!
a=12 y=12
接着大家要看仔细,if(y>20) break;难点在此,意思是当上面
的Y>20时结束这个段,再去判断While的条件,所以这里会接着加,a=12+2=14 y=14+12=26 ok!26>20,我们去判断while的条件吧,a=14,此时a就正好=14,再次循环·a=14+2=16 y=12+16=28,然后28>20跳出,a不等于14再次跳出,执行最后一句输出,a=16.
#include
main()
{
static int a[5][5]={
{1,2,3,4,0},
{2,3,4,0,6},
{3,0,1,7,5},
{0,0,2,4,1},
{8,4,3,2,7} };
int i,j;
for (i=0;i<5;i++)
{
for (j=0;j<5;j++)
{
if (a[j]==0)
break;
printf("M",a[j]);
printf("\n");
}
答案:
1 2 3 4
2 3 4
3
8 4 3 2 7
个人解析下:
首先我们从for (j=0;j<5;j++)看起,往下是
{
if (a[j]==0)
break;
printf("M",a[j]);
}
提示:把a[5][5]二维数组中的每列中从左至右第一个为零的数之前的数输出!
for (i=0;i<5;i++) 就是5行
#include
#include
fun(char *w,int n)
char t,*sl,*s2;
s1=w;
s2=w+n-1;
while (s1 {
t=*s1++
*s1=*s2--
*s2=t;
}
}
main()
{
char *p;
p="1234567";
fun (p,strlen(p));
puts(p);
}
答案:1711717
提示:主要是认清楚S1=? S2=? 首先 S1=W,这S1存的是字符串W的首地址,而S2=W+N-1=P+7-1 OK,也就是W中最后一个字符的地址·
阅读下列函数说明和C函数,将应填入__(n)__处的字句写在答
题纸的对应栏内。
[函数1.1说明]
函数palindrome(chars[])的功能是:判断字符串s是否为回文字符串,若是,则返回0,否则返回-1。
若一个字符串顺读和倒读都一样时,称该字符串是回文字符串,例如:“LEVEL”是回文字符串,而“LEVAL”不是。
[函数1.1]
int palindrome(char S[])
{ char *pi,*pj;
pi=S;pj=s+strlen(S)-1:
while ( pi pi++; pj--;
}
if(__ (2)__)return-1;
else return 0;
}
[函数1.2说明]
函数f(char *str,char del)的功能是;将非空字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。
例如若str的值为“33123333 435”,del的值为‘3’,调用此函数后,将输出三个子字符串,分别为“12”、“4”和“5”。
[函数1.2]
void f(char*str,char del)
{ int i,j,len;
len = strlen(str);
i = 0;
while (i while (__(3)__) i++; /*忽略连续的标志字符*/
/*寻找从str开始直到标志字符出现的一个子字符串*/
j = i + 1;
while (str[j] !=del && str[j] !=’\0’) j++;
__ (4)__="\0"; /*给找到的字符序列置字符串结束标志*/
printf(" %s\t",&str):’
__ (5)__;
}
}
答案:
(1)*pi == *pj
(2)pi (3)str== del
(4)str[j]
(5) i = j+1
提示:首先看第一题条件:pi=S;pj=s+strlen(S)-1:pi就是首地址啦,pj就是末地址啦,我们需要把第一个和最后一个比较,第二和倒二比···....OK,那while ( pi 第二题,有注释哦·不懂就提出来·不过偶想大家都会滴·。