C语言习题.docx
- 文档编号:18332515
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:32
- 大小:33.91KB
C语言习题.docx
《C语言习题.docx》由会员分享,可在线阅读,更多相关《C语言习题.docx(32页珍藏版)》请在冰点文库上搜索。
C语言习题
习题十
班级:
姓名:
学号:
_________
一、单选题:
1.在函数调用中,若形参和实参都是简单变量,下面说法正确的是(B)。
A.实参和形参共用一个内存单元
B.实参和形参各占用一个独立的内存单元
C.由用户确定是否共用内存单元
D.由系统确定是否共用内存单元
2.在宏定义#definePI3.14159中,用宏名PI代替一个(D)。
A.单精度数B.双精度数C.常量D.字符串
3.在复合语句中定义的变量的作用域是(D)。
A.整个源文件B.整个程序
C.整个程序D.所定义的复合语句
4.以下不正确的说法是(D)。
A.在函数中,可以通过return语句传回函数值
B.在函数中,可以有多个return语句
C.C语言总是从main函数开始执行
D.在C中,调用函数必须在一条独立的语句中完成
5.C语言程序的基本单位是(D).
A.程序B.语句C.字符D.函数
6.函数的参数不能是(D)..
A.变量B.函数调用表达式C.语句D.常量
7.一个C语言的程序总是从(A)开始执行的.
A.main函数B.文件中的第一个函数
C.编辑屏幕上的第一个函数D.文件中的第一条语句
8.定义为void类型的函数,其含义是(A)..
A.调用函数后,被调用的函数没有返回值B.调用函数后,被调用的函数不返回
C.调用函数后,被调用的函数的返回值为任意的类型D.以上三种说法都是错误的
9.C语言中,函数返回值的类型是由(D)决定的。
A.调用函数时临时B.return语句中的表达式类型
C.调用该函数的主函数类型D.定义函数时,所指定的函数类型
10.在C语言的函数中,(C).
A.必须有形参B.形参必须是变量名
C.可以有形参也可以没有形参D.数组名不能作形参
11.以下函数f返回值是(B).f(intx){returnx;}
A.void类型B.int类型C.float类型D.无法确定返回值类型
12.以下说法中正确的是(A).
A.实参可以是常量、变量或表达式B.形参可以是常量、变量或表达式
C.实参可以为任意类型D.形参应与其对应的实参类型一致
13.用数组名作为函数调用的实参,实际上传递给形参的是(A).
A.数组的首地址B.数组的第一个元素的值
C.每一个数组元素D.数组元素的个数
14.函数调用语句f((x,,y),(a,b,c),(1,2,3,4));中,所含的实参个数是(C).
A.1B.2C.3D.4
15.C语言中的函数(D)。
A.可以嵌套定义B.可以嵌套调用,但不能递归调用
C.不可以嵌套调用D.嵌套调用和递归调用均可
16.以下叙述中正确的是(A).
A.局部变量说明为static存储类,其生存期将得到延长
B.全局变量说明为static存储类,其作用域将被扩大
C.任何存储类的变量在未赋初值是,其值都是不确定的
D.形参可以使用的存储类说明符与局部变量完全相同
17.当全局变量与函数内部的局部变量同名时,则在函数内部B。
A.全局变量有效B.局部变量有效
C.全局变量与局部变量都有效D.全局变量与局部变量都无效
18.凡是在函数中未指明存储的变量,其隐含的存储类别为B。
A.rejiserB.autoC.staticD.exetem
19.下列语句中,不正确的是D。
A.c=2*max(a,b);B.m=max(a,max(b,c));
C.printf(“%d”,max(a,b));D.m=intmax(intx,intmax(inty,intz));
20.下列说法中正确的是D。
A.调用函数时,实参变量与形参变量可以共用内存单元
B.调用函数时,实参的个数、类型和顺序与形参可以不一致
C.调用函数时,形参可以是表达式
D.调用函数时,将为形参分配内存单元
二、填空:
1、函数定义时所用参数称为形参,调用时所用参数称为实参。
2、函数的确定的返回值一般是通过函数体中的return语句获得的。
3、C语言规定,程序总是从主函数开始执行的。
4、一个C程序有一个主函数,一个函数类型没有说明,则该函数类型为int型。
5、函数返回值的类型是由函数类型决定的。
6、在C语言中,如果不对函数作类型说明,则函数的隐含类型为int.
7、以下程序的功能是调用函数fun计算:
m=1-2+3-4+5……+9-10+11-12.并输出结果,请填空。
#include
intfun(intn)
{intm=0,f=1,i;
for(i=1;i<=n;i++)
{m+=i*f;
f=-f;}
return(m);}
8、C语言中不能被别的函数调用的函数是主函数。
9、执行完下列语句段后,i值为___5______.
inti;
intf(intx)
{return((x>0)?
f(x-1)+f(x-2):
1);}
i=f(3);
10、执行完下列语句段后,i值为____1____.
inti;
intf(intx)
{intk=0;x+=k++;returnx;}
i=f(f
(1));
11、下列程序的输出结果是_8_,__4__.
intd=1;
fun(intp)
{intd=5;d+=p++;printf(“%d,”,d);}
main()
{inta=3;fun(a);d+=a++;printf(“%d”,d);}
12、已知等差数列的第一项为10,公差为3.下列程序是计算数列的第五项。
函数f是递归函数定义
f(intn)
{intc;
if(n==1)c=10;
elsec=_f(n-1)+3_;
returnc;}
main()
{intn=5;printf(“num=%d\n”,f(n));}
13、在C语言中,一个函数一般由两部分组成,它们是函数说明和函数体。
14、输入2个整数,求最大值。
#include
intmax(intx,inty)
{return(x>y?
x:
y);}
main()
{inta,b;
scanf(“%d,%d”,&a,&b);
printf(“max=%d\n”,max(a,b));
}
15、下列程序的输出结果是x=1,y=1,x=1,y=2,x=1,y=3,x=1,y=4。
#include
incx()
{intx=0;
printf(“x=%d,”,++x);
}
incy()
{saticinty=o;
printf(“y=%d,”,++y);
}
main()
{incx();incy();incx();incy();incx();incy();incx();incy();}
16、求X,Y的最大公约数。
fun(intx,inty)
{inttmp,a,b;
if(x a=x;b=y;tmp=a%b; while(tmp! =0) {a=b;b=tmp;tmp=a%b;} } 17、构造递归函数的关键是找到适当的递归算法和终结条件。 18、在主函数中定义static变量的意义不大,因为程序每次运行都是从新分配空间的 19、C语言不允许函数内再定义函数。 20、主函数内定义的变量只能在主函数内有效。 三、阅读下列各程序,写出其运行结果 1.max(floatx,floaty) {floatz; z=x>y? x: y; returnz; } main() {floata=8.6,b=7.8; intc; c=max(a,b); printf(“%d\n”,c); } 8 3、#include fun(inta) {autointb=0; staticintc=3; b=b+1;c=c+1; return(a+b+c); } main() {inta=2,i; for(i=0;i<3;i++) printf(“%5d”,fun(a)); } 789 2.main() {intn=-7890; voidreverse(); reverse(n); } voidreverse(intx) {inti; if(x<0) {x=-x; printf(“%c”,‘-’);} printf(“%c”,x%10+’0’); if((i=x/10)! =0)reverse(i); }-0987 4.#include main() {ints,i; sum(int); for(i=1;i<=10;i++) s=sum(i); printf(“S=%d”,s); } sum(intk) {intx=1; return(x+=k); }11 四、判断题。 (×)1.下面程序段是否正确。 main(){voidfun(){…….}……} (√)2.实参可以是常量、变量或表达式。 (×)3.形参可以是常量、变量或表达式。 (×)4.数组名作函数的参数时,实参数组和形参数组大小一定要一致。 (√)5.形参和实参的变量名可以相同。 (×)6.在一个函数定义中只能包含一个return语句。 (×)7.形参和实参的个数可以不相同。 (×)8.主函数和其它函数可以互相调用。 (×)9.主函数内定义的变量是全局变量。 (√)10.不同函数中定义的变量,其作用范围都限制在各自的函数内,在内存中占据的存储单元也各不相同。 (×)11、数组名作函数的参数时,采用的是“值传递”方式。 (×)12、return语句后面括号内不能是表达式。 (×)13、以下程序运行结果为1,3,5,7. main() {inta[4]={1,3,5,7}; printf(“%d,%d,%d,%d”,a);} (√)14、所以的函数都是平行的(即独立的),一个函数并不属于另一个函数。 (×)15、只有主函数才可以调用其它函数。 (×)16、数组元素做函数的实参,是双向传递,。 (√)17、形参和实参的变量名字可以一样。 (×)18、在一个函数定义中只能包含一return语句 (√)19、函数不能嵌套定义但可以嵌套调用。 (√)20、全局变量在程序的全部执行过程中都占用存储单元。 五、编程题 1.写一个函数,使其能将一个二维数组(5×3)中的数据进行行列互换。 2.写一个程序,从键盘输入5个正整,求出他们的最小公倍数。 (写一个求两个正整数的最小公倍数的函数) 3.写一个函数求出所有的水仙花数。 (即一个三位数满足它的个、十、百位的立方和等于这个三位数。 如153=13+53+33 1.#include voidf(inta[5][3],intb[3][5]){inta1[5][3],a2[3][5],i,j;{for(j=0;j<5;j++) {inti;for(i=0;i<5;i++)printf(“%d”,a2[i][j]); for(i=0;i<5;i++)for(j=0;j<3;j++)printf(“\n”);} for(j=0;j<3;j++)scanf(“%d”,&a1[i][j]);} b[j][i]=a[i][j];}f(a1,a2); 2.#include inthef(intu,intv){intb[5],i,f[5]; {intt,r,m=u,n=v;for(i=0;i<5;i++) if(v>u){t=u;u=v;v=t;}scanf(“%d”,&b[i]); while((r=u%v)! =0)f[4]=b[4]; {u=v;v=r;}for(i=4;i>=0;i--) return(m*n/v);f[i-1]=hef(f[i],b[i-1]); }printf(“%d”,f[0]);} 3.voidfun() {inti,abc; for(i=100;i<1000;i++) {a=i/100;b=(i/10)%10;c=i%10; if(i==a*a*a+b*b*b+c*c*c) printf(“%d”,i);} } 习题十一 班级: 姓名: 学号: _________ 一、单选题: 1.若有: intx[10],*p;p=x;则p+5即是B。 A.x[5]B.&x[5]C.*x+5D.*(x+5) 2.变量的指针,其含义是指该变量的B。 A.值B.地址C.名D.内容 3.以下C语言程序片段中,正确的是A。 A.intx,*p=&x;B.int*p=&x,x; C.intx,*p;D.int*p,x; p=x;*p=&x; 4.对于类型相同的两个指针变量,不能进行A运算。 A.+B.-C.=D.== 5.定义指针变量int*pointer;指针变量名是B。 A.*pointerB.pointer C.&pointerD.以上3个都不是 6.以下程序中调用scanf函数给变量a输入数值的方法是错误的其错误原因是B. #include voidmain() {int*p,a; p=&a; scanf(“%d”,*p); …….} A.*p表示的是指针变量的地址B.*p表示的是变量a的值,而不是变量a的地址C.*p表示的是指针变量p的值D.*p只能用来说明p是一个指针变量 7.以下程序运行之后的输出结果是__B___. #include main() {int*p,*p1,*p2,a=3,b=7; p1=&a;p2=&b; if(a printf(“%d,%d”,*p1,*p2);printf(“%d,%d”,a,b);} A.3,77,3B.7,33,7C.7,37,3D.3,73,7 8.已知chars[]=”789”,*p;则执行下列语句后的输出结果是__B__. p=s;printf(“%c”,*(p+2)); A.字符‘8’B.字符’9’C.字符’8’的地址D.字符’9’的地址 9.已知有以下的说明,那么执行语句a=p+2;后,a[0]的值等于___D___. floata[3]={1.2,45.6,-23.0}; float*p=a; A.1.2B.45.6C.-23.0D.语句有错 10.以下程序的输出结果是。 #include main() {inta[]={1,2,3,4,5,6},*p; p=a; *(p+3)+=2; printf(“%d,%d\n”,*p,*(p+3)); } A.0,5B.1,5C.0,6D.1,6 11.以下程序段执行完后a的值是A。 staticints[2][4]={0,1,2,3,4,5,6,7}; inta,*p; p=&s[0][1]; a=(*p)*(*p+3)*(*p+5); A.24B.15C.28D.不确定 12.若有以下说明和语句,则p2-p1的值为5。 inta[10],*p1,*p2; p1=a;p2=&a[5]; A.5B.6C.10D.没有指针与指针的减法 13.有以下程序: #include main() {intx[8]={8,7,6,5,0,0},*s; s=x+3; printf(“%d\n”,s[2]); } 执行后输出结果是B。 A.随机值B.0C.5D.6 14.以下程序的输出结果是C。 #include main() {chars[]=”123”,*p; p=s; printf(“%c%c%c\n”,*p++,*p++,*p++);} A.123B.231C.321D.312 15.以下函数的功能是B。 fun(int*p1,int*p2) {int*p; *p=*p1;*p1=*p2;*p2=*p; } A.正确,但没有交换*p1和*p2的值B.使用了空指针,可能造成系统故障 C.能成功交换*p1和*p2的值D.能成功交换*p1和*p2的地址 16.设intx[]={4,2.3.1},q,*p=&x[1];则执行语句q=(*--p)++后, 变量q的值为A。 A.4B.3C.2D.1 17.以下语句的输出结果是D。 chars[]=”that”,*p=s; printf(“%d\n”,*(p+2)); A.字符e的地址B.0C.12D.97 18.若有定义char*language[][8]={“fortran”,”basic”,”pascal”,”java”,”c”};则language[2]的值是B。 A.一个字符.B.一个地址C.一个字符串D.不定值 19.以下程序运行之后b的值是__B___. #include voidmain() {inta[]={6,2,8,4,3}; inti,b=1,*p; p=&a[1]; for(i=0;i<4;i++) b+=*(p+i); printf(“%d\n”,b);} A.23B.18C.20D.21 20.以下定义语句中,不正确的是C。 A.inta[]={1,4};B.char*p=”hello”;C.char*q=1000;D.intx,*p=&x; 二、填空题: 1.在变量定义时,变量名前的“*”表示该变量为指针类型变量。 2.有如下定义intx,*p=&x;x=1;x在内存中的首地址为ffd8,则p=ffd8,*p=1。 3.将变量q定义为一个指向字符型的指针变量char*q。 4.在C语言中,指针是指变量的地址,而指针变量是指存放变量地址的变量。 5.若有定义: inta[3][2]={2,4,6,8,10,12};则*(a[1]+1)的值是8. 6.二维数组元素a[i][j]可用指针形式表示成*(a[i]+j). 7.一个专门用来存放另一个变量地址的变量叫指针变量。 8.以下程序运行后的输出结果是987。 #include main() {chars[]=”9876”,*p; for(p=s;p<=s+2;p++) printf(“%c”,*p);} 9.以下程序的输出结果是100。 #include main() {inta=50,*p; p=&a; *p=100; printf(‘a=%d\n”,a); } 10.在C程序中,指针变量的值增1,表示指针变量指向下一个存储单元。 11.定义inta[]={1,2,3,4,5},*p=a;表达式*++p的值是2。 12.若有以下定义和语句: inta[5]={1,3,5,7,9},*p; P=&[2];则++(*p)的值是6。 13.若有以下定义和语句: intb[5]={0,1,2,3},*p; P=&[2];则*--p的值是1。 14.以下程序的执行结果是0,6。 #include main() {inta[]={0,1,2,3,4,5,6},*p,i; p=a; *(p+4)+=2; printf(“%d,%d\n”,*p,*(p+4));} 15.以下程序的执行结果是3,4,5,。 #include main() {inta[5]={3,4,5,6,7},*p,i; for(p=a;p<(a+3);p++) printf(“%d,”,*p); } 16.以下程序的执行结果是1,2,3,4,5,。 #include main() {inta[5]={1,2,3,4,5},i; for(i=0;i<5;i++) printf(“%d,”,*(a+i)); } 17.执行以下程序段后,a的值为___4____。 ints[]={5,8,4,6,10,7},*p,i,a; a=10;p=&s[0]; for(i=0;i<6;i++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 习题