摘要:2018上半年程序員考試已結(jié)束,小編為大家整理了2018上半年程序員考試下午真題供考生們參考,以下為第二部分。
● 閱讀以下C代碼,回答問題1至問題3,將解答填入答題紙的對應(yīng)欄內(nèi)。
【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】,寫出下面的函數(shù)調(diào)用后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)寫出函數(shù)調(diào)用為foo(1)的輸出結(jié)果;
(2)寫出函數(shù)調(diào)用為foo(5)的輸出結(jié)果
(3)寫出函數(shù)調(diào)用為foo(10)的輸出結(jié)果;
(4)寫出函數(shù)調(diào)用為foo(25)的輸出結(jié)果。
【問題3)(6分)
(1)簡要說明【C代碼3】中的函數(shù)get Sum()的功能;
(2)程序員小王將函數(shù)get Sum改寫后得到下面的函數(shù)get Sum_v2(即用for語句來描述循環(huán))。請問,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),將解答寫入答題紙的對應(yīng)欄內(nèi)。
【說明】
下面的C代碼在輸入的100個英文單詞中找出最小單詞和最大單詞。約定每個單詞是僅由英文字母構(gòu)成的字符串,且都不超過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);//將大寫字母轉(zhuǎn)換為小寫字母
int usr_strcpy(har*s1,char*s2); //比較字符串s1和s2,相等時返回0,
//s1大則返回正整數(shù),s1小則返回負(fù)整數(shù)
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) //調(diào)用usr_strcpy比較單詞
usr_strcpy(max Word,word);//用max Word記下最大單詞
else
if( (3) <0) //調(diào)用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表示的單詞大,則返回正整數(shù),
//若s1表示的單詞小,則返回負(fù)整數(shù);否則返回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表示的字符串復(fù)制給s1
for(;(6);)
*s1++=*s2++;
*s1='\0';
}
軟考備考資料免費領(lǐng)取
去領(lǐng)取