c语言程序设计习题集3.docx
- 文档编号:24777163
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:15
- 大小:31.11KB
c语言程序设计习题集3.docx
《c语言程序设计习题集3.docx》由会员分享,可在线阅读,更多相关《c语言程序设计习题集3.docx(15页珍藏版)》请在冰豆网上搜索。
c语言程序设计习题集3
指针
一单项选择题(每题2分,共40分)
1以下叙述中错误的是_B__。
A在程序中凡是以“#”开始的语句行都是预处理命令行
B预处理命令行的最后不能以分号表示结束
C#defineMAX是合法的宏定义命令行
DC程序对预处理命令行的处理是在程序执行的过程中进行的
2若程序中有宏定义行:
#defineN100,则以下叙述中正确的是__B_。
A宏定义行中定义了标识符N的值为整数100
B在编译程序对C源程序进行预处理时用100替换标识符N
C对C源程序进行编译时用100替换标识符N
D在运行时用100替换标识符
3若有如下宏定义:
#defineN2
#definey(n)((N+1)*n)
则执行下列语句:
z=4*(N+y(5));后的结果是_B__。
A语句有错误Bz值为68Cz值为60Dz值为180
4以下程序运行后的输出结果是_A__。
#defineF(X,Y)(X)*(Y)
main()
{inta=3,b=4;
printf("%d\n",F(a++,b++));
}
A12B15C16D20
5以下程序运行后的输出结果是_C__。
#definef(x)(x*x)
main()
{inti1,i2;
i1=f(8)/f(4);i2=f(4+4)/f(2+2);
printf("%d,%d\n",i1,i2);
}
A64,28B4,4C4,3D64,64
6若已定义a为int型变量,则__D_是对指针变量p的正确说明和初始化。
Aintp=&a;Bint*p=a;Cint*p=*a;Dint*p=&a;
7已知下列说明语句:
staticinta[]={2,4,6,8}
staticint*p[]={a,a+1,a+2,a+3};
int**q;
q=p;
则表达式**(q+2)的值是_A__。
A6B2C4D8
8下面是一个初始化指针的语句:
int*px=&a;,其中指针变量的名字应该__C_。
A*pxBaCpxD&a
9若指针px为空指针,则_B__。
。
Apx指向不定Bpx的值为零Cpx的目标为零Dpx的地址为零
10对下语句int*px[10];,下面正确的说法是_B__。
Apx是一个指针,指向一个数组,数组的元素是整数型。
Bpx是一个数组,其数组的每一个元素是指向整数的指针。
CA和B均错,但它是C语言的正确语句。
DC语言不允许这样的语句。
11具有相同基类型的指针变量p和数组y,下列写法中不合法的是_D__。
Ap=yB*p=y[i]Cp=&y[i]Dp=&y
12已知staticinta[]={5,4,3,2,1},*p[]={a+3,a+2,a+1,a},**q=p;,
则表达式*(p[0]+1)+**(q+2)的值是_A__。
A5B4C6D7
13说明语句int*(*p)();的含义为_D__。
Ap是一个指向int型数组的指针
Bp是指针变量,它构成了指针数组
Cp是一个指向函数的指针,该函数的返回值是一个整型
Dp是一个指向函数的指针,该函数的返回值是一个指向整型的指针
14设有如下程序段
chars[20]="Beijing",*p;p=s;
则执行p=s;语句后,以下叙述正确的是_A__。
A可以用*p表示s[0]
Bs数组中元素个数和p所指字符串长度相等
Cs和p都是指针变量
D数组s中的内容和指针变量p中的内容相同
15设int型变量i、n均已定义,指针变量s1、s2各指向一个字符串。
在for(i=0;i A*s1++=*s2++;Bs1[n-1]=s2[n-1]; C*(s1+n-1)=*(s2+n-1);D*(++s1)=*(++s2); 16给出下列程序的运行结果_B__。 #include voidmain() {staticchara[]="language",b[]="program"; char*ptr1=a,*ptr2=b; intk; for(k=0;k<7;k++) if(*(ptr1+k)==*(ptr2+k))printf("%c",*(ptr1+k)); } AgaeBgaClanguageD有语法错误 17以下程序执行后的输出结果是_A__。 voidfun1(char*p) {char*q; q=p; while(*q! ='\0'){(*q)++;q++;} } main() {chara[]={"Program"},*p; p=&a[3];fun1(p);printf("%s\n",a); } AProhsbnBPrphsbnCProgsbnDProgram 18以下程序执行后的输出结果是_C__。 voidswap(char*x,char*y) {chart; t=*x;*x=*y;*y=t; } main() {char*s1="abc",*s2="123"; swap(s1,s2);printf("%s,%s\n",s1,s2); } A123,abcBabc,123C1bc,a23D321,cba 19以下程序执行后的输出结果是__C_。 main() {char*p[]={"3697","2584"}; inti,j;longnum=0; for(i=0;i<2;i++) {j=0; while(p[i][j]! ='\0') {if((p[i][j]-'0')%2)num=10*num+p[i][j]-'0'; j+=2; } } printf("%d\n",num); } A35B37C39D3975 20下列程序运行后的输出结果是_A__。 voidmain() {charstr[]="The_Microsoft";intn=4; sub(str,0,n-1); sub(str,0,strlen(str)-1); printf("%s\n",str); } sub(str,n1,n2) char*str; intn1,n2; {charc,*p; p=str+n2; str=str+n1; while(str {c=*str;*str=*p;*p=c; str++;p--; } } AtfosorciMThe_B.ehT_MicrosoftCtfosorciM_ehTD.Microsoft_The 二填空题(每空3分,共30分) 1以下程序的定义语句中,x[1]的初值是2,程序运行后输出的内容是2468。 main() {intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i; for(i=0;i<4;i++) {p[i]=&x[2*i+1];printf("%d",p[i][0]);} printf("\n"); } 2以下程序的输出结果是25。 voidswap(int*a,int*b) {int*t; t=a;a=b;b=t; } main() {inti=2,j=5,*p=&i,*q=&j; swap(p,q);printf("%d%d\n",*p,*q) } 3以下程序的输出结果是4。 main() {inta[5]={2,4,6,8,10},*p; p=a;p++; printf("%d",*p); } 4以下程序的输出结果是__55__。 #defineM5 #defineNM+M main() {intk; k=N*N*5;printf("%d\n",k); } 5若有定义语句: inta[4]={0,1,2,3},*p;p=&a[1];则++(*p)的值是2。 6若有定义: inta[2][3]={2,4,6,8,10,12};则*(&a[0][0]+2*2+1)的值是12,*(a[1]+2)的值是12。 7若有程序段: int*p[3],a[6],i; for(i=0;i<3;i++)p[i]=&a[2*i]; 则*p[0]引用的是a数组元素a[0],*(p[1]+1)引用的是a数组元素a[3]。 三程序填空题(每空3分,共30分) 1下面函数的功能是从输入的十个字符串中找出最长的那个串,请填空使程序完整。 voidfun(charstr[10][81],char**sp) {inti; *sp=【1】str[0]; for(i=1;i<10;i++) if(strlen(*sp) } 2下面函数的功能是将一个整数字符串转换为一个整数,例如: "1234"转换为1234,请填空使程序完整。 intchnum(char*p) {intnum=0,k,len,j; len=strlen(p); for(;【3】*p;p++) {k=【4】*p-'0';j=(--len); while(【5】j--)k=k*10; num=num+k; } return(num); } 3下面函数的功能使统计子串substr在母串str中出现的次数,请填空使程序完整。 intcount(char*str,char*substr) {inti,j,k,num=0; for(i=0;【6】str[i];i++) for(【7】j=i,k=0;substr[k]==str[j];k++,j++) if(substr[【8】k+1]==’\0’) {num++;break;} return(num); } 4下面函数的功能是用递归法将一个整数存放到一个字符数组中,存放时按逆序存放,如483存放成“384”,请填空使程序完整。 voidconvert(char*a,intn) {inti; if((i=n/10)! =0)convert(【9】a+1,i); else*(a+1)=0; *a=【10】n%10+'0’; } 结构体文件 单项选择题(1~8题每题5分,9~18题每题6分,共100分) 1有以下说明语句,对结构变量中成员age的正确引用是__A_。 structstudent {intage;intsex;}stud1,*p; 2说明语句如下,则正确的叙述是_D__。 uniondata{intx;chary;floatz;}a; Adata和a均是共用体类型变量 Ba所占内存长度等于其成员x、y、z各在内存所占长度之和 C任何情况下,均不能对a作整体赋值 Da的地址和它的各成员地址都是同一地址 3共用体成员的数据类型_B__。 A相同B可以不同也可以相同 C长度一样D是结构体变量 4由系统分配和控制的标准输出文件为__D_。 A键盘B磁盘C打印机D显示器 5下列关于C语言数据文件的叙述中正确的是C。 AC语言只能读写文本文件 BC语言只能读写二进制文件 C文件由字符序列组成,可按数据的存放形式分为二进制文件和文本文件 D文件由二进制数据序列组成 6若要用fopen函数建一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应该为_B__。 A"ab+"B"wb+"C"rb+"D"ab" 7下列程序运行后的输出结果是__A_。 structs{intn;char*c;}*p; chard[]={'a','b','c','d','e'}; structsa[]={10,&d[0],20,&d[1],30,&d[2],40,&d[3],50,&d[4]}; #include main() {p=a; printf("%d\n",++p->n); printf("%d\n",(++p)->n); printf("%c\n",++(*p->c)); } A11B11C10D10 20202020 cbcb 8已知 structstudent {char*name;intstudent_no;chargrade;}; structstudenttemp,*p=&temp; temp.name="chou"; 则下面不正确的是_B__。 表达式值 Ap->namechou B(*p)->name+2h C*p->name+2e D*(p->name+2)o 9下面程序运行后,其输出结果是_B__。 #include structtree {intx;char*s;}t; func(structtreet) {t.x=10;t.s="computer";return0;} main() {t.x=1;t.s="minicomputer"; func(t);printf("%d,%s\n",t.x,t.s); } A10,computerB1,minicomputerC1,computerD10,minicomputer 10下列程序的输出结果是__B_。 #include main() {union {inti[2]; longk; charc[4]; }t,*s=&t; s->i[0]=0x39; s->i[1]=0x38; printf("%lx",s->k); printf("%c\n",s->c[0]); } A39003839B3800399C393838D38398 11若已定义了如下的共用体类型变量x,则x所占用的内存字节数为__C_。 uniondata{inti;charcha;doublef;}x; A7B11C8D10 12如下说明语句: enumA{A0=1,A1=3,A2,A3,A4,A5}; enumAB; 执行B=A3;printf("%d\n",B);输出是_A__。 A5B3C2D编译时出错 13有以下说明语句,则结构变量s的成员num的不正确引用是_B__。 structstudent {intnum; intage; }s,*p; As.numB*p.numCp->numD(*p).num 14以下各选项试图说明一种新的类型名,其中正确的是C。 Atypedefintegerint;Btypedefinteger=int; Ctypedefintinteger;Dtypedefint=integer; 15运行下面程序,其输出结果是__C_。 #include structsample {inta,b;char*ch;}; main() {structsamplearg; arg.a=1000;arg.b=100;arg.ch="abcd"; f1(arg); } f1(structsampleparam) {param.a+=param.b; param.ch[2]='x'; printf("%d\n",param.a); printf("%s\n",param.ch); } A1000B1100C1100D100 abcdabcdabxdabcd 16fwrite函数的一般调用形式是_D__。 Afwrite(buffer,count,size,fp);Bfwrite(fp,size,count,buffer); Cfwrite(fp,count,size,buffer);Dfwrite(buffer,size,count,fp); 17C语言文件操作函数fread(buffer,size,n,fp)的功能是_B__。 A从文件fp中读n个字节存入buffer B从文件fp中读n个大小为size字节的数据项存入buffer中 C从文件fp中读入n个字节放入大小为size字节的缓冲区buffer中 D从文件fp中读入n个字符数据放入buffer中 18若有如下定义: structdata {inti;charch;floatf;}b; 则结构体变量b占用内存的字节数是A。 A7B4C1D2 指针 一单项选择题(每题2分,共40分) 1-56-10 11-1516-20 二填空题(每空3分,共30分) 1① 2 5⑥ 2 1② 2468 6⑦ 12 2③ 25 6⑧ 12 3④ 4 7⑨ a0] 4⑤ 55 7⑩ a[3] 三程序填空题(每空3分,共30分) 【1】str[0]【6】str[i] 【2】*sp=str[i]【7】j=i 【3】*p【8】k+1 【4】*p-'0'【9】a+1 【5】j--【10】n%10+'0' 结构体文件 单项选择题(1~8题每题5分,9~18题每题6分,共100分) 1-56-10 11-1516-18
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 习题集