软件水平考试(初级)程序员下午(应用技术)模拟试卷52
流程图题
1.阅读以下说明和流程图,填写流程图中的空缺。
【说明】
下面流程图旨在对某次数学竞赛成绩进行统计,包括统计平均分、最高分、最低分和各分数段的人数。参赛选手共有n人,每人的百分制成绩已存储在数组C[1:n]中。将成绩从低到高分为m段(m>1),各段的最高分按顺序存储在数组d[1:m]中(d[m]=100),分数段区间依次为(0,d[1]),(d[1],d[2]),(d[2],d[3]),…,(d[m—1],d[m])。流程图中,变量S存放当前累计所得的成绩之和,变量H和L存放当前的最高分和最低分,各分数段人数的统计结果保存在数组R[1:m]中。
【流程图】
(1)C[i]+S 或 等效形式
(2)C[i]→H 或C[i]=H 或 等效形式
(3)C[i]→L 或 C[i]=L 或 等效形式
(4)d[j] 或 等效形式
(5)R[j]+1 或等效形式
解析:本题考查对算法流程图的理解和设计能力。
流程图开始时需要给变量S,H,L以及数组R赋初值。
变量S用于累计求和,因此开始时赋初值0,每处理一个成绩C[i],就需要执行一次累加C[i]+S→S,最后输出结果时再计算平均分S/n。因此,(1)处应填C[i]+S。
为计算最高分H,需要先给H赋最小的值0作为初值。每当一个成绩C[i]超过H时,应执行C[i]→H,最后得到的H就是最高分值。因此,(2)处应填C[i]→H。
为计算最低分L,需要先给L赋最大的值100作为初值。每当一个成绩C[i]低于L时,应执行C[i]→L,最后得到的L就是最低分值。因此,(3)处应填C[i]→L。
为按照分数段区间(0,d[1]),(d[1],d[2]),(d[2],d[3]),…,(d[m—1],d[m])统计各分数段的人数,对每个成绩C[i]应分别与d[1],d[2],…,d[j],…,d[m]进行比较。当C[i]首次小于某个d[j]时,就应执行R[j]+1→R[j]。因此,(5)处应填R[j]+1。
C语言题
阅读以下C代码,回答问题1至问题3。
【C代码1】
#include
int main() {
int m,n;
for(m=3;m>0;——m)
for(n=0; n<m;++n) {
print f (“%d%d\n”,m,n);
break;
}
return 0;
}
【C代码2】
#include
void foo(int n) {
print f(“%d”,n);
if(n>1)
foo(n—1);
print f(“%d”,n);
}
int main(){
foo(3);
return 0;
}
【C代码3】
#include
#include
int main() {
char*P, str[] =”e=2.718aT9\tRf\n#”;
int ic=0 uc=O dc=0,oc=0;
for(p=str;*P!=’#’;++p){
if(i slower(*P))1c++;
else if(i supper(*P))uc++;
else if(isdigit(*P))dc++;
else oc++;
}
printf(”lc=%d uc=%d dc=%d oc=%d\n”,lc,uc,dc,oc);
return 0;
}
2.请写出【C代码1】运行时的输出结果。
3 0
2 0
1 0
解析:本问题考查基本的循环控制逻辑。break语句在循环语句中的作用是跳出循环,从而结束该break所在的循环结构。在嵌套的循环中,break只是跳出其所在的循环结构层次,外层的循环还要继续执行。【C代码1】for语句执行情况如下表所示。
3.
解析:
4.请写出【C代码3】运行时的输出结果。
1c=3 uc=2 dc=5 oc=4
解析:本问题考查字符数据的表示及字符指针的运算。
这里的关键是明确字符串”e=2.718aT9\tRf\n#”;中每个字符的类型,属于小写字母(islower)的字符有“e”“a”“f”大写字母(isupper)为“T”“R”,数字字符(isdigit)为“2”“7”“1”“8”“9”,其他字符为“=”“.”“\t“\n”“#”,循环条件为当前字符不等于“#”时进行循环,因此不对“#”计数。
5.阅读以下说明和C代码,填补C代码中的空缺
【说明】
一元二次方程ax2+bx+c=0(a≠0)的求根公式如下:
设△=b2—4ac,若△大于0,则方程有两个不相等的实数根;若△等于0,则方程有两个相等的实根(即只有一个实根):若△小于0,则方程有两个不相等的复数根,为
(1)—c/b或等效形式
(2)delta>0 或b*b—4*a*c>0或等效形式
(3)delta<0 或b*b—4*a*c<0或等效形式
(4)一b/(2*a) 或等效形式
(5)d/(2*a)
其中,d可替换为sqrt(fabs(delta))或sqa(—delta)或sqrt(4*a*c—b*b)
(6)—b/(2*a)或等效形式
解析:
6.阅读以下说明和C代码,填补C代码中的空缺
本文档预览:3600字符,共4721字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载