C语言程序设计练习题第2 3部分答案.docx
- 文档编号:9820114
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:21
- 大小:21.71KB
C语言程序设计练习题第2 3部分答案.docx
《C语言程序设计练习题第2 3部分答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计练习题第2 3部分答案.docx(21页珍藏版)》请在冰点文库上搜索。
C语言程序设计练习题第23部分答案
C程序设计语言练习题
第二部分
44.数组定义为inta[3][2]={1,2,3,4,5,6},值为6的数组元素是______
A)a[3][2]B)a[2][1]C)a[1][2]D)a[2][3]
45.设有数组定义chararray[]=“China”;则数组array所占的空间为_____
A)4个字节B)5个字节C)6个字节D)7个字节
46.以下程序段的输出结果是________。
charch[3][5]={“AAAA”,“BBB”,“CC”};
printf(“%s\n”,ch[1]);
A)BBBB)AAAAC)BBBCCD)CC
47.以下能对二维数组x正确进行初始化的语句是_________。
A)intx[2][]={{1,0,1},{5,2,3}};
B)intx[][3]={{1,2,3},{4,5,6}};
C)intx[2][4]={{1,2,3},{4,5},{6}};
D)intx[][]={{1,0,1},{},{1,1}};
48.以下程序的输出结果是________。
#include
main()
{charw[][10]={“ABCD”,“EFGH”,“IJKL”,“MNOP”},k;
for(k=1;k<3;k++)
printf(“%s\n”,&w[k][k]);
}
A)ABCDB)ABCDC)EFGD)FGH
FGHEFGJKKL
KLIJO
M
49.下面的程序运行后,输出的结果是__________
(1)3+4+5+6+0
main()
{inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
for(i=1;i<3;i++)
for(j=0;j<=i;j++)
s+=a[i][j];
printf(“%d\n”,s);
}
(2)42716
main()
{inti,j;
inta[6]={“12,4,17,24,27,16},b[6]={27,13,4,25,23,16};
for(i=0;i<6;i++)
{for(j=0;j<6;j++)
if(a[i]==b[j])break;
if(j<6)printf(“%d”,a[i]);
}
printf(“\n”);
}
(3)820
#include
main()
{charst[20]=“Goodbye\0\t\’\\”;
printf(“%d%d\n,strlen(st),sizeof(st));
}
(4)输入ABC输出ABC6789
#include
#include
main()
{charss[10]=“12345”;
gets(ss);strcat(ss,”6789”);printf(“%s\n”,ss);
}
50.下面程序的功能是将一个字符串按逆序存放,请填空:
#include
main()
{charstr[80],m;
inti,j;
gets(str);
for(i=0,j=strlen(str);i<_j-1_____;i++,j--)
{m=str[i];
str[i]=_str[j-1]_____;str[j-1]=m;
}
printf(“%s\n”,str);
}
51.下面程序的功能是将字符数组a中下标值为偶数的元素从小到大排列,其他元素不变,请填空。
#include
#include
main()
{chara[]=”clanguage”,t;
inti,j,k;
k=strlen(a);
for(i=0;i<=k-2;i+=2)
for(j=i+2;j if(_a[i]>a[j]___) {t=a[i];a[i]=a[j];a[j]=t;} puts(a); printf(“\n”); } 52.下面的程序用选择排序的方法将从键盘输入的n个整数按升序排列并输出排序的结果。 请填空: #defineMAX100 main() {inti,j,index,n,a[MAX],t; scanf(“%d”,&n); for(i=0;i scanf(“%d”,&a[i]) for(i=0;i {index=i; for(j=i+1;j if(_a[j]__ index=__j__; if(i! =index) {t=a[i];a[i]=a[index];a[index]=t;} } for(i=0;i printf(“%4d”,a[i]); } 53.下面程序的输出是_____. mian() {chars[]=“12134211”; intv1=0,v2=0,v3=0,v4=0,k; for(k=0;s[k];k++) switch(s[k]) {default: v4++; case‘1’: v1++; case‘3’: v3++; case‘2’: v2++; } printf(“v1=%d,v2=%d,v3=%d,v4=%d\n”,v1,v2,v3,v4); } A)v1=4,v2=2,v3=1,v4=1B)v1=4,v2=9,v3=3,v4=1 C)v1=5,v2=8,v3=6,v4=1D)v1=8,v2=8,v3=8,v4=8 54.若函数为int型,变量z为float型,则该函数体内的语句return(z);返回的值是_______。 A)int型B)float型C)不定D)不确定 55.在C语言中,函数的隐含存储类型是_________。 A)autoB)staticC)externD)无存储类型 56.在C语言中,形参的缺省存储类型是_________。 A)autoB)registerC)staticD)extern 57.有如下函数调用语句: func(rec1,rec2+rec3,(rec4,rec5)); 该函数调用语句中,含有的实参个数是_________。 A)3B)4C)5D)有语法错误 58.若调用函数的实参是一个数组名,则向被调用函数传送的是_________。 A)数组的长度B)数组的首地址 C)数组每个元素的地址D)数组每个元素中的值 59.在调用函数时,如果实参是简单变量,他与对应形参之间的数据传递方式是_ A)地址传递B)单项值传递 C)由实参传递给形参,再由形参传递给实参D)传递方式由用户指定 60.在以下有关C语言函数的描述中,正确的是_________。 A)在C语言中,调用函数时,只能把实参的值传给形参,形参的值不能传给实参 B)C函数即可以嵌套定义又可以递归调用 C)函数必须有返回值,否则不能使用函数 D)C程序中有调用关系的所有函数,必须放在同一个源程序文件中 61.以下程序输出结果是_________。 (1)31 fun(intx,inty,intz) {z=x*x+y*y;} main() {inta=31; fun(5,2,a); printf(“%d”,a); } (2)13+8 func(inta,intb) {intc; c=a+b; returnc; } main() {intx=6,y=7,z=8,r; r=func((x--,y++,x+y),z--); printf(“%d\n”,r); } (3)2+1+9+10 voidreverse(inta[],intn) {inti,t; for(i=0;i {t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;} } main() {intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0; reverse(b,8); for(i=6;i<10;i++)s+=b[i]; printf("%d\n",s); } (4)3,22,3 voidfun(intx,inty) {x=x+y;y=x-y;x=x-y; printf("%d,%d,",x,y); } main() {intx=2,y=3; fun(x,y); printf("%d,%d\n",x,y); } (5)2 longfib(intx) {switch(x) {case0: return0; case1: case2: return1; } return(fib(x-1)+fib(x-2)); } main() {longk; k=fib(3); printf(“k=%d\n“,k); } (6)1+2+3+4+5 intf() {staticinti=0; ints=1; s+=i;i++; returns; } main() {inti,a=0; for(i=0;i<5;i++)a+=f(); printf("%d\n",a); } (7)7+8+9 f(inta) {intb=0; staticintc=3; b++;c++; return(a+b+c); } main() {inta=2,i; for(i=0;i<3;i++) printf(“%d\n”,f(a)); } (8)4+3+2 longfun5(intn) {longs; if(n==1||n==2)s=2; elses=n+fun5(n-1); returns; } main() {longx; x=fun5(4); printf(“%ld\n”,x); } (9)56 intf(intx,inty,intcp,intdp) {cp=x*x+y*y; dp=x*x-y*y; } main() {inta=4,b=3,c=5,d=6; f(a,b,c,d); printf(“%d%d\n”,c,d); } (10)5 #include voidf(charp[][10],intn) {chart[20];inti,j; for(i=0;i for(j=i+1;j if(strcmp(p[i],p[j])<0) {strcpy(t,p[i]); strcpy(p[i],p[j]);strcpy(p[j],t); } } main() {charp[][10]={"abc","aabdfg","abbd","dcdbe","cd"};inti; f(p,5);printf("%d\n",strlen(p[0])); } 62.以下叙述中正确的是哪个? A)全局变量的作用域一定比局部变量的作用域范围大 B)静态(static)类别变量的生存期贯穿于整个程序的运行期间 C)函数的形参都属于全局变量 D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值 第三部分 63.已知: intx;则下面说明指针变量pb的语句是正确的。 A)intpb=&x;B)int*pb=x;C)int*pb=&xD)*pb=*x; 64.有如下程序段: int*p,a,b=1; p=&a;*p=10;a=*p+b; 执行该程序段后,a值是。 A)12B)11C)10D)编译出错 65.若有说明: inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是。 A)i=*p;B)*p=*&j;C)i=&j;D)i=**p; 66.已知: inta,*p=&a;则为了得到变量a的值,下列错误的表达式为______。 A)*&pB)*pC)p[0]D)*&a 67.已知staticinta[2][3]={2,4,6,8,10,12};正确表示数组元素地址的是__。 A)*(a+1)B)a[1]+2C)a[1]+3D)a[0][0] 68.已知inta[3][4],*p=*a;p+=6;那么*p和______的值相同。 A)*(a+6)B)*(&a[0]+6)C)*(a[1]+2)D)*(&a[0][0]+6) 69.已知说明int(*p)[M];其中p是______。 A)M个指向整型变量的指针 B)指向M个整型变量的函数指针 C)一个指向具有M个整型元素的一维数组的指针 D)具有M个指针元素的一维指针数组,每个元素都只能指向整型变量 70.若有定义和语句: intc[4][5],(*cp)[5];cp=c;则对c数组元素的引用正确的是哪个? A)cp+1B)*(cp+3)C)*(cp+1)+3D)*(*cp+2) 71.设有以下定义: inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int(*prt)[3]=a,*p=a[0]; 则下列能够正确表示数组元素a[1][2]的表达式是__________。 A)*((*prt+1)[2])B)*(*(p+5))C)(*prt+1)+2D)*(*(a+1)+2) 72.若有以下定义和语句: intw[2][3],(*pw)[3];pw=w; 则对w数组元素的非法引用是_________。 A)*(pw[0]+2)B)*(pw+1)[2]C)pw[0][0]D)*(pw[1]+2) 73.若有以下说明和定义: fun(int*c){…} voidmain() {int(*a)(int*)=fun,*b(),w[10],c; : } 在必要的赋值之后,对fun()函数的正确调用语句是______。 A)a=a(w);B)(*a)(&c);C)b=*b(w);D)fun(b); 74.已知double*p[6];它的含义是______。 A)p是指向double类型变量的指针B)p是double类型数组 C)p是double类型指针数组D)p是double类型数组指针 75.设有定义: intn=0,*p=&n,**q=&p;则______是正确的赋值语句。 A)p=1;B)*q=2;C)q=p;D)*p=5; 76.以下选项中,错误的赋值是_________ A)chars1[10];s1=”Ctest”; B)chars2[]={‘C’,‘t’,‘e’,‘s’,‘t’}; C)chars3[20]=”Ctest”; D)char*s[4]={”Ctest\n”}; 77.若有定义和语句: int**pp,*p,a=10,b=20; pp=&p;p=&b;printf(“%d,%d\n”,*p,**pp); 则输出的结果是______。 A)10,20B)10,10C)20,10D)20,20 78.以下程序编译连接后生成的可执行文件是ex1.exe,若运行时输入带参数的命令行是: ex1abcdefg10<回车>,则运行的结果是什么? 9 #include main(intargc,char*argv[]) {inti,len=0; for(i=1;i printf("%d\n",len); } 79.说明语句int(*p)();的含义是______。 A)p是一个指向一维数组的指针变量 B)p是一个指针变量,指向一个整型数据 C)p是一个指向函数的指针,该函数的返回值是一个整型数据 D)以上都不对 80.说明语句int*(*p)();的含义是______。 A)p是一个指向int型数组的指针 B)p是一个指针变量,它构成了指针数组 C)p是一个指向函数的指针,该函数的返回值是一个整型数据 D)p是一个指向函数的指针,该函数的返回值是一个指向整型数据的指针 81.说明语句void*f();的含义是______。 A)函数f的返回值是一个通用型的指针 B)函数f的返回值可以是任意的数据类型 C)函数f没有返回值 D)指针f指向一个函数,该函数无返回值 82.已知char**s;正确的语句是_______。 A)s=“book”B)*s=“book”; C)**s=“book”D)strcpy(*s,“book”); 83.阅读以下函数,说出每个函数的作用 (1)计算1+2+3+.....+n sum(intn) {if(n==1)return1; elsereturnsum(n-1)+n; } (2)计算字符串的长度 intstrtry(char*s) {if(*s==’\0’)return0; elsereturnstrtry(s+1)+1; } (3)有n个元素的数组逆置 voidchange(int*a,intn) {intt; t=*a;*a=*(a+n-1);*(a+n-1)=t; if(n>2)change(a+1,n-2); } (4)字符串的长度加1 ABC(char*ps) {char*p; p=ps; while(*p++); returnp-ps; } 84.对于基类型相同的两个指针变量之间,不能进行的运算是______。 A) 85.不合法的main函数命令行参数表示形式是 A)main(inta,char*c[])B)main(intarc,char**arv) C)main(intargc,char*argv)D)main(intargv,char*argc[]) 86.写出下面各程序段的输出结果 (1) staticchara[]=”Basic”; char*p;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计练习题第2 3部分答案 语言程序设计 练习题 部分 答案