2018上半年程序员考试下午真题(二)

程序员 责任编辑:胡媛 2018-05-31

添加老师微信

备考咨询

加我微信

摘要:2018上半年程序员考试已结束,小编为大家整理了2018上半年程序员考试下午真题供考生们参考,以下为第二部分。

● 阅读以下C代码,回答问题1至问题3,将解答填入答题纸的对应栏内。

【C代码1】

float adjust Salary(int service_year,int age,float salary){

if(service_year<=5){

if(age>30)

salary*=1.2;

}

else

salary*=2.0;

return salary;

}

【C代码2】

void foo(int coin){

switch (coin){

case 1: printf("Cent\n");

case 5: printf("Nicke1\n");break;

case 10: printf("Dime\n");

case 25: printf("Quarter\n");

}

}

【C代码3】

int get Sum(int n)

{

Int t,i=0,sum=0;

while(i<n){

scanf( "%d",&t);

if(t<0)

continue;

sum+=t

i++;

}

return sum;

}

【问题1】(3分)

对于【C代码1】,写出下面的函数调用后x1、x2和x3的值。

x1=adjust Salary(1,25,9000.0);

x2=adjust Salary(8,32,7000.0);

x3=adjust Salary(5,41,5000.0);

【问题2】(6分)

(1)写出函数调用为foo(1)的输出结果;

(2)写出函数调用为foo(5)的输出结果

(3)写出函数调用为foo(10)的输出结果;

(4)写出函数调用为foo(25)的输出结果。

【问题3)(6分)

(1)简要说明【C代码3】中的函数get Sum()的功能;

(2)程序员小王将函数get Sum改写后得到下面的函数get Sum_v2(即用for语句来描述循环)。请问,get Sum_v2的功能是否与【C代码3】的get Sum完全相同,若不同请说明原因。

int get Sum_v2(int n)

{

int t,i=0,sum=0;

for(i=0;1           scanf("%d",&t);

if(t<0)

continue;

sum+=t;

}

return sum;

}

● 阅读以下说明和C代码,填写代码中的空(1)~(6),将解答写入答题纸的对应栏内。

【说明】

下面的C代码在输入的100个英文单词中找出最小单词和最大单词。约定每个单词是仅由英文字母构成的字符串,且都不超过20个字符。单词词的大小按照字典序定义。例如,单词“entry”大于“enter"、“art”小于“ article”、“an”等于“An”。

【C代码】

#include <stdio.h>

#define NUMBER 100

int is Valid(const char*s1);  //若字符串s1仅包含英文字母则返回1,否则返回0

char to Lower(char ch);//将大写字母转换为小写字母

int usr_strcpy(har*s1,char*s2);   //比较字符串s1和s2,相等时返回0,

//s1大则返回正整数,s1小则返回负整数

void usr_strcpy(char*s1,const char*s2);//字符串s2拷贝给s1

int main__(4)__

{ char word [32]:

char max Word[32]="", min Word[32] ="";

int num Word=0;

while(num Word<NUMBER){

scanf("%s",(1));//输入一个单词存入word

if(is Valid(word)){

if(0==num Word){usr_strcpy(min Word,word):usr_strcpy(max Word,word);}

num Word++;

if(    (2)   >0) //调用usr_strcpy比较单词

usr_strcpy(max Word,word);//用max Word记下最大单词

else

if(  (3)   <0) //调用usr_strcpy比较单词

usr_strcpy(min Word,word);  //用min Word记下最小单词

}

}

printf("max Word=%s min Word=%s\n",max Word,min Word);

return 0;

}

int is Valid(const char*s)

{

for(;*s;s++)

if(!(*s>='a'&&*s<='z')&&!(*s>='A'&&*s<='Z'))

return 0;

return 1;

}

Char to Lower(char ch)

{//若ch为大写字母则返回其小写形式,否则直接返回原字符

if(ch>='A'&&ch<='Z')

ch=(4)+'a';

return ch;

}

Int usr_strcpy(char*s1,char*s2)

{  //按字典序比较两个英文单词,若s1表示的单词大,则返回正整数,

//若s1表示的单词小,则返回负整数;否则返回0

for(;  (5)  ;){

if(to Lower(*s1)==to Lower(*s2)) {s1++,s2++;}

else

break;

}

return(to Lower(*s1)-to Lower(*s2));

}

void usr_strcpy(char*s1,const char*s2)

{   //将s2表示的字符串复制给s1

for(;(6);)

*s1++=*s2++;

*s1='\0';

}


>>>>>>2018上半年程序员下午真题汇总

>>>>>>查看更多程序员考试历年真题

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

软考备考资料免费领取

去领取