此文档下载后即可编辑
申明:此为2004上半年至今的所有程序员软考下午试题真题并且每套后面均配有答案,接近30套,每年两套。
由于文件过大,拆成上午试题和下午试题,在百度文库同样可以搜索“最全历年程序员软考考试上午真题合集“。
此外还有模拟试题提供,百度文库搜索“最全程序员软考考试上午模拟试题合集”和“最全程序员软考考试下午模拟试题合集”。 注:如果图片显示不全,适当将图片缩小即可。
过来人总结,多做做下午场试题,最好打印。上午场试题对着电脑即可,只要不是一点不懂基本上午场没问题。
初级程序员2004上半年下午试题
1、试题1
阅读下列说明、流程图和算法,将应填入______处。 [流程图说明]
下面的流程图用N-S盒图形式描述了数组A中的元素被划分的过程。其划分方法是:以数组中的第一个元素作为基准数,将小于基准数的元素向低下标端移动,大于基准数的元素向高下标端移动。当划分结束时,基准数定位于A[i],并且数组中下标小于i的元素的值均小于基准数,下标大于i的元素的值均大于基准数。设数组A的下界为low,上界为high,数组中的元素互不相同。例如,对数组(4,2,8,3,6),以4为基准数的划分过程如下:
[流程图]
[算法说明]
将上述划分的思想进一步用于被划分出的数组的2部分,就可以对整个数组实现递增排序。设函数int p(intA[],int low,int high)实现了上述流程图的划分过程并返回基准数在数组A中的下标。递归函数void sort(int A[],int L,int H)的功能是实现数组A中元素的递增排序。 [算法]
void sort(int A[],int L,int H){ if(L<H){
k=p(A,L,H); /*p()返回基准数所在数组A中的下标 */
sort( (4) ); /*小于基准数的元素排序 */ sort( (5) ); /*大于基准数的元素排序 */ }; }
2、试题2
阅读下列函数说明和C函数,将应填入______处的语句写在答题纸的对应栏内。 [函数2.1说明]
函数palindrome(char s[])的功能是:判断字符串s是否为回文字符串,若是,则返回0,否则返回-1。若一个字符串顺读和倒读都一样,称该字符串是回文字符串,例如,“LEVEL”是回文字符串,而“LEVAL”不是。 [函数2.1]
int palindrome(char s[]) {
char *pi, *pj;
pi=s;pj=s+strlen(s)-1; while(pi<pj&& (1) ) { pi++;pj--; }
if( (2) ) return-1; else return 0; }
[函数2.2说明]
函数f(char *str,char del)的功能是:将非空字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。
例如,若str的值为“33123333435”,del的值为“3”,调用此函数后,将输出3个子字符串,分别为“12”,“4”和“5”。 [函数2.2]
void f(char *str,char del) {
int i,j,len; len=strlen(str); i=0;
While(i<len){
While( (3) )i++; /* 忽略连续的标志字符 */ /* 寻找从str[i]开始直到标志字符出现的一个子字符串 */ j=i+1;
while(str[j]!=del &&str[j]!'\\0')j++;
(4) ='\\0'; /* 给找到的字符序列置字符串结束标志 */
printf(\,&str[i]); (5) ; } }
3、试题3
以下是与Visual Basic开发应用有关的5个问题。对每个问题,请将答案填入答题纸的对应栏内。
(1)在Visual Basic中,工程文件、窗体文件和标准模块文件的扩展名是什么?从下列选项中选择:prg,prj,exe,vbp,form,frm,win,fra,std,bas,vbs,vbm。
(2)设某窗体上有1个命令按钮,其名称为CmdSave,运行时该按钮上显示有“保存 (S)”字样的信息。为使热键Alt+S与该命令按钮相关联,应该对按钮CmdSave的 Caption属性设置什么样的属性值?
(3)设某窗口内有1个图像框Imagel及2个命令按钮“放大”和“缩小”。单击“放大”按钮就会使该图像框的长和宽都放大10%;单击“缩小”按钮就会使该图像框的长和宽都缩小10%(该图像框的左上角不动)。分别写出这2个命令按钮的单击事件过程中的程序代码。
(4)为使某个单选按钮初始时默认被选中,在开发时应怎样做? (5)若有语句Tmpval=MsgBox(“非法操作!”,vbOKCancel+vbCritical,“提示”),简要描述程序运行时弹出的消息框的主要特征。
4、试题4
阅读以下说明和C程序代码,将应填入______处的语句写在答题纸的对应栏内。
[说明]
函数MultibaseOutput(long n,intB.的功能是:将一个无符号十进制整数n转换成 B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把B进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下: # define MAXSIZE 32 typedef struct{
int * elem; /* 栈的存储区 */
int max; /* 栈的容量,即栈中最多能存放的元素个数 */
int top; /* 栈顶指针 */ }Stack; [C代码]
int InitStack(Stack * S,int n) / * 创建容量为n的空栈 */ { S->elem=(int *)malloc(n * sizeof(int)); if(S->elem==NULL)return-1; S->max=n; (1) =O;return 0; }
int Push(Stack * S,int item) / * 将整数item压入栈顶 * / { if(S->top==S->max){ printf(“Stack is full! \\n”);return-1;}
(2) =item;return 0; }
int StackEmpty(StackS) {return (! S.top)? 1:0;} / * 判断栈是否为空 * /
int Pop(Stack *S ) / * 栈顶元素出栈 * /
{ if(! S->top){printf(“Pop an empty stack! \\n”);return-1;} return (3) ; }
void MultibaseOutput(long n,intB.