




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
43C程序设计补充资料第1章 C语言程序设计补充习题一1. 以下选项中属于C 语言的数据类型是A.复数型B 逻辑型C 双精度型D 集合型2. C 语言程序的基本单位是A) 程序 B) 语句 C) 函数D) 字符程序行3. 下列变量定义中合法的是A) short a=1-.1e-1; B) double b=1+5e2.5; C) long do=0xfdaL D) float 2_end=1-e-3 4. 在C 语言中sum=pad=5;pAd=sum+,pAd+,+pAd; printf(%dn,pad); A) 7B) 6 C) 5D) 4 5. 以下所列的C 语言常量中A) 0xFF B) 1.2e0.5 C) 2L D) 72 6. 下列程序执行后的输出结果是A) 6 6 6.0 6.0 B) 6 6 6.7 6.7 C) 6 6 6.0 6.7 D) 6 6 6.7 6.0 main() double d; float f; long l; int i; i=f=l=d=20/3; printf(%d %ld %f %f n,i,l,f,d); 7. 若已定义x 和y 为double 类型则表达式x=1 , y=x+3/2 的值是A) 1B) 2C) 2.0 D) 2.5 8. 下列语句中符合C 语言语法的赋值语句是A) a=7+b+c=a+7; B) a=6+b+=a+7;C) a=7+b,b+,a+7 D) a=7+b,c=a+7;9. 设a=5,b=6,c=7,d=8,m=2,n=2,执行(m=ab)&(n=cd) 后n 的值为A)1 B)2 C) 3 D) 4 10. 能正确表示a 和b 同时为正或同时为负的逻辑表达式是A) (a=0|b=0)&(a0|b=0&b=0)&(a0&b0)&(a+b0 11. 设a、b和c都是int 型变量,且a=3,b=4,c=5,则下面的表达式中,值为0的表达式是A) a&b B) a=b C) a|b+c&b-c D) !(ab)&!c|1) 12. 假定有以下变量定义: int k=7 , x=12; 则能使值3 的表达式是A) x%=(k%=5) B) x%=(k-k%5)C) x%=k-k%5D) (x%=k)-(k%=5) 13. 语句printf(abrehiyboun);的输出结果是A) abrehiybou B) abrehiybou C) rehiyou D) abrehiybou 14. 对下面的程序描述正确的选项是main() int x=3,y=0,z=0; if(x=y+z) printf(*); else printf(#); A) 有语法错误不能通过编译B) 输出* C) 可以通过编译但是不能通过连接因而不能运行 D) 输出# 15. 假定所有变量均已正确说明下列程序段运行后x 的值是a=b=c=0 ; x=35; if(!a) x-; else if(b) ; if(c) x=3; else x=4; A) 34 B) 4 C) 35 D) 316. 请读程序#include main() float x,y; scanf(%f,&x); if(x0.0) y=0.0; else if(x5.0)&(x!=2.0) y=1.0/(x+2.0); else if(x10.0) y=1.0/x; else y=10.0; printf(%fn,y); 若运行时从键盘上输入2.0 (表示回车),则上面程序的输出结果是A) 0.000000 B) 0.250000 C) 0.500000 D) 1.000000 17. 当a=1,b=3,c=5,d=4 时,执行下面一段程序后,x 的值为A) 1 B) 2 C) 3 D) 6 if(ab) if(cd) x=1; else if(ac) if(bd) x=2; else x=3; else x=6; else x=7; 18. 下面程序的输出是main() char *s=12134211; int v1=0,v2=0,v3=0,v4=0,k; for(k=0;sk;k+) switch(sk) defalult : v4+ ; case 1 : v1+; case 3 : v3+; case 2 : v2+; printf(v1=%d,v2=%d,v3=%d,v4=%dn,v1,v2,v3,v4); A) v1=4,v2=2,v3=1,v4=1 B) v1=4,v2=9,v3=3,v4=1 C) v1=5,v2=8,v3=6,v4=1 D) v1=8,v2=8,v3=8,v4=8 19. 若已定义int a=25,b=14,c=19 以下三目运算符(?:)所构成的语句的执行结果是_ a+=25&b-=2&c+?printf(*a=%d,b=%d,c=%dn,a,b,c):printf(#a=%d,b=%d,c=%dn,a,b,c); 20. 当执行以下程序段时,会x= -1; do x=x*x ; while (!x); A) 循环体将执行一次B) 循环体将执行两次C) 循环体将执行无限次D) 循环体将提示有语法错误21. 以下循环体的执行次数是main() int i,j; for(i=0,j=1;i100) break; B) for(; ;) C) int k=1000; do +k; while(k=10000); D) int s=36; while(s) ; -s; 23. 若有以下程序段,w 和k 都是整型变量w=k; LB: if(w= =0) go LE; w-; printf(*); goto LB; LE: 则不能与上面程序段等价的循环语句是A) for(s=k;w!=0;w-) printf(*); B) w=k; while(w-!=0) printf(*); w+; C) w=k; dow-; printf(*); while(w!=0); D) for(w=k; w; -w) printf(*); 24. 有如下程序main() int n=9; while(n6) n-;printf(%d,n); A)987B) 876C)8765D) 987625. 要使以下程序段输出10 个整数,请填入一个整数for(i=0;i=_;printf(%dn,i+=2); 26. 若x 是int 型变量,且有下面的程序片段:for(x=3;x6;x+) printf(x%2)?(*%d) : (#%dn),x); 该程序段的输出结果是A) *3 b)#3 C)#3 D) *3#4 #4 *4 *4#5 *5*5#5 27. 以下程序执行后,a的值是:main() int a,k=4,m=6,*p1=&k , &p2=&m; a=p1=&m; printf(“%dn”,a)A) 4B) 1C) 0D) 运行时出错,a无定值 28. 有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5); 该函数调用语句中,含有的实参个数是A) 3B) 4C) 5D) 有语法错29. 函数pi 的功能是根据以下近似公式求值:(*)/6=1+1/(2*2)+1/(3*3)+ +1/(n*n)现在请你在下面的函数中填空,完成求的功能#include math.h double pi(long n) double s=0.0; long i; for(i=1;i=n;i+) s=s+_; return(sqrt(6*s); 30. 设有如下定义int *ptr; int arr =6,7,8,9,10; 则下列程序段的输出结果为ptr=arr; *(ptr+2)+=2; printf(%d,%dn,*ptr,*(ptr+2); A) 8,10 B) 6,8 C) 7,9 D) 6,10 31. 下面fun 函数的功能是将形参x 的值转换成二进制数,所得二进制数的每一位数放在一维数组中返回,二进制数的最低位放在下标为0 的元素中,其他依此类推,请填空fun(int x , int b ) int k=0,r; do r=x%_; bk+=r ; x/=_; while(x); 32. 下列程序的运行结果是void fun(int *a,int *b) int *k ; k=a;a=b;b=k; main() int a=3 ,b=6 ,*x=&a,*y=&b; fun(x,y); printf(%d %d,a,b); A 6 3B) 3 6 C) 编译出错D) 0 0 33. 以下程序的输出结果是int d=1; fun(int p) static int d=5; d+=p; printf(%d ,d); return(d); main() int a=3 ; printf(%dn,fun(a+fun(d);) A)6 9 9 B)6 6 9 C) 6 15 15 D) 6 6 1534. C 语言中, 函数的隐含存储类型是A)autoB) static C) extern D) 无存储类别35. 下面程序的输出是fun3(int x)static int a=3; a+=x; return(a); main() int k=2,m=1,n; n=fun3(k); n=fun3(m); printf(%dn,n); A) 3B)4C)6 D) 936. 有以下函数char *fun(char *p) return p; 该函数的返回值是A) 无确切的值B) 形参p 中存放的地址值c)一个临时存储单元的地址 D) 形参p 自身的地址值37. 若有以下说明和定义fun(int *c) main() int (*a)()=fun , *b( ),w10 , c; 在必要的赋值之后,对fun 函数的正确调用语句是A) a=a(w); B) (*a)(&c);C) b=*b(w); D) fun(b);38. 下面程序的输出结果是_ #include funa(int a,int b) return a+b; funb(int a,int b) return a-b; sub(int (*t)(),int x,int y) return(*t)(x,y); main() int x,(*p)(); p=funa; x=sub(p,9,3); x+=sub(funb,8,3); printf(%dn,x); 39. 以下程序的输出结果是fun(int n,int *s) int f1,f2; if(n=1|n=2) *s=1; else fun(n-1,&f1); fun(n-2,&f2) ; *s=f1+f2; main() int x;fun(6,&x); printf(%dn,x); 40. 设有如下程序#include main( argc,argv) int argc ; char *argv ; while(-argc0) printf(%s,argvargc); printf(n); 假定上述程序经编译和连接后生成可执行文件PROG.EXE, 如果在DOS 提示符下键入PROG ABCD EFGH IJKL,则输出结果为_41. 下面各语句行中,能正确进行赋字符串操作的语句行是:A) char st45=ABCDE; B) char s5=A,B,C,D,E; C) char *s; s=ABCDE; D) char *s ; scanf(%s,s); 42. 以下程序的输出结果是main() char ch34=123,456,78 ,*p3; int i; for(i=0;i3;i+) pi=chi; for(i=0;iwp) _; for(i=*n;ip;i-) wi=_; wp=x; +*n; 44. 要求函数的功能是一维数组a 中查找x 值;若找到则返回所在的下标值,否则返回0;数列放在a1到an中。不能正确执行此功能的函数是 A) funa(int *a,int n,int x) *a=x; while(an!=x) n-; return n; B) funb(int *a,int n,int x) int k; for(k=1;k=n;k+) if(ak= =x) return k; return 0; C) func(int a ,int n,int x) int *k; a0=x; k=a+n; while(*k!=x) k-; return k-n; D) fund(int a ,int n,int x) int k=0; do k+; while(kn+1)&(ak!=x); if(ak= =x) return k; else return 0; 45. 下列程序的输出结果是main() char a10=9,8,7,6,5,4,3,2,1,0,*p=a+5; printf(%d,*-p); A) 非法B)a4的地址C) 5 D)3 46. 阅读程序#include string.h #include stdio.h strle(char a ,char b ) int num=0,n=0; while(*(a+num)!=101) num+; while(bn) *(a+num)=bn;num+;n+; returnk (num); main() char str181,str281,*p1=str1,*p2=str2; gets(p1);gets(p2); printf(%dn,strle(p1,p2); 运行上面的程序如果从键盘上输入字符串qwerty 和字符串abcd 则程序的输出结果是47. 以下程序的输出结果是#include ctype.h space(char *str)main() int i,t; char ts81; for(i=0,t=0;stri!=101;i+=2) if(!isspace(*(str+i)&(*(str+i)!=1a1) tst+=toupper(stri); tst=101; strcpy(str,ts); main()char s81= a b c d ef g; space(s);puts(s); A) abcdeg B) bcdeC) ABCDE D) BCDE48. 若函数fun 的类型为void,且有以下定义和调用语句#define M 50 main() int am; fun(a); 定义fun 函数首部可以用3 种不同形式,请写出这3 种形式_ _ _(注意:1)形参的名字请用q 2)使用同一种风格 ) 49. 以下程序运行后,输出结果是fut(int *s,int p23) *s=p11; main() int a23=1,3,5,7,9,11,*p; p=(int *)malloc(sizeof(int); fut(&p,a); printf(%dn,*p); A) 1 B) 7 C) 9 D) 1150. 设有以下定义int a43=1,2,3,4,5,6,7,8,9,10,11,12; int (*prt)3=a,*p=a0; 则下列能够正确表示数组元素a12的表达式是A) *(prt+1)2) B) *(*(p+5) C) (*prt+1)+2 D) *(*(a+1)+2 51. 请选出以下程序段的输出结果#include main() char s110,s210,s310,s410; scanf(%s%s,s1,s2); gets(s3);gets(s4); puts(s1);puts(s2);puts(s3);puts(s4); 输入以下数据aaaa bbbb cccc dddd A) aaaa B) aaaa C) aaaa D) aaaa bbbb bbbb bbbb bbbb cccc cccc cccc dddd dddd cccc dddd dddd eeee 52. 阅读程序main() char str1 = how do you do,str210; char *p1=str1 , *p2=str2; scanf(%s,p2); printf(%s,p2) ; printf(%sn,p1); ; 运行上面的程序,输入字符串HOW DO YOU DO, 则程序的输出结果是_ 53. 下列程序中字符串中各单词之间有一个空格, 则程序的输出结果是_#include main() char str1 =How do you do,*p1=str1; strcpy(str1+strlen(str1)/2,es she); printf(%sn,p1); 54. 下面程序的输出是main() char *p; char s = ABCD; for(p=s;ps+4;p+) printf(%sn,p); A) ABCD B) A C) D D) ABCD BCD B C ABC CD C B AB D D A A 55. 下列程序执行后的输出结果是void func1(int i); void func2(int i); char st =hello,friend!; void func1(int i) printf(%c,sti); if(i3) i+=2 ; func2(i); void func2(int i) printf(%c,sti); if(i3) i+=2 ; func1(i); main() int i=0; func1(i); printf(n); A) hello B) hel C) hlo D) hlm 56. 给出以下定义char x=abcdefg; char y=a, b, c, d, e, f;则正确的叙述是A 数组x 和数组y 等价 B 数组x 和数组y 的长度相同C 数组x 的长度大于数组y 的长度D 数组x 的长度小于数组y 的长度57. 下列程序的输出结果是main() int a5=2,4,6,8,10,*p,*k; p=a; k=&p; printf(%d,*(p+); printf(%dn,*k); A) 4 4 B) 2 2 C) 2 4D) 4 6 58. 请读程序#include #include main() char *s1=AbCdEf , *s2=aB; s1+; s2+; printf(%dn,strcmp(s1,s2); 59. 下面程序的输出结果是#include #include main() char *p1=abc,*p2=ABC,str50= xyz; strcpy(str+2,strcat(p1,p2); printf(%sn,str); A) xyzabcABC B) zabcABC C) yzabcABC D) xyabcABC 60. 设有如下函数定义int f(char *s) char *p=s ; while (*p!=0) p+; return(p-s); 如果在主程序中用下面的语句调用上述函数,则输出结果为0020printf(%dn,f(goodbye!); A) 3 B) 6 C) 8D) 0 61. 以下程序运行后,输出结果是main() char *s=abcde ; s+=2; printf(%ldn,s); A)cde B) 字符c 的ASCII 码值C)字符c 的地址D) 出错62. 以下程序的功能是: 将无符号八进制数字构成的字符串转换成十进制整数。例如:输入的字符串为567 则输出十进制整数366。请填空: #include main() char *p,s6; int n; p=s; gets(p); n=*p-0; while(_!=0) n=n*8+*p-0; printf(%dn,n); 63. 设有以下宏定义#define N 3 #define Y(n) (N+1)*n) 则执行语句z=2*(N+Y(5+1);后,z的值为:A) 出错B) 42C) 48 D) 54 64. 以下程序运行后,输出结果是:#include #define PT 5.5 #define S(x) PT*x*x main() int a=1,b=2; printf(%4.1fn,S(a+b); A) 49.5 B) 9.5 C) 22.0 D) 45.0 65. 若要用下面的程序段使指针变量p 指向一个存储整型变量的动态存储单元int *p; p=_malloc(sizeof(int); 则应填入A) int B) int * C) (*int) D) (int *) 66. 请读程序#include void fun(float *p1,float *p2 , float *s) s=(float *)calloc(1,sizeof(float); *s= *p1+*(p2+); main() float a2=1.1,2.2,b2=10.0,20.0,*s=a; fun(a,b,s); printf(%fn,*s); 上面程序的输出结果是A) 11.100000 B) 12.100000 C) 21.100000 D) 1.100000 67. 以下程序的输出结果是#include int a33=1,2,3,4,5,6,7,8,9,*p; main() p=(int *)malloc(sizeof(int); f(p,a); printf(%dn,*p); f(int *s, int p 3) *s=p11; 68. 若有以下说明和定义语句,则变量w在内存中所占的字节数是:union aa float x,y; char c6; struct st union aa v ; float w5 ; double ave ; w; 69. 有以下程序#include struct stu int num; char name10; int age; ; void fun(struct stu *p) printf(%dn,(*p).name); main() struct stu students3=9801,Zhang,20, 9802,Wang,19, 9803,Zhao,18; fun(students+2); 输出结果是A) Zhang B) Zhao C) Wang D) 1870. 下面程序的输出是typedef union long x2; int y4;char z8; MYTYPE; MYTYPE them; main() printf(%dn,sizeof(them); A 32B 16 C 8 D 2471. 有以下结构体说明和变量的定义,且如下图所示指针p 指向变量a,指针q变量b 则不能把结点b 连接到结点a 之后的语句是A) a.next=q; B) p.next=&b; C) p-next=&b; D) (*p).next=q; struct node char data ; struct node *next; a,b,*p=&a , *q=&b; data next data next ba9 05Pq72. 变量root 有如图所示的存储结构,其中sp 是指向字符串的指针域,next 是指向该结构的指针域,data 用以存放整型数。请填空,完成此结构的类型说明和变量root 的定义。rootsp next data struct list char *sp; _ ; _;root; 73. 下面程序的输出结果为struct st int x; int *y; *p; int dt4=10,20,30,40; struct st aa4=50,&dt0,60,&dt1,70,&dt2,80,&dt3;main() p=aa; printf(%dn,+p-x); printf(%dn,(+p)-x); printf(%dn,+(*p-y); A) 10 B) 50 C) 51 D) 60 20 60 6070 20 21 21 31 74. 若已建立下面的链表结构,指针p、s 分别指向图中所示的结点,则不能将s 所指的结点插入到链表末尾的语句组是F NULL nnnnnnNNULL0Edata next sGheadPA) s-next=NULL ; p=p-next ; p-next=s;B) p=p-next ; s-next=p-next ; p-next=s; C) p=p-next ; s-next=p ; p-next=s; D) p=(*p).next ; (*s).next=(*p).next ; (*p).next=s; 75. 假定建立了以下链表结构,指针p、q分别指向图中所示的结点,则以下可以将q所指结点从链表中删除,并释放该结点的语句组是A) free(q) ; p-next=q-next; B) (*p).next=(*q).next ; free(q); C) q=(*q).next ; (*p).next=q ; free(q); D) q=q-next;p-next=q;p=p-next;free(p); data next qPhead84 nnnnnnNNULL03 nnnnnnNNULL076. 用十进制数表示表达式12|012 的运算结果是A 1B 0 C 14 D 1277. 在C 程序中,可把整型数以二进制形式存放到文件中的函数是:A) fprintf 函数B) fread 函数C) fwrite 函数D) fputc 函数78. 以下程序由终端输入一个文件名,然后把从终端键盘输入的字符依次存放到该文件中,用#作为结束输入的标志,请填空#include main() FILE *fp; char ch,fname10; printf(Input the name of filen); gets(fname); if(fp=_) = = NULL) printf(Cannot openn); exit(0); printf(Enter datan); while(ch=getchar()!=1#1) fputc(_,fp); fclose(fp); 79. 下面程序把从终端读入的10 个整数以二进制方式写到一个名为bi.dat 的新文件中,请填空#include FILE *fp; main() int i,j; if(fp=fopen(_,wb)= =NULL) exit(0); for(i=0; i10;i+) scanf(%d,&j); fwrite(&j,sizeof(int),1,_); fclose(fp); 80. 在对文件进行操作的过程中,若要求文件的位置回到文件的开头,应当调用的函数是_函数。81. 以下程序的输出结果为main() char *alpha6=ABCD,EFGH,IJKL,MNOP,QRST,UVWX; char *p; int i; p=alpha; for(i=0;i2?6:5 C) x=9-(-y)-(-y)D) x=y*4.8/210. 下面程序段的输出结果是int a=023 printf %dn aA 18 B 17 C 23D 2412. 下面的程序段在执行完成后,a的值为:int j=0,k=0,a=0; while(j2) j+; a=a+1; k=0; while(k(y)?(x): (y)#define PRINT(y) printf(“y=%d”,y); main() int a=1, b=2,c=3, d=4; t=MAX (c+d, a+b );PRINT (t); A) y=3 B) 存在语法错误 C) Y=7 D) Y=0 42. 以下关于文件包含的描述中正确的是A) 每个C 程序中必须包含预处理命令#include B) #include 后面的文件名用双引号括起和用尖括号括起来完全等效C) #include 命令行可以出现在源程序中需要的任何地方D) 用#include 所包含的文件成为头文件,必须以.h 作为扩展名44. 有如下3 个源文件源文件1 file1.h static int a=1; 源文件2 fiel2.h int cal(x,y) int x,y; if(a=1)return(x-y)*(x+y); else return(x*x+y*y); 源文件3 file3.c #include #include #include main() int x,y,a; printf(input three int number:); scanf(%d%d%d,&a,&x,&y); printf(n%d,cal(x,y); return(1); 则下面的说法中正确的是A) 编译源文件file3.C 并运行输入”0 4 2”,输出结果为20 B) 编译源文件file3.C 并运行输入”0 4 2”,输出结果为12 C) 此程序有错,文件file2.h 没有包含file1.h,不能使用file1.h 中定义的变量D) 此程序有错,文件file2.h 和file1.h 没有主函数,将不能编译45. 下列叙述中正确的是A) 将指向函数的指针作为函数的参数,虽然可以提高效率,但是容易造成混乱,所以不符合结构化程序设计的原则B) 数组名实际上是此数组的首地址,所以数组名相当于一个指针变量C) 若定义数组a23 则a+1 和*(a+1)完全等价D) 函数的形参为一个数组,则调用此函数时将数组名作为对应的实参46. 以下对指针变量的操作中,不正确的是:A) int p,*q; q=&p;B) int *p,,*q; q=p=NULL; C) int a=5, *p ;*p=&a; D) int a=5, *p ,*q=&a; *p=*q; 49. 下面程序段的运行结果是char *s=abcde; s+=1 ;printf(%d,s); A) bcde B) 字符b的地址C) 字符c的地址xD)字符b的ASCII码51. 若有定义int x10,*p=x; ,则*(p+5) 表示 A) 数组元素x5的地址B) 数组元素x5的值C) 数组元素x6的地址D) 元素x6的值53. 某系统中整型变量为16 位,若有如下语句int *
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 年度安全培训计划要求课件
- 年度安全培训计划列表课件
- 年度安全培训时间要求课件
- 年度学生安全知识培训课件
- 工业测量员培训课件文档
- 2024年盘锦市总工会招聘工会社会工作者考试真题
- 威尔逊出游课件点播
- 威宁安全培训中心课件
- 平面画面分割构成课件
- 平面构成分割构成课件
- 2025贵州毕节威宁自治县面向社会招聘城市社区工作者17人考试参考试题及答案解析
- 建筑工地垃圾清理与处理方案
- 婴儿奶粉合同(标准版)
- 中医执业医师考试针灸推拿知识点试题及答案
- 卓望公司安全风控培训课件
- 修井现场安全培训内容课件
- 做更好的自己课件-2025-2026学年统编版道德与法治七年级上册
- 2023年贵州贵州贵安发展集团有限公司招聘考试真题及答案详解(夺冠)
- 2025年大宗商品贸易业务流程优化计划
- 情感表达+课件+2025-2026学年人教版(2024)初中美术七年级上册
- 2025年小升初数学考试试题(附答案)
评论
0/150
提交评论