内容正文:
综合测试卷三
综合测试卷三
一、理论测试题(每小题12分,共5小题,共60分)
1.阅读下列程序,写出问题答案。
(1)#include<stdio.h
(2)longf1 (int p)
(3)
(4)static long r=0;
(5)
long f2(int);
(6)
r+=f2(p):
(7)
return r;
(8)
(9)long f2(int q)
(10){
(11)
long c=1;
(12)
int i;
(13)
for(i=1;i<=q;i++)
(14)
c=c*i;
(15)
return c;
(16)}
(17)int main()
(18)
(19)inti,n;
(20)long int s=0;
(21)
scanf("%d",&n);
(22)for(i=1;i<=n;i++)
(23)
s=s+f1(i):
(24)
printf("
s=%ld
",s);
(25)}》
上述程序中,第(6)行2(p)称为函数的①调用:第(20)行中变量s是②类型
(中文):第(4)行中变量r的存储类别是③;当n值为3时,程序的运行结果为④
。
2.阅读下列程序,写出运行结果。
#include <stdio.h
·81·
单招零距离·计算机专业综合测试卷·下册
int main()
int i,j,k,a,b=0,c=1;
for(i=-1;i<3;i++)
{a=i;b++;
for(j=1;j<i;j++)
{c+=a;
for(k=0;k<=2;k++)
b+=k;c十十;
}
printf("a=%d\tb=%d\tc=%d
",a,b,c);
}
3.阅读下列程序,写出运行结果。
#include <stdio.h
define N 10
int main()
int i,j,a[N]N];
for(i=1;i<N;i++)
for(j=1;j<N;j++)
a[i][j]=i¥j;
for(i=1;i<=N/2;i++)
{j=1;
while(j<=i)
printf("%d %d=%-3d",j,i,ali]]),j+++;
printf("
");
}
4.阅读下列程序,写出运行结果。
include "stdio.h"
int main()
int i,j,k,x,y,num[20];
for(i=0;i<20;i++)
num[i]=20+i;
x=0;
·82·
综合测试卷三
while(x<20)
j=num[x];i=2;k=1;
while (i<=j/2&.&.k)
k=j%i++;
if (k)
printf("%4x",numi]);
x+十;
}
5.下列程序的功能是从D盘test文件夹中的文本文件score.txt文件中读出若干个学生
的姓名及3门课的成绩存入数组,然后查找出平均成绩不及格的学生并删除,将删除后的学
生按平均分降序排序后存入到文件最后(每行输出一个学生信息)。完成下列程序。
#include <stdio.h
#define N50
int main()
float scores[N][3],avestu[N],t[3],at;
int i,j,k,mm;
char name[N][20],na[20];
FILE st;
f(①
==NULL)exit(0);
/*1一读入学生的姓名和成绩*/
for(i=0;i<N;i++)
fscanf(st,"%s",nameli]);
for(j=0;j<3;j++)
fscanf(st,"%f",&scores[i]);
/¥2一一计算学生平均成绩¥/
for(i=0;i<N;i++)
{avestu[i门=0;
for(j=0;j<3;j++)
avestu[i]+=scores[i]j];
avestu[i]/=3;
}
/3一一查找并删除平均成绩不及格学生*/mm=N一1:
·83·
单招零距离·计算机专业综合测试卷·下册
for(i=mm;i>=0;i--)
if(avestu[i门<60)
{mm=mm-1;
for(j=i;j<=mm;j++)
{for(k=0;k<3;k++)
scores[j]k]=scores[j+1]k];
avestu[j]=avestu[j+1];
②;
/4一将学生按平均成绩降序排序
for(i=1;i<mm;i++)
strcpy(na,namei]);
at=avestu[i];
for(k=0;k<3;k++)
t[k]=scores[i]k];
for(Gj=i-1;③
j-一)
{for(k=0;k<3;k++)
scores[j+1][k]=scores[j][k];
strcpy(name[j+1],name[j]);
avestu[j+1]=avestu[j];
}
for(k=0;k<3;k++)
scores[j+1][k]=t[k];
strcpy(name[j+1],na);
avestu[j+1]=at;
}
/*5一按平均成绩降序输出学生成绩至文件末尾/
fprintf((st,"姓名\t语文\t数学t英语\t平均分
");
for(i=0;i<N;i+++)
fprintf(st,"%s
",name[i]);
for(j=0;j<3;j++)
fprintf (st,"%f\t",&.scores[i);
④;
·84·
综合测试卷三
fclose(st);
二、技能测试题(第1题20分,第2、3题各30分,共80分)
1.程序填空题:卡塔兰数是组合数学中一个常在各种计数问题中出现的数列。其前几项
为:1,1,2,5,14,42,132,429,1430,4862,16796,58786,…
该数列前两项为h(0)=1,h(1)=1,其他各项数据的递推式如下:
h(n)=h(0)*h(n-1)+h(1)*h(n-2)+,十h(n-1)h(0)(n>=2)
程序完成输出卡塔兰数,直到最后一个数超过2¥106。请在指定答题处写出空缺语句。
#include <stdio.h
int main()
long int catlan[50]=(1,1),t,j;
/*关**米米¥¥¥兴SPACE*关并*关米关米米关/
(1);
/关米关兴米米米米**SPACE米米米米*米米米**/
t=(2)
;
for(j=0;j<t;j++)
printf("%d "catlan[j]);
int cat(long int c[])
int i=2,j;long s;
do
{s=0;
for(j=0;j<i;j++)
/*米米米米米*类**SPACE关*关荣关类米关并关/
(3)
;
cli]=s;
i++;
/关关关兴关米关米米*SPACE关关关米关关米关米*/
}while(④);
return i;
}
2.程序改错题:将5个整数转换为数字字符串存入字符串s中,5个数字字符串间用1个
空格分隔,字符串$中的数据与原有整数次序一致,且字符串右对齐。
·85·
单招零距离·计算机专业综合测试卷·下册
程序运行结果为:
-23672-1256753248
#include<stdio.h
#include<string.h
#include<math.h
#include<ctype.h
#include<stdlib.h
define LEN 30
void change(char s[」,int in[],intn)
int i,k,pos,sign;
/**并**米关****FOUND米并*关米米米***米/
pos=LEN-1;
for(i=n-1;i>=0;--i)
k=in[i];
sign=1;
if(k<0)
{k=-k;
sign=1-sign;
}
for(;k:k/=10)
s[pos--]=k%10+0';
if(sign==0)
/*米米*米米**米**FOUND*米0米米0米米*米*/
s[p0s]=一;
s[pos--]=";
}
for(;pos>=0;--pos)
/关关关兴关米关*关*关FOUND并关关关关米米*关*并/
s[pos--]=";
int main()
{int in[5]={-23,672,-1256,7,53248};
char s[LEN]=(0);
·86·
综合测试卷三
change(s,in,5);
printf("-
-ln");
printf("%s
",s);
}
3.程序设计题:主函数main的二维数组p[3][4]中,每行前两列分别保存下列正整数。
2273
59431
1425
处理要求是:
找出227后的第3个素数,保存在该行第3列
找出5943后的第1个素数,保存在该行第3列
找出142后的第5个素数,保存在该行第3列
去除第3列素数的最低位、最高位,保存在数组的最后一列。
程序运行结果为:
2273
239
3
59431
5953
95
142
5
167
6
(l)编写函数int find(intx,intn),查找并返回x后的第n个素数。
(2)编写函数void cut(intp[]),将p数组中第3个数,即素数,去除最低位,最高位后,保
存在p数组的最后一列。
#include<stdio.h
#include<string.h
#include<math.h
#include<ctype.h>
#include<stdlib.h
int find(int x,int n)
{/¥***¥****米Pr0gram米米米¥¥**米米¥/
/***并米关米*兴关End*关**米米关米米米/
}
void cut(int p])
·87·
单招零距离·计算机专业综合测试卷·下册
(/*米*米米*米**米Pr0gram米*米*米*米*米米/
/米米米米米米关米米米End*米米米米米关米米*/
int main()
{intp[3][4]={{227,3},{5943,1},{142,5}};
int i,j;
for(i=0;i<3;++i)
{p[i][2]=find(p[i][o],p[i][1]):
cut(pi]);
for(j=0;j<4;++j)
printf("%5d\t",pLi]j]);
printf("
");
·88· /∗∗∗∗∗∗∗∗∗∗∗∗ End ∗∗∗∗∗∗∗∗∗∗∗∗/
}
综合测试试卷三
一、理论测试题
1.(1)嵌套 (2)长整型
(3)静态 (4)s=13
2.a=2 b=7 c=4
3.1∗1=1
1∗2=2 2∗2=4
1∗3=3 2∗3=6 3∗3=9
1∗4=4 2∗4=8 3∗4=12 4∗4=16
1∗5=5 2∗5=103∗5=15 4∗5=20 5∗5=25
4.20 23 24 27
5.①(st=fopen(“D:\\test\\score.txt”,”r+”))
②strcpy(name[j],name[j+1])
③j>=0&&at>avestu[j]
④fprintf(st,”%f
”,avestu[i])
二、技能测试题
1.①intcat(longintc[]);
②cat(catlan);
③s=s+c[j]∗c[i-1-j];
④s<=2e6或s<=2000000
2.(1)pos=LEN-2;
(2)s[pos--]='-';
(3)s[pos]=';或s[pos]=32;
3.intfind(intx,intn)
{ inti,j,k;
x=(x%2==0?x+1:x+2);
for(i=0;i<n;x+=2)
{ k=(int)(sqrt(x));
for(j=3;j<=k&&x%j;j+=2);
if(j>k)++i;
}
returnx-2;
}
voidcut(intp[])
{ intj=0,k,q=1;
k=p[2]/10;
while(k>10)
{ j=j+k%10∗q;
k/=10;
q∗=10;
}
p[3]=j;
}
9
总复习方案参考答案
参 考 答 案(书)
第一章 C语言概述
第一节 计算机语言和程序设计
【知识梳理】
一、计算机语言的发展
2.语法规则
3.机器 汇编 高级
4.二进制
5.助记符 符号
6.高级语言 系统
二、源程序、目标程序、高级语言的翻译方式
2.obj
3.编译 解释
4.可执行程序
5.目标程序
三、算法与程序设计
2.顺序 选择(分支) 循环
5.流程图
【巩固练习】
1.C 2.D 3.B 4.A 5.B 6.C
【拓展练习】
1.B 2.C 3.D 4.C 5.C 6.B
【技能实践】
1.(1)s=s+i (2)i=i+2
2.k>=8或k>7
3.由于已知三角形的三边长,可利用海伦公式求
三角形的面积,具体算法如下:
第一步,令a=2,b=3,c=4
第二步,计算p=
a+b+c
2
第 三 步, 利 用 公 式 S =
p(p-a)(p-b)(p-c),求出面积S=
3
4 15
第四步,输出S,结束程序
第二节 C语言概述
【知识梳理】
一、C语言的基本概念
2.(1)32 9
(3)位(bit)
(5)顺序 选择 循环 自顶向下、逐步细化
3.分号
(1)注释
(2)编译预处理 文件包含 库 输入输出库
(3)宏定义
(4)声明 (110) (90)
(5)主函数 一对圆括号()
(6)max
(7)return
4.(2)一行
(3)可读性
【巩固练习】
1.C 2.D 3.A 4.C
5.(1)sum=579
(2)文件包含 预处理或编译预处理
(3)单行注释
(4)声明三个变量a,b,sum 为整型
(5)赋值 分号 a b
6.(1)|-3|=3.00000
(2)预处理或编译预处理 文件包含 头
(3)从键盘输入一个实数给变量a
(4)求a的绝对值
【拓展练习】
1.main或主
2.分号;
3./∗ ∗/ //
4.顺序结构 选择结构 循环结构
5.函数头 函数体 函数体
6.C.OBJ.EXE
7.字母 数字 下划线 字母或下划线
8.函数声明 函数调用 函数定义 函数值返回
【技能实践】
1.编译预处理
宏定义 符号
01
单招零距离计算机专业综合下册