C语言程序设计习题集_第1页
C语言程序设计习题集_第2页
C语言程序设计习题集_第3页
C语言程序设计习题集_第4页
C语言程序设计习题集_第5页
免费预览已结束,剩余8页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、指针单项选择题(每题2分,共40分)1以下叙述中错误的是一B_cA在程序中凡是以"r开始的语句行都是预处理命令行B预处理命令行的最后不能以分号表示结束C #define MAX是合法的宏定义命令行DC程序对预处理命令行的处理是在程序执行的过程中进行的2若程序中有宏定义行:#defi neNlOO ,则以下叙述中正确的是A宏定义行中定义了标识符 N的值为整数100B在编译程序对C源程序进行预处理时用100替换标识符NC对C源程序进行编译时用100替换标识符ND在运行时用100替换标识符3若有如下宏定义:#define N 2B_o#define y(n) (N+1)*n)则执行下列语句

2、:z=4*(N4-y (5);后的结果是一B。A语句有错误Bz值为68 C Z值为60 D Z值为180 4以下程序运行后的输出结果是一A_。 #define F(X,Y) (X)*(Y)main() int a=3,b=4; printf( "%dn",F(a+,b+);A 12B 15C 165以下程序运行后的输出结果是一C_。#define f(x) (x*x) main() inti1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf( "%d,%dn",i1,i2);D20D 64,64A 64,28 B 4,4C

3、 4,36若已定义a为int型变量,则 D_是对指针变量p的正确说明和初始化。A int p=&a; B int *p=a; C int *p=*a; D int *p=&a;7已知下列说明语句:static int a=2,4,6,8 static int *p=a,a+1 ,a+2 int *q;q=p;则表达式气q+2)的值是一A_。A6B2C4,a+3;D88下面是一个初始化指针的语句:A *pxBaC pxint *px=&a;,其中指针变量的名字应该D &aC_9若指针px为空指针,则一B_。D px的地址为零Apx指向不定B px的值为零Cpx的目

4、标为零10对下语句int *px10;,下面正确的说法是一BOApx是一个指针,指向一个数组,数组的元素是整数型。B px是一个数组,其数组的每一个元素是指向整数的指针。CA和B均错,但它是C语言的正确语句。DC语言不允许这样的语句。11具有相同基类型的指针变量P和数组y,下列写法中不合法的是一A p=y B *p=yi C p=&yi D p=&y12 已知 static int a=5,4,3,2,1,*p=a+3,a+2,a+1,a,*q=p;,则表达式*(p0+1)+*(q+2)的值是一AoA5B4C6D713说明语句int Tp)();的含义为一D_。A p是一个指向

5、int型数组的指针Bp是指针变量,它构成了指针数组Cp是一个指向函数的指针,该函数的返回值是一个整型Dp是一个指向函数的指针,该函数的返回值是一个指向整型的指针 14设有如下程序段char s20= "Beijing ”,*p; p=s; 则执行p=s;语句后,以下叙述正确的是一A可以用9表示s0Bs数组中元素个数和p所指字符串长度相等C S和P都是指针变量指针变量si X s2各指向一个字符串。在for(i=0;i<n;i+) s2所指字符串中前n个字符复制到si所指字符串中,其D数组S中的内容和指针变量P中的内容相同 15设int型变量i、n均已定义 环中,下列语句用以实现

6、将 代码正确的是一A_BoB s1n-1=s2n-1;D *(+s1)=*(+s2);A *s1+=*s2+;C *(s1+n-1)=*(s2+n-1);16给出下列程序的运行结果#include <stdio.h> void main() static char a="language ", b= "program "char *ptr1=aj *ptr2=b; int k;A gaeB gaC language17以下程序执行后的输出结果是一A_void fun1(char *p) char *q;q=p;while(*q!= '

7、0 ')(*q)+; q+; >for(k=0;k<7;k+) if(*(ptr1 +k)=*(ptr2+k) printf(*(ptr1+k);有语法错误main() char a= "Program", *p;p=&a3; fun1 (p); printf( iA Prohsbn B PrphsbnC Progsbn D ProgramC o18以下程序执行后的输出结果是- void swap (char *x,char *y) char t;t=*x; *x=*y; *y=t;main() char*s1 = "abc"

8、,*s2= "123"19以下程序执行后的输出结果是一Cmain()11swap(s1 ,s2); printf("%s,%sn's1,s2);A 123,abc B abc,1232468。C 1bc,a23 D321,cba char *p=”3697”,“2584“;int i,j; long num=0; for(i=0;i<2;i+) j=0;while(pij!='0 *)if(pij-*0*)%2) num=10*num+pij-*0*;j+=2;)printf( "%dn" ,num);A 35 B 37

9、C 39 D 397520下列程序运行后的输出结果是void main() char str= " The_Microsoftint n=4; sub(str,0,n-1); sub(str,0,strlen(str)-1); printf( "%sn*str);Jsub(str,n1 ,n2) char *str; int n1 ,n2; char c,*p; p=str+n2; str=str+n1; while(strvp) c=*str; *str=*p; *p=c;str+; p-;A tfosorciMThe B. ehT Microsoft C tfosorc

