西
试卷编号:
2011_____—2012_____ 学年第___2_____学期
课程名称:__单片机C51语言______________
考试时间单片机printf函数:________ ________日(100分钟)
考试性质:(正考、补考或其它)
考试方式:[闭卷]
试卷类别(AB):[  A ]      大题
请考生自觉遵守考试纪律,争做文明诚信的大学生。如有违犯考试纪律,将严格按照《江西理工大学学生违纪处分暂行规定》处理。
班级                    学号           姓名                     
题号
   
得分
一、填空题(每空2分,共30分)
1C语言的逻辑运算中,以_____0______代表逻辑值
2C51编译器支持两种类型的指针,包括一般指针和 指向存储器 的指针。
3、若aint型变量,则下面表达式的值是____17______
(a=3*5a*4)a+2
4C程序由函数构成,C程序总是从______主函数_____开始执行。
5、若用数组名作为函数调用的实参,则传递给形参的是_  数组第一个元素的值____
6、若有说明:int a[][4]={1,2,3,4,5,6,7,8,9,10};则a数组第一维的大小是____3_______
7、若有int i10j0;则执行完语句if(j0)i--else i++;后i的值为____11_____
8、若有以下语句,则编译后分配给数组ch的内存占用的字节数为_____8_____
char ch[]="Ganzhou"
9C语言程序的三种基本结构是顺序结构 ______选择结构_______循环结构___
10、当a=8b=4c=2时,表达式y=a>b>c的值为____0______
11、设ab均为int型变量,且a=1,b=2,则表达式2.5+a/b的值为____2.5____
12、若x int型变量,则执行以下语句后x的值是____-264____
x=12 x+=x-=x*x
13、请写出以下程序的输出结果____1_______
main()
{
int x=50
if(x>50)
printf(“%d\n”,x>50)
else
printf(“%d\n”,x<=50)
}
14、请写出以下程序的输出结果_____0________
main()
{
int t=1,i=4
for(i>=0i--)
t*=i
printf(“%d\n”,t)
}
二、 选择题(每小题2分,共30分)
1判断char型变量ch是否为大写字母的正确的表达式是      C     
A‘A’<=ch<=‘Z’                B(ch>=‘A’)||(ch <=‘Z’)
C(ch>=‘A’)&&(ch <=‘Z’)        D(ch>=‘A’)AND(ch <=‘Z’)
2. 在结构化程序设计中,模块划分的原则是______D_____
A、各模块应该包含尽量多的功能      B、各模块的规模应尽量大
C、各模块之间的联系应该尽量紧密    D、模块内具有高内聚度、模块间具有低耦合度
3. 以下合法的赋值语句是_____B______
Ax=y=200                    Bx--
Ca+b                      Dz=int(x+y)
4C51语言中,下列运算符属于三目运算符的是___C____
A++          B+=      C ?  :         D||
5.C语言程序中,以下说法正确的是_____B______
A、函数的定义可以嵌套,但函数的调用不可以嵌套。
B、函数的定义不可以嵌套,但函数的调用可以嵌套。
C、函数的定义和函数的调用都不可以嵌套。
D、函数的定义和函数的调用都可以嵌套。
6. 下列数据类型中,____C_______属于C51扩展的数据类型。
Afloat          B void          Csfr16          Dlong
7、指出下面正确的输入语句是____B_______
Ascanf(“x=y=%d”,&x,&y)        Bscanf(“a=%d,b=%f”,&m,&f)
Cscanf(“%3c”,ch)                Dscanf(“%6.2f”,&x)
8、如果整型变量abcd的初始值分别是1234,整型变量mn的初始值均为1,则执行表达式(m=a>b)&&(n=c>d)后,mn的值分别为_____A______
A0  0                        B0  1
C1  0                        D1  1
9、已知ch是字符型变量,下面不正确的赋值语句是______A_____
Ach=’x+y’                        Bch=’\010’
Cch=’32’+’65’                      Dch=32+65
10、写出以下程序的输出结果为______A_____
#define S(r) r*r
void main( )
{
int a=4,b=6
int area
area=S(a+b)
printf("area=%d\n",area)
}
A100        B28        C24        D34
11MCS-51单片机的复位信号是____A_____有效。
A、高电平        B、低电平    C、上升沿    D、下降沿
12、函数调用:strcat(strcpy(str1,str2),str3)的功能是_____C______
A、将串str1复制到串str2中后再连接到串str3之后。
B、将串str1连接到串str2之后再复制到串str3之后。
C、将串str2复制到串str1中后再将串str3连接到串str1之后。
D、将串str2连接到串str1之后再将串str1复制到串str3中。
13C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是___B________
   A、地址传递                            B、单向值传递
   C、双向值传递,即由实参传给形参,再由形参传回给实参
   D、由用户指定传递方式
14、以下不能定义为用户标识符的是_______D____
Ak3f_                      BVoid
      C_3com                    Dchar
15、以下能正确定义一维数组的选项是_____C______
Aint ch[ ]                      Bint ch[0…10]
        C#define SIZE 10              Dint SIZE=10
          int ch[SIZE]                    int ch[SIZE]
写出下列程序的运行结果(每小题3分,共15分,)
1、有以下程序:
#include <stdio.h>
void main()
{
            int i;
            for(i=0;i<3;i++)
                switch(i)
                {
                    case 0:  printf(“%d”,i);
                    case 2:  printf(“%d”,i);
                    default: printf(“%d”,i);
                }
}
        程序运行后的输出结果是         000122         
2、写出以下程序运行的结果:      78           
      #include <stdio.h>
int f(int a)
{  auto int b=0;
static int c=3;
b=b+1;
c=c+1;
return(a+b+c);
}
void main()
{  int a=2,i;
  for(i=0;i<2;i++)
printf("%d,",f(a));
}
3、写出以下程序运行的结果                 
    void main( )
{
int j,f[5] ={1,1}
for (j=2j<4j++) 
f[j]=f[j-1]+f[j-2]
for(j=0j<4j++) 
printf ("%d,"f[j])
printf (“\n”) 
}
4、写出以下程序运行的结果        -1         
          void main( )
{
int k=2
while(k--)
printf("%d\n",k)
}
5、写出以下程序运行的结果          357       
          void main( )
{
int j,a[3][3]={1,2,3,4,5,6,7,8,9}
for(j=0;j<3;j++)
printf("%d,",a[j][2-j])
}
四、阅读下列程序,在              处填入适当内容,使程序完整(12分)
1、用dowhile语句求123456…+100的和。(每个空2,4)
      #include <stdio.h>
      void  main( )
{    int i,sum=0
      i=0           
do
{
  sum=sum+i         
        i++
}while(i<=100)
printf(“%d\n”,sum)
}
2、用排序法对从键盘输入的任意10个实数按照由大到小的顺序进行排序,并输出它们的值。(每个空2,6)
        #include <stdio.h>
void  main( )
{