C语言程序设计习题集3.docx
- 文档编号:584066
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:13
- 大小:20.81KB
C语言程序设计习题集3.docx
《C语言程序设计习题集3.docx》由会员分享,可在线阅读,更多相关《C语言程序设计习题集3.docx(13页珍藏版)》请在冰豆网上搜索。
C语言程序设计习题集3
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; Ap->ageBstudent.ageC*p.ageDstud1.student.age 2说明语句如下,则正确的叙述是_D__。 uniondata{intx;chary;floatz;}a; Adata和a均是共用体类型变量 Ba所占内存长度等于其成员x、y、z各在内存所占长度之和 C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 习题集