10、iM ehT D. Microsoft The填空题(每空3分,共30分)1以下程序的定义语句中,刈1的初值是_乙,程序运行后输出的内容是 main ()int x=1,2,345,6,7,8,9,10,11,12,13,14,15,16rp4,i;for(i=0; i<4; i+) pi=&x2*i+1; printf(printf( "n");2以下程序的输出结果是25void swap(i nt *a, int *b) int *t;t=a; a=b; b=t;main ()int i=2,j=5,*p=&i,*q=&j;swap(p,q

11、); printf( "%d %dn",*p,*q)3以下程序的输出结果是。main ()inta5=2,4,6,8,10,*p;p=a; p+;pintf(*p);4以下程序的输出结果是#defi ne M 5#defi ne N M+Mmain ()int k;k=N*N*5; printf( "%dn*k);5 若有定义语句:inta4=0,1.2,3,*p;p=&a1;6 若有定义:inta23=2,4,6,8,10,12;*(a1+2)的值是 12 o7若有程序段:则+(*p)的值是_2O则 *(&a00+2*2+1)的值是 12int

12、*p3,a6J; for(i=0;i<3;i+) pi=&a2*i;则*p0引用的是a数组元素a0,*(p1+1)引用的是a数组元素引31三程序填空题(每空3分,共30分)1下面函数的功能是从输入的十个字符串中找出最长的那个串,请填空使程序完整。 void fun(char str1081,char *sp)inti;*sp =【1 】strO;for(i=1;i<10; i+)if(strlen(*sp)<strlen(stri)2下面函数的功能是将一个整数字符串转换为一个整数,例如: 空使程序完整。T234“转换为1234,请填int chnu m(char *p

13、)int num=O,k,le nJ;len=strle n( p);for(;【3】巾;P+) k=【4】*p O ; r(_len); while( 5 j- ) k=k* 10; num=nu m+k;return (nu m);3下面函数的功能使统计子串substr在母串str中出现的次数,请填空使程序完整。int coun t(char *str, char *substr)int i,j,k,num=0;for(i=0;【6】stri ;i+)for( 71 i=i ,k=0:substrk1=stri1:k+,i+) if(substr 8 k+1 1= nu m+ ; brea

14、k ;return (nu m);4下面函数的功能是用递归法将一个整数存放到一个字符数组中,存放时按逆序存放,如483存放成“ 384”,请填空使程序完整。 void con vert(char *a, int n) inti;if(i=n/1O)!=O) convert( else *(a+1)=0;*a=【10】n%10+O【9】a+1 j);结构体文件单项选择题(1-8题每题5分,9-18题每题6分,共100分)1有以下说明语句,对结构变量中成员age的正确引用是 Astruct stude ntint age; int sex; stud1 ,*p;A p->age B stud

15、e nt.age C *p.age2说明语句如下,则正确的叙述是一D union data int x; char y; float z; a;A data和a均是共用体类型变量Ba所占内存长度等于其成员D studl.stude nt.ageX、y、z各在内存所占长度之和C任何情况下,均不能对a作整体赋值Da的地址和它的各成员地址都是同一地址3共用体成员的数据类型一B_。A相同BC长度一样D4由系统分配和控制的标准输出文件为-可以不同也可以相同是结构体变量打印机C OA键盘B磁盘C5下列关于C语言数据文件的叙述中正确的是SC语言只能读写文本文件BC语言只能读写二进制文件C文件由字符序列组成,

16、可按数据的存放形式分为二进制文件和文本文件D文件由二进制数据序列组成6若要用fopen函数建一个新的二进制文件,该文件要既能读也能写,则文件方式字符串应该为一B。A 七 b+“B "wb+'*C" rb+"7下列程序运行后的输出结果是一A_。struct s int n; char *c; *p;char d='a*,*c*;d *e*;struct sa=10, &d0,20, &d1,30, &d,40, &d3,50, &d4;#in elude vstdio.h mai n()P=a;printf(

17、"%dn",+p-> n); printf( "%dn",(+p)-> n);printf( "%c n",+(*p->c);A 11B 1120 20 20C 10D 10208已知struct stude nt char *n ame; int stude nt_no; char grade; struct stude nt temprp=& temp; ternp .n ame="chou"chou则下面不正确的是 表达式A p>n ameB (*p)-> name+2C

18、 *p-> name+2D *(p-> name+2)0下面程序运行后,其输出结果是#in clude<stdio.h> struct treeint X; char *s; t; fun c(struct tree t)t.x=10; t.s= main ()"computer" retur n 0;t.x=1; t.s=fun c(t); pnntf("minico mpu ter"*%d,%sn*t.x,t.s);A 10,computerB 1 ,mi nicomputer Ccomputer D 10, mini com

19、puter10下列程序的输出结果是B#in clude<stdio.h> main () unioninti2;long k;char c4;t,*S=&t;s->i0=0x39;s->i1=0x38;printf("%仪”,s>k);printf( "%c n",s->c0);A 390038 39 B 380039 9 C 3938 38 D 3839 811若已定义了如下的共用体类型变量X,则X所占用的内存字节数为.union data int i; char cha; double f; x;A7B 11C8D

20、1012如下说明语句:enum A A0=1 ,A1=3,A2,A3,A4,A5;enum A B;执行 B=A3; printf( "%dn",B);输出是一A。编译时出错13有以下说明语句,则结构变量S的成员num的不正确引用是一Bstruct stude ntint num; int age;s,*p;A s numA5B3C2DB *p num C p->num D (p). num14以下各选项试图说明一种新的类型名,其中正确的是B typedef in teger= int;D typedef int=in teger;C oA typedef in teger int;C typedef int in teger;15运行下面程序,其输出结果是#in elude vstdio.hstruct sampleint a,b; char *ch;main () struct sampie arg; arg.a=1000;arg.b=100;arg,ch= fl (arg); "abed"fl (struct sample param) param.a+=param.b; param,ch2= V; printf(”dn",par

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论