1、2自动化系复习答案一、填空题1.若用数组名作为函数调用的实参,则传递给形参的是 数组的首地址 .2.C语言规定:函数的定义 不能嵌套 ;但函数的调用 可以嵌套 。3.在C语言中实参和与其对应的形参 各占用独自的存储 单元。4.C语言规定,函数返回值的类型是由定义该函数时所指定的函数类型 决定的。5.指针变量是 专门存放变量地址的变量 。6.C语言规定,程序中用到的变量必须“ 先定义,后使用 。7在一个C程序中main函数可以出现在程序文件的 最前头,也可放在程序最后,或在一些函数之前,或在另一些函数后 。8.C语言的基本数据类型包括 整形,实型,字符型数据 。9.结构化程序由三种基本控制结构组
2、成的,这三种基本控制结构分别是 顺序结构,选择结构,循环结构。10.C语言规定:二维数组在内存中的存储方式是 先放第一行元素,再放第二行元素。11.算法具有5个特性,这5个特性分别是 有穷性,确定性,有零个或多个输入;有一个或多个输出,有效性 。12.C语言规定,标识符的第一个字符必须是 字母或下划线 。13.函数的递归调用指的是在调用一个函数的过程中又出现直接或间接地调用该函数 。14.定义一个联合类型的变量时,系统分配给它的内存是成员中最长的成员所占的空间。15.定义函数时,在函数名后面的圆括号中出现的参数称为 形式参数 (简称 形参 )。16.从变量的生存周期角度分类,变量可以分为 静态
3、存储类型和动态存储类型 。17.C语言提供的预处理功能主要有 宏定义 、 文件包含 和 条件编译 。18.在C语言中,用零来表示逻辑“假”,用 非零值 来表示逻辑“真”。19.循环的嵌套是指 在某一种循环结构的语句中,包含另一个循环结构 。20.数组指的是相同类型的若干变量按有序的形式组织起来数据元素 的集合。21.调用函数时,在函数名后面列出的参数称为 实际参数 。22.共用体(联合)类型的变量在内存中所占的字节数为 最长的成员所占字节数 。23.设有数组定义为int a4=1,2,3,4,5,6;则值为5的数组元素为 a21 。24.C语言规定,标识符由英文字母,阿拉伯数字,下划线三类字符
4、构成,且第一个字符必须是字母或下划线。25.一个函数直接或间接地调用自身,称为 递归调用 。26.C语言中的函数从用户使用的角度分类,可以分为 库函数 和用户自定义函数。27.break用在循环语句中,其作用是终止语句,并跳出循环体或开关体 。28.按照变量的作用范围分类,变量可以分为 全局变量 和 局部变量 。29.C语言提供的预处理功能主要有 宏定义 、 文件包含 和条件编译 。二、判断题1.如果在一个C复合语句中定义了一个变量,则该变量在本程序范围内均有效。(错)2.C语言中可以使用字符数组或字符指针处理字符串。(对)3.在C程序中,无论是整数还是实数,都能被准确地表示。(错)4.若已有
5、定义static char str10;,要将键盘输入的字符串an apple赋给str,应使用gets(str);语句 (对) 5.如果有初始化语句 char c=a boy;(字母a后有一个空格)则数组的长度自动定义为6。(对)6.C程序的执行都是从主函数开始,并结束于主函数中的某条语句,。(对)7.自动存储类别的局部变量离开所在函数,其存储空间将释放。(对)8.在主函数中定义的变量称为全局变量。(错)9.在C语言中,switch语句后一对圆括号中表达式的类型必须是整型。(错)10.函数调用可以作函数的实参,不可以做函数的形参。(对)11.按变量地址存取变量值的方式称为“直接访问”方式。(
6、对)12.C语言中不同数据类型的长度与机器字长有关。(对)13.C语言规定只有主函数可以调用其他函数。(错)14.若a、b均为整数,且b0,则表达式a/b*b+a%b的值是a。(对)15.定义函数时,如果省略函数返回值的数据类型,则默认为空类型。(错)16程序编译预处理的工作是在编译之前完成的。(对)17C语言中的数组、枚举类型、浮点型和共用体类型都是构造类型。(错)18为整型变量,则表达式a与a!=0是等价的。(对)19避免嵌套if-else的二义性,C语言规定:else与其之前最近的未配对的if配对。(对)20定义一个结构体变量时,系统分配给它的内存空间大小是结构体中各成员所需内存量的总和
7、。(对)21.若已定义int a; 则printf(%d,(a=10,a+=10, a+);的输出是10。(错) 22. putchar()函数的参数可以是字符常量或字符变量。(对)23.C语言中主函数的名字不一定用main表示。(错)24.只有一个分号构成的C语句称为空语句。(对)25.定义函数时,如果省略函数返回值的数据类型,则函数没有返回值。(错)26.while语句的循环体至少被执行一次。(错)27.如果函数的形参与实参的类型不一致,以实参类型为准。(错)三、单项选择题1C语言程序的基本结构是( A )A.函数 B.语句 C.字符 D.程序行2下列合法的字符常量是( C )A.x1 B
8、.019 C.f D.03定义int a; 后,语句printf(%dn,(a=3*3,a*4,a+11);的输出是( B)。A.65 B.20 C.15 D.104a为整型变量,不能正确表达区间(10,15)的C语言表达式是( A )。A.10a10 & a15 D.!(a=15)5以下能正确定义变量a,b和c并为它们赋值的语句是( D )A.int a=5; b=5; c=5; B.int a,b,c=5;C.a=5,b=5,c=5; D.int a=5, b=5, c=5;6若已定义x和y为实型变量,则表达式x=1, y=x+3/2的值是( C )。A.1 B.2 C.2.0 D.2.5
9、7在C语言中,如果一个int型数据占2个字节,则int型数据取值范围是( B )。A.0255 B.-3276832767 C.065535 D.021474836478以下四条语句中,有语法错误的是( D )。A.if(ab) m=a; B.if(a=0) m=a; D.if(a=b;)=0) m=a;9运行下面程序段后,i的值是( B )。 int i;for(i=0;i10;i+)printf(%d,i);A.9 B.0123456789 C.0 D.1010若有说明 char s15,s27;要给s1和s2赋值,下列语句中正确的是(C)。A.scanf(%s%s,&s1, &s2);
10、B.gets(s1, s2);C.gets(s1);gets(s2); D.s1=getchar( ); s2=getchar( );11若在C语言中未说明函数的类型,则系统默认该函数的返回值是( C )。A.float类型 B.long类型 C.int类型 D.double类型12当定义一个结构体变量时,系统为它分配的内存空间是( D )A.结构中一个成员所需的内存容量B.结构中第一个成员所需的内存容量C.结构体中占内存容量最大者所需的容量D.结构中各成员所需内存容量之和13若有说明int a3=1,2,3,4,5,6,7; 则a数组第一维的大小是( B )A.2 B.3 C.4 D.无确定
11、值14下面程序段的运行结果是( D )char c5=a,b,0,c,0;printf(“%s”,c);A.ab B.abc C.ab c D.ab15运行下面程序段的输出结果是( A )int a7=1,3,5 ;printf(%dn,a3 );A.0 B.5 C.3 D.不确定数16若定义 int b7,*p=b; 则p+3表示( A )A.元素b3的地址 B.元素b4的地址 C.元素b4的值 D.元素b3的值17若函数定义为int型,变量z为float类型,则该函数体内的语句return(z)返回的值是(A)。A.int类型 B.float类型 C.int或float均可 D.不确定18
12、sizeof(int)的值是(B)A.1 B.2 C.16 D.不能确定19定义以下结构体类型 struct s int a; float f; a3;语句printf(%d,sizeof(a)的输出结果为 ( C ) A.4 B.12 C.18 D.620执行下列程序后,x和z的值是( D )main() int x , y=1 , z ; if(x=z=y) x=3 ; printf(%d,%dn,x,z);A.3 , 0 B.0 , 0 C.0 , 1 D.3 , 121.下列(A )是符合C语言语法规则的字符型常量。At B97 C”A” D”0”22.设变量a为字符型,f为无符号整型
13、,i为单精度型,则表达式25+b+i*f 的数据类型是( D)。A. int型 B. float 型 C. 不确定 D. double型23. 下列(C)运算符要求其操作数必须是整型或字符型数据。A.+ B./ C.% D.-24.经int a=11; float x=3.8, y=4.9;定义后,表达式 x+a%9*(int)(x+y)%6/4 的值是( B )。A. 5.9 B. 4.8 C. 4.9 D. 5.825.设x、y、t均为int型变量,则执行语句:x=y=1;t=-x&+y;后,y的值为( B )。A不定值 B1 C 4 D 326.设a为整型变量,不能正确表达数学关系:32
14、a32 & a37 B. a=33 | a=34 | a=35 | a=36C. 32a37 D. !(a=37)27.若i和k都是int型变量,有以下for语句for(i=0,k=-1;k=1;k+)printf(“*n”);下面关于语句执行情况的叙述中正确的是( B )。A循环体执行两次 B构成无限次循环C循环体一次也不执行 D循环体执行一次28.若a为int类型,且其值为4,则执行完表达式a+=a-=a*a后,a的值是( A )。A -24 B 9 C -12 D 629.下列合法的数组定义是( D )。Aint a=”string”; Bchar a=“012”,”345”;Cint
15、a5=0,1,2,3,4,5; Dchar a=”string”;30.有以下程序#include main()int k=0x11;printf(%dn,k+);程序运行后的输出结果是( C )。A. 12 B. 11 C. 17 D. 1831.下面程序运行后,输出结果是( A )。#include main( )char p17=abc,p2=ABC,str50=xyz;strcpy(str,strcat(p1,p2);printf(%s, str);AabcABC B.xyzabc C. xyzabcABC D.xyzABC32. 有以下程序main() int a33,*p,i;p=
16、&a00;for(i=0;i9;i+) pi=i+2;printf(%d n,a21);程序运行后的输出结果是( A )A9 B2 C5 D733.若有以下说明语句:int a12=5,1,2,3,4,5,6,7,8,9,10,11;char c=a,d,g;则值为4的表达式是( C )。Aag-c Ba3 Cae-c Dad-c34.定义以下结构体类型struct s short a;char b;float f; x;语句printf(%d,sizeof(x)的输出结果为( B )。A 8 B 7 C 6 D 535.假定w、x、y、z、m均为int型变量,有如下程序段:w=4; x=3;
17、 y=2; z=1;m=(wx)?w : x; m=(my)?m : y; m=(mz)?m: z;则该程序运行后,m的值是 ( D )A 4 B 3 C 2 D 136. 以下程序的输出结果是( C )main() int a=3,b=4,c=0,d;d=!a&!b|!c;printf(%dn,d); A 0 B非0的数 C1 D -137. 以下程序执行后的输出结果是 ( A )main() int i=3, j=3, k=4;if ( (j+ | k+) & i+)printf(%d,%d,%dn, i, j, k);A4,4,4 B3,3,4 C3,3,5 D3,3,438. 下列程序
18、段的输出结果是( A )。int *p, *q, k =5, j=7 ;p=&j; q = &k ; p = q ; (*p)+;printf(%d,*q);A6 B5 C8 D739. 执行下面程序段后,c3中的值是( D )。int c1=4 , c2=5 , c3;c3=c1/c2;A0.8 B4/5 C1 D040. 有以下程序main() int i;for ( i=0; i3; i+ )switch ( i ) case 1 : printf(%d, i);default : printf(%d, i);case 2 : printf(%d, i);执行后输出结果是 ( B )A0
19、11122 B001112 C012020 D120四、程序填空1.下面的程序的功能是输出600800之间所有素数。本程序中利用自定义函数prime()判断一个整数是否为素数(如果整数x不能被2x-1之间的任意一个数所整除,则x是素数)。要求每行输出10个素数。#include (1) int prime(int m); /函数的原型声明void main()int k, s=0;(2)for( k=301;k300;k+=2 ) /判断300500之间的每一个奇数 if (prime(k) printf(%5d,k); s+;(3) if( s%10=0 ) /每行输出10个素数 print
20、f(n); printf(ns=%dn,s);int prime(int m)int i; for(i=2;m%i!=0;i+);(4)return( m=i ); /返回函数的值2.下列程序将输入的整数num按逆序输出,算法是:先输出个位数,然后将该数缩小10倍,再输出新的个位数,直到缩小后的数为0。请选择正确的答案完成填空。#include void main() int c,num;printf(Enter a number:);(5) scanf(“%d”,&num); ;/输入变量num的值(6)do c= num%10 +0; /计算变量num的个位数(7) putchar(c);
21、或printf(“%c”,c); ;/输出num的个位数(8) while( num=num/10或num/=10 0);/变量num缩小10倍3.斐波那契数列的第1项和第2项都是1。下面的程序用来计算斐波拉契数列1,1,2,3,5,8,13,21,.第7项的值,请选择正确答案填入程序空白处。斐波那契数列的构成规律:#include (9) long fib( int g ) /函数的形参声明 switch(g) case 0: return 0; case 1: (10) case 2: return 1 ; /数列的1、2项*/ (11) return ( fib(g-1)+fib(g-2
22、) ); /数列的其余各项 main() int k;(12) k= fib(7) ; /数列的第7项 printf(k=%dn,k);4.有一个3行4列的矩阵,要求计算出其中值最大的元素的值,以及其所在的行号和列号。#include void main() int i,j,row=0,column=0,max;(13)int a34 =1,2,3,4,9,8,7,6,-10,10,-5,2;/数组的定义及初始化(14) max=a00 ;/用数组的第一个元素给存放最大值的变量max赋初值(15)for( i=0;i=2;i+ )/行下标的变化for(j=0;jmax )/判断最大值 max=
23、aij;row=i;column=j;五、读程序写结果1.下列程序段的输出结果是 k=4 s=6 。int k, s; for(k=0, s=0; kk) break ;else s += k;printf(k=%d s=%d, k, s);2.下列程序段的输出是 *#*# 。main() int k; for(k=1; k5; k+) if(k % 2) printf(*); else continue; printf(#);3.运行下面的程序段,输出结果是 ebcegf 。int i=0;char s110=abc, s210=efg;strcat(s1,s2);while (s1i+!=
24、0)s2i=s1i;puts(s2);4.以下程序运行后的输出结果是: 817 。func(a,b)int a,b;static int m=0,i =2;i+=m+1;m=i+a+b;return(m);main()int k=4,m=1,p;p=func(k,m); printf(“%d”,p);p=func(k,m); printf(“%dn”,p);5.写出下列程序结果: m=5,n=3 。#include int m=10;void f(int n) n=8/n;m=m/2; main( ) int n=3;f(n);printf(“m=%d,n=%dn”,m,n);6有以下程序程序
25、的执行结果是: 7 。#include int f(int n);void main() int a=2,s;s=f(a); s=s+f(a); printf(%dn,s);int f(int n)static int a=1; n+=a+; return n; 7.以下程序执行后输出结果是: 3025 。#include int a=5;void fun(int b)int a=10;a+=b;printf(%d,a);main()int c=20;fun(c);a+=c;printf(%dn,a);8.以下程序运行后,如果输入的是1 2 3 4 5 0,输出结果为: 345756 #inc
26、lude main() int s;scanf(“%d”,&s);while(s0)switch(s)default :printf(“%d”,s+1);break;case 1:printf(“%d”,s+2);case 2:printf(“%d”,s+3);break;case 3:printf(“%d”,s+4);scanf(“%d”,&s);9.下面程序运行后,输出结果是: atody #include void main() char s=today, c;int i, j=0;for (i=1; isi)c=sj;sj=si; si=c; printf(%sn, s);10.以下程
27、序执行后的输出结果是: s=39 int n,a,s=0,p=1,i;n=3;a=3;for(i=1;i=n;+i)p=p*a;s+=p;printf(ns(%d,%d)=%d,a,i,s);11.以下程序运行后的输出结果是: 10,8 int d=2;fun(int p)int d=4;d+=p+;printf(%d,,d);main()int a=6;fun(a);d+=a+;printf(%dn,d);12.写出下列程序结果: n=11 #include void main()char s=120354xy7s89f1w4;int i,n=0;for(i=0;si!=0;i+)if(si=0&si=9) n+;printf(n=%dn,n);13有以下程序程序的执行结果是: BcDeFg #include void main() char b,c; int i;b=B;c=b;for(i=0;i6;i+) if(!(i%2) putchar(i+b); else putchar(i+c);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1