第四章C51应用程序设计 、填空题(每空2分,共30分) 1、在C语言的逻辑运算中,以代表逻辑值“假”。 2、C51编译器支持两种类型的指针,包括一般指针和的指针。 3、若a为nt型变量,则下面表达式的值是。 (a=3*5, 4, 4、C程序由函数构成,C程序总是从开始执行 5、若用数组名作为函数调用的实参,则传递给形参的是_数组第一个元素的值 。6、若有说明:inta0[4{1,2,3.4,5,6,7,89,10}:则a数组第一维的大小是。 7、若有inti=10,j=0:则执行完语句ifi=0)i-:else+:后i的值为。8、 若有以下语句,则编译后分配给数组ch的内存占用的字节数为。 char ch[]="Ga 9、C语言程序的三种基本结构是顺序结构、、。10、当a=8,b-4,c=2时, 表达式y=a>b>c的值为 11、设a和b均为int型变量,且a=1b-2,则表达式2.5+ab的值为。12、若x 为t型变量,则执行以下语句后x的值是 -264 X=12: 13、请写出以下程序的输出结果 main() int x=50:if(x>50) printf%dn”x>50: else 0 main( int t=1,i=4:for(:=0:i-) 1*=1: printf(%dnt) 选择题 小题2分,共30分) I、判断char型变量ch是否为大写字母的正确的表达式是 A、,A=A"(ch=AAND(ch=A&&(ch<=Z 2.在结构化程序设计中,模块划分的原则是 D。A、各模块应该包 含尽量多的功能B、各模块的规模应尽量大 C、各模块之间的联系应该尽量紧密D、模块内具有高内聚度、模块间具有低耦 合度3.以下合法的赋值语句是B 是9=200B,X:C,ab:D、zitx+y4C51语言中,下列运第海 +B、+=C ?:D、I 5.在C语言程序中,以下说法正确的是B一
第四章 C51 应用程序设计 一、填空题(每空 2 分,共 30 分) 1、在 C 语言的逻辑运算中,以代表逻辑值“假”。 2、C51 编译器支持两种类型的指针,包括一般指针和的指针。 3、若 a 为 int 型变量,则下面表达式的值是。 (a=3*5,a*4),a+2 4、C 程序由函数构成,C 程序总是从开始执行。 5、若用数组名作为函数调用的实参,则传递给形参的是_ 数组第一个元素的值 ____。 6、若有说明:int a[][4]={1,2,3,4,5,6,7,8,9,10};则 a 数组第一维的大小是。 7、若有 int i=10,j=0;则执行完语句 if(j=0)i--;else i++;后 i 的值为。 8、 若有以下语句,则编译后分配给数组 ch 的内存占用的字节数为。 char ch[]="Ganzhou"; 9、C 语言程序的三种基本结构是顺序结构 、、。 10、当 a=8,b=4,c=2 时, 表达式 y=a>b>c 的值为_____。 11、设 a 和 b 均为 int 型变量,且 a=1,b=2,则表达式 2.5+a/b 的值为。 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=0;i--) t*=i; printf(“%d\n”,t); } 二、 选择题(每小题 2 分,共 30 分) 1、判断 char 型变量 ch 是否为大写字母的正确的表达式是 A、„A‟=„A‟)||(ch =„A‟)AND(ch =„A‟)&&(ch <=„Z‟) 2. 在结构化程序设计中,模块划分的原则是______D_____。 A、各模块应该包 含尽量多的功能 B、各模块的规模应尽量大 C、各模块之间的联系应该尽量紧密 D、模块内具有高内聚度、模块间具有低耦 合度 3. 以下合法的赋值语句是_____B______。 A、x=y=200 B、x--; C、a+b; D、z=int(x+y); 4、C51 语言中,下列运算符 属于三目运算符的是。 A、++ B、+= C、 ? : D、|| 5.在 C 语言程序中,以下说法正确的是_____B______
A、函数的定义可以嵌套,但函数的调用不可以嵌套。B、函数的定义不可以嵌 套,但函数的调用可以嵌套。C、函数的定义和函数的调用都不可以嵌套。D、 函数的定义和函数的调用都可以嵌套 6. 下列数据类型中, 属于C51扩展的数据类型 A、float B、void C、strl6D、long7、指出下面正确的输入语句是_B A、scanf("x=y=%d”,&x,&y):B、scanf(“a=%d,b-%f,&m,&f):C、scanf%3c”,ch): D、scanf0%62f”&x): 双。加果整型变 、d的初始值分别是1、2、3和4,整型变量m和n的 初始值均为1,则执行表达式(m=a>b)&&n=c>d后,m和n的值分别为 A、00B、01C、10D、11 9、已知ch是字符型变量,下面不正确的赋值语句是 A A、ch="x+y":B、ch="010"C、ch="32"+"65":D、ch=32+65:10、写 出以下程序的输出结果为 A #define S(r)rr void main() int a=4.b=6:int area: area=S(a+b): printf("area=%d\n"area): A、100B、28C、24D、34 11、MCS-51单片机的复位信号是有效 A、高电平B、低电平C、上升沿D、下降沿12、函数调 用:streat(strepy(strl,str2),str3)的功能是 A、将串strl复制到串str2中后再连接到串str3之后。B、将串strl连接到串str2 之后再复制到串str3之后。C、将串str2复制到串strl中后再将串str3连接到 串strl之后。 D、将串sr2连接到串srl之后再将串sr 复制到 串str3中 13、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是 B A、地址传递 B、单向值传递 C、双向值传递,即由实参传给形参,再由形参传回给实参D、由用户指定传递 方式 14、以下不能定义为用户标识符的是 D A、k3f B、Void D、char C、3com 15、以下能正确定义一维数组的选项是C A、int ch]: B、int ch[0..l0: C.#define SIZE 10D,int SIZE=10:int ch[SIZE]:int ch[SIZE]: 三写出下列程序的运行结果(每小题3分,共15分,) 1、有以下程序: #includevoid main({ int i for(i=0:<++)switch(i){case 0:printf("%d"i);case 2:printf(%d"i);default: printf("%d"i);
A、函数的定义可以嵌套,但函数的调用不可以嵌套。 B、函数的定义不可以嵌 套,但函数的调用可以嵌套。 C、函数的定义和函数的调用都不可以嵌套。 D、 函数的定义和函数的调用都可以嵌套。 6. 下列数据类型中,____C_______属于 C51 扩展的数据类型。 A、float B、 void C、sfr16 D、long 7、指出下面正确的输入语句是____B_______。 A、scanf(“x=y=%d”,&x,&y);B、scanf(“a=%d,b=%f”,&m,&f);C、scanf(“%3c”,ch); D、scanf(“%6.2f”,&x); 8、如果整型变量 a、b、c、d 的初始值分别是 1、2、3 和 4,整型变量 m 和 n 的 初始值均为 1,则执行表达式(m=a>b)&&(n=c>d)后,m 和 n 的值分别为 _____A______。 A、0 0 B、0 1 C、1 0 D、1 1 9、已知 ch 是字符型变量,下面不正确的赋值语句是______A_____。 A、ch=‟x+y‟; B、ch=‟\010‟; C、ch=‟32‟+‟65‟; D、ch=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); } A、100 B、28 C、24 D、34 11、MCS-51 单片机的复位信号是有效。 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 中。 13、C 语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是 ___B________。 A、地址传递 B、单向值传递 C、双向值传递,即由实参传给形参,再由形参传回给实参 D、由用户指定传递 方式 14、以下不能定义为用户标识符的是_______D____。 A、k3f_ B、Void D、char C、_3com 15、以下能正确定义一维数组的选项是_____C______。 A、int ch[ ]; B、int ch[0…10]; C、#define SIZE 10 D、int SIZE=10; int ch[SIZE]; int ch[SIZE]; 三 写出下列程序的运行结果(每小题 3 分,共 15 分,) 1、有以下程序: #include 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); }
积常运行后的输出结里是 2、写出以 程序运行的结果:。 #include int f(int a) auto int b=0 static int c=3;b=b+l;c=c+l return(a+b+c), void main()int a=2.1 for(i=0:ivoid main() int i.sum=0: ①=0:do{ ++: while(is=100) ntfo%dn”,sum) 2、用排序法对从键盘输入的任意10个实数按照由大到小的顺序进行排序,并输 出它们的值。(每个空2分,共6分) #include void main() float a[10]t;int ij: printf("请输入l0个数据n"):for(=0:i<=9:i计+) printf("n): for(j=0;j<9:j++) for=0it+)ifa的){t=a:a[=aitl]:printf("n排序结果是:n")片fori=0: i<=9:++printf("%5.4f",alil): 3、要使以下f0r语句输出10个整数,请填入一个整数。(共2分)
} 程序运行后的输出结果是 2、写出以下程序运行的结果:。 #include 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 void main( ) { int i,sum=0; ① i=0 ; do { i++; }while(i void main( ) { float a[10],t; int i,j; printf("请输入 10 个数据:\n"); for (i=0; i<=9; i++) scanf("%f",; printf(“\n”); for(j=0;j<9;j++) for(i=0i++) if(a[i] ) { t=a[i]; a[i]=a[i+1]; printf("\n 排序结果是:\n"); for(i=0; i<=9;i++) printf("%5.4f ", a[i]); } 3、要使以下 for 语句输出 10 个整数,请填入一个整数。(共 2 分)
for(i=0:printf("%d\n"i+=2)): alit1=t: 五、编程题(共13分) (本题6分)一个数如果恰好等于它的因子之和,这个数就称为完数”:例 如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。编写程序打印2~1000 以内的完数。2、(本题7分)编程计算如下表达式的值:x(当x>0)y= x2+5x+2(当XVoid main({ int i,x.y=1 clrscr0 Scanf("%d",&x):If(x>0) For(i=1;i=x;i++)y=yi:Ease Y=x*x+5*x+2】
for(i=0;;printf(“%d\n”,i+=2)); a[i+1]=t;} 五、编程题(共 13 分) 1、(本题 6 分)一个数如果恰好等于它的因子之和,这个数就称为“完数”。例 如,6 的因子为 1、2、3,而 6=1+2+3,因此 6 是“完数”。编写程序打印 2~1000 以内的完数。 2、(本题 7 分)编程计算如下表达式的值: x! (当 x>0) y = x2+5x+2 (当 x≤0) 其中 x 为整型数据,当 x>0 时,y 为 x 的阶乘;当 x≤0 时,y 为 x2+5x+2 的值。 2:#include Void main() { int i,x,y=1 clrscr() Scanf("%d",&x); If(x>0) For(i=1;i,=x;i++)y=y*i; Ease Y=x*x+5*x+2 }