初级程序员下午试题2015上半年及答案解析
(1/6)填空题 第1题
阅读以下说明和流程图,填补流程图中的空缺。 【说明】
下面流程图的功能是:在给定的两个字符串中查找最长的公共子串,输出该公共子串的长度L及其在各字符串中的起始位置(L一O时不存在公共字串)。例如,字符串“Thelight is not bright tonight”与“Tonight the light is not bri. ght”的最长公共子串为“he light isnot bright”,长度为22,起始位置分别为2和10。
设A[1:M]表示由M个字符A[l],A[2],…,A[M]依次组成的字符串;B[1:N]表示由N个字符B[l],B[2],…,B[N]依次组成的字符串,M≥N≥l。
本流程图采用的算法是:从最大可能的公共子串长度值开始逐步递减,在A、B字符串中查找是否存在长度为L的公共子串,即在A、B字符串中分别顺序取出长度为L的子串后,调用过程判断两个长度为L的指定字符串是否完全相同(该过程的流程略)。 【流程图】 图片 ______
下一题 (2/6)填空题 第2题
阅读以下说明和C函数,填补函数代码中的空缺。 【说明1】
函数f(double eps)的功能是:利用公式 图片
计算并返回π的近似值。 double f(double eps) {
double n一1一0, s = 1. 0, term = 1. 0, pi = 0. 0; while( fabs(term》一eps ){ pi=pi+term;
n=(1); s=(2); term=s /n; }
return pi*4; }
【说明2】
函数fun(char *str)的功能是:自左至右顺序取出非空字符串str中的数字字符,形成一个十进制整数(最多8位)。例如,若str中的字符串为“iyt?67kp f398d5. j4ia2e3p12”,则函数返回值为67385423。 I:C函数2]
long fun(char *str) {
int. i=0;
long num=0; char*p=str;
while(i<8 &&(3)){ if(*p>= ′0′ &&*p<= ′9′ ){ num=(4)+*p一′0′; ++i; }(5); }
return num; }_____
上一题 下一题 (3/6)填空题 第3题
阅读以下说明和C代码,填补代码中的空缺。 【说明】
下面的程序代码根据某单位职工的月工资数据文件(名称为Salary. dat,文本文件),通过调用函数Get1ncomeTax计算出每位职工每月需缴纳的个人所得税额并以文件(名称为IncomeTax. dat,文本文件)方式保存。
例如,有4个职工工资数据的Salary. dat内容如下,其中第一列为工号(整数),第2列为月工资(实数)。
1030001 6200. 00 1030002 5800. 00 2010001 8500. 00 2010010 8000. 00
相应地,计算所得IncomeTax. dat的内容如下所示,其中第3列为个人所得税额: 1030001 6200. 00 47. 20 1030002 5800. 00 35. 94 2010001 8500. 00 233. 50 2010010 8000. 00 193. 00
针对工资薪金收入的个人所得税计算公式为: 个人所得税额=应纳税所得额×税率一速算扣除数 其中,应纳税所得额=月工资一三险一金一起征点
税率和速算扣除数分别与不同的应纳税所得额对应,如表3一1所示。 图片
设三险一金为月工资的19%,起征点为3500元。
例如,某人月工资为5800元,按规定19%缴纳三险一金,那么:
其应纳税所得额X=5800一5800x19%一3500=1198元,对应税率和速算扣除数分别 为3%和0元,因此,其个人所得税额为1198×3%一0=35. 94元。
【C代码】
#include <stdio. h>
#define BASE 3500 //起征点
#define RATE 0. 19 //三险一金比例 (1); //声明函数GetIncomeTax int main() {
int id;
double salary; FILE *fin,*fout;
fin=fopen(\,\; if(
(2))return 0; fout=fopen \IncomeTax. dat\,\; if(
(3))return 0;
while(!feof(fin)){
if(fscanf(fin,\%lf\,(4))!=2)break;
fprintf(fout, \%d\\ too. 21f\\t%. 21f\\n\, id, salary,(5)); }
fclose(fin); fclose(fout); return 0; }
double GetIncomeTax(double salary) {
double yns_sd; yns_sd=
(6)一BASE; /*计算应纳税所得额*/ if(yns_sd<=0)return 0. 0;
else if(yns sd<=1500)return yr. cs_sd*0. 03; else if(yns sd<=4500)return yrs_sd*0. 1一105: else if(yns sd<=9000)return yns_sd*0. 2一555; else if(yns sd<=35000)return yns_sd*0. 25一1005; else if(yns sd<=55000)return yns_sd*0. 3一2755; else if(yns_sd<=80000)return yns_sd*0. 35一5505; return yns_sd*0. 45一13505; }_____
上一题 下一题 (4/6)填空题 第4题
相关推荐: