2012年芜湖市小学计算机水平等级测评试卷
(C语言卷)
题号
一
二
三
四
总分
得分
温馨提示:本试卷包含四大题,共8页。考试时间120分钟,满分120分。
一、单项选择题(共10题,每题2分,共计20分)。
1.计算机处理信息的精度取决于( )。
A. CPU的主频 B. CPU的字长 C.
硬盘的容量 D. 系统总线的传输速率
2.计算机技术日新月异,但其基本硬件结构仍一直沿袭( )设计的框架。
A. 冯·诺依曼 B.
比尔·盖茨 C.
摩尔 D. 图灵
3.以下关于计算机存储计量单位由小到大正确的排列顺序是( )。
A. TB GB PB EB B.GB TB PB EB
C. GB TB EB PB
D.TB GB EB PB
4.下列不属于计算机病毒预防措施的是( )。
A.
拥有计算机病毒检测扫描器 B. 拥有实时监控程序
C.
可对未知计算机病毒进行检测 D. 对已知的计算机病毒进行检测
5.在C语言中,错误的int类型的常数是( )。
A. 1.25E3
B.
0 C. 0xAF
D. 0208
6.为求出表达式s=1!+2!+…+10!的值,则变量s的数据类型应当定义为( )。
A. short
int B. unsigned short C. long
D. 以上均可
7.计算机在执行以下语言编写的程序时,执行效率最高的是
( )。
A. 汇编语言
B.
机器语言
C.
高级语言 D. C/C++语言
8.在计算机术语中经常用RAM表示( )。
A.
只读存储器 B.
可编程只读存储器
C.
动态随机存储器 D. 随机存取存储器
9.计算机的硬件系统应包括( )。
A.
主机和外部设备 B. 输入、输出设备、存储器和中央处理器
C. 处理和存储设备 D.
主机、键盘、鼠标、显示器和音响设备
10.下列关于ASCII的叙述不正确的是( )。
A. ASCII是美国信息交换标准代码的简称。
B. 每个ASCII值对应一个字符,如ASCII值是100对应字符是d。
C. ASCII值对应字符共有255个。
D. ASCII值0-31为控制字符,是不可见字符。
二、问题求解(前4空每空2分,后2空每空1分,共计10分)。
1、某班有56名学生,每位学生发一张调查卡,上面写a,b,c三本书的书名,将读过的书打√,结果统计数字如下:读过a本书的有16人;读过b本书的有12人;读过c本书的有9人;全部读过的有2人;读过a,b两本书的有5人;读过b,c两本书的有4人;读过a,c两本书的有3人;问只读过a本书的人数是________人,一本书也没有读过的人数是________人。
2、(寻找假币)现有80枚硬币,其中有一枚是假币,其重量稍轻,所有真币的重量都相同,如果使用不带砝码的天平称重,可以保证只要称________次,就可以找出假币。第1次的称重方法是分________份,称量其中____和____枚的两份。
三、阅读程序判别出正确结果(共10题,每题5分,共计50分)。
1、下面程序的输出结果是( )。
#include
main()
{ int a=1,i=a+1;
do
{ a++ ;
}
while( !~i++ > 3);
printf("%dn",a);
}
A. 1
B. 2
C. 3
D. 4
2、以下程序的输出结果是( )。
#include
main(
)
{ int x=10, y=10;
printf("%d %d %dn", x--, --y,x+y);
}
A. 9 10 20 B. 10 9 19 C. 9 10 19 D. 10 9 20
3、以下程序的输出结果是( )。
#include
main()
{ int a=0,b=1,c=0,d=20;
if(a) d=d-10;
else if(!b)
if(!c) d=15;
else d=25;
printf("d=%dn",d);
}
A. d=10 B. d=15
C. d=20
D. d=25
4、下面程序的输出结果是( )。
#include
main()
{ int k=0;
char c='A';
do
{
switch(c++)
{
case 'A': k++;break;
case 'B': k--;
case 'C': k+=2;break;
case 'D': k=k%2;continue;
case 'E': k=k+10;break;
default: k=k/3;
}
k++;
}
while(c
printf("k=%dn",k);
}
A. k=1
B. k=2
C. k=3
D. k=4
5、下面程序的输出结果是( )。
#include
main( )
{
int i,k,a[10],p[3];
k=5;
for(i=0;i<10;i++)
a[i]=i;
for(i=0;i<3;i++)
p[i]=a[i*(i+1)];
for(i=0;i<3;i++)
k+=p[i]*2;
printf("%dn",k);
}
A. 20
B. 21
C. 22
D. 23
6、下面程序的输出结果是( )。
#include
main()
{ int i,j,x=0;
for(i=0;i<2;i++)
{ x++;
for(j=0;j<1;j++)
{ if(j%2)
continue;
x++;
}x++;
}
printf("x=%dn",x);
}
A. x=4
B. x=8
C. x=6
D. x=12
7、下面程序的输出结果是( )。
#include
main()
{ int i,j,k=10;
for(i=0;i<2;i++)
{ k++;
{ int k=0;
for(j=0;j<=3;j++)
{ if(j%2)
continue;
k++;
}
}k++;
}
printf("k=%dn",k);
}
A.
k=4 B. k=8
C. k=14
D. k=18
8、下面程序的输出结果是( )。
#include
main( )
{
int a[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,9,0};
int i,j,n;
n=9;
i=n/5;
j=n-i*5-1;
printf("%dn",a[++i][--j]);
}
A. 0
B.
-3 C. 2
D. 9
main()
{ int k,a[10]={1,2,3,4,5};
for(k=1;k<3;k++)
fun(a);
for(k=0;k<5;k++)
printf("%d",a[k]);
}
9、下面程序的输出结果是( )。
#include
void fun(int *s)
{ static int j=0;
do
{ s[j]+=s[j+1];
}while(++j<2);
}
main()
{ int k,a[10]={1,2,3,4,5};
for(k=1;k<3;k++)
fun(a);
for(k=0;k<5;k++)
printf("%d",a[k]);
}
A. 35756
B. 23445
C. 35745
D. 12345
main()
{ int a=2,i,k;
for(i=0;i<2;i++)
k=funa(a--);
printf("%dn",k);
}
10、下面程序的输出结果是( )。
#include
int funa(int a)
{ int b=0;
static int c=3;
a=c++,b++;
return(a);
}
main()
{ int a=2,i,k;
for(i=0;i<2;i++)
k=funa(a--);
printf("%dn",k);
}
A. 3
B. 0
C.
5
D. 4
四、依照下列题意,将程序补充完整(共4题,20个空,共计40分)。
1、杨辉三角问题
【问题描述】打印一个6阶的杨辉三角。
# include "stdio.h"
程序运行输出结果:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
main()
{ int
i,j,k,n,buf[7],tmp[7];
for(i=0;i<=6;i++)
{ for(n=i;n<=6;n++) printf(" ");
if(i==0) printf("=n",1);
else
{ for(j=1;
________;j++)
{ if(j==1 ________ j==i+1)
{ printf("= ",1);
tmp[j-1]
=________;
}
else{ tmp[j-1] = ________ + buf[j-1];
printf("=
",tmp[j-1]);
}
} printf("n");
for(k=0;k<=6;k++)
buf[k] =
________;
}
}
}
程序运行输出结果:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
2、连续整数固定和问题
【问题描述】
编写一个程序,找出一个数的全部的连续整数固定和。所谓一个数n的连续整数固定和,就是指存在a1,a2,…,am,其中ai+1比ai大1,使得a1+a2+…+am=n。这样a1,a2,…,am称为n的一个连续整数固定和。
例如27的全部的连续整数固定和有3组:
2+3+…+7=27;
8+9+10=27;
13+14=27。
本题就是要找出任意输入的整数n(n>=2)的全部的连续整数固定和。
#include "stdio.h"
void cntnsIntSum(int n)
{
int
i,sum=0,j;
for(i=1;i
{
j = i-1;
while(________)
{
j++;
sum = sum + ________;
}
if(________)
{
printf("%d+...+%d =
%dn",i,j,n);
}
sum =________;
}
}
main()
{
int
n;
printf("Please input an integern");
scanf("%d",&n);
________________;
}
样例:Please input an integer
输入:27
输出:2+…+7=27
8+…+10=27
13+…14=27
3、验证尼克彻斯定理
【问题描述】
尼克彻斯定理可以叙述为:任何一个自然数N的立方都可以表示成N个连续奇数的和。
这里要注意:(1)这些奇数一定是要连续的,例如1,3,5,7,9…。
(2)满足条件的奇数有N个,例如23=2*2*2=3+5,共2个奇数。
#include "stdio.h"
void Nicoqish(int N)
{
int
i,j,sum = 0;
for(i=1;i
for(j=i;j
{
sum = sum + j;
if(sum == ________)
{
printf("%d*%d*%d=%d=%d+%d...+%dn",N,N,N,N*N*N,i,i+2,j);
return;
}
if(j________i+2*N)
{
sum = 0;
break;
}
}
}
main()
{
int
N;
printf("Please input an integer to verify Nicoqish Lawn");
scanf("%d",&N);
Nicoqish(N);
}
样例:Please input an integer to verify Nicoqish Law
输入:3
输出: 3*3*3=27=7+9...+11
输入:6
输出: 6*6*6=216=31+33...+41
输入:10
输出: 10*10*10=1000=91+93...+109
4、三重回文数
【问题描述】
如果一个数从左到右读和从右到左读都是同一个数则称为回文数,所谓三重回文数a就是指a,a2,a3都是回文数。下面编程找出11~999之间的所有的三重回文数。
#include "stdio.h"
long reverse(long i)
{
long m,j=0;
________________;
while(m){
j=________________;
m=m/10;
}
return
j;
}
long isCircle(long n)
{
long
m;
m=
________;
if(m !=
n)
return ________;
else
return ________;
}
palindrome(long low,long high)
{
long
i;
for(i=low;i<=high;i++)
{
if(____________________________________==3)
printf("%d ",i);
}
}
main()
{
printf("The palindrome numbers between 11~999
aren");
palindrome(11,999);
}
样例:The palindrome numbers between 11~999 are
11 101 111