c三套题附答案_第1页
c三套题附答案_第2页
c三套题附答案_第3页
c三套题附答案_第4页
c三套题附答案_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、c语言程序设计习题集 习题一一、 语言基础(共20分,每题2分) (一)设x为一数字字符,则其所对应的十进制数值为 。 a)x b)x-0 c)*x d)&x (二)说明语句char s=t,使s包含了几个字符? 。 a)1 b)2 c)3 d)说明有错 (三)设a=6,b=4,则表达式b*=a+3的值为 。 a)3 b)18 c)27 d)36 (四)若给定表达式(m)?a+:a-,则其中表达式m和 等价。 a)m=0 b)m!=0 c)m=0 d)m=1 (五)设有说明语句int a10,则数组a包括了 个数组元素。 a)1 b)9 c)10 d)20 (六)以下函数test返回值类型为

2、。 test(int x) printf(“%fn”,(float)x); a)int b)float c)void d)不确定或错误 (七)c语言规定,main函数的参数 。 a)只能有0个 b)只能有0个或一个 c)只能有0个或2个 d)可有任意个 (八)设x为整型变量,p基类型为整型的指针变量,则正确的赋值表达式是 。 a)p=&x b)p=x c)*p=&x d)*p=*x (九)turbo c中,int型数据在存储器中占二个字节,则以下类型数据在存储器中占的字节数为: 。 struct test int x; float y; char z; ; a)2 b)3 c)6 d)7 (十

3、)rewind()函数的作用是 。 a)重新打开文件 b)使文件位置指针重新回到文件的开始 c)使文件位置指针重新回到文件的末 d)返回文件长度值 二、阅读下列程序,写出运行结果(共18分,每题3分) 程序1 #include void main( ) int a=1,b=4,c=2; 运行结果: 1 a=(a+b)/c; printf(“%d n”,-a); 程序2 void main ( ) char c1=67; /*a的ascii码值为65 */ if (a =c1 & c1=z) 运行结果: 67,d printf(“%d,%c”,c1,c1+1); else printf(“%c”

4、,c1); 程序3 viod main ( ) int a=0, n=5; 运行结果: 1,5,4,3,2,0 for ( ; ; ) a+; n-; printf(“%d,”,a); a=n; if (n=0) break; printf(“%d”,a); 程序4 main ( ) int i, j; 运行结果: 1,2,4,8,16,32,64,128,256,512 static int a10=1,1,1,1,1,1,1,1,1,1; for (i=0;i10;i+) for (j=0;ji;j+) ai=ai+aj; for (i=0;i10;i+) printf(“%d,”,ai)

5、; 程序5 int k=2; f (int m) 运行结果: 6,8 m+=k;k+=m; 5,9 printf(“%d,%d n”,m,k+); main ( ) int i=4; for (i+); printf(“%d,%d n”,i,k); 程序6 void main ( ) static int a10,i; 运行结果: 1 3 5 7 9 for (i=0;i10;i+) ai=i+1; for (i=0;i10;i=i+2) printf(“%d”,*(a+i); 三、阅读分析下列程序,在 处填上适当的内容使程序(或函数)完整(共21分,每空3分) (一) 以下程序输出所有大写字

6、母和其对应的ascii码值。 void main ( ) int ch; for (ch=a;ch=z;ch+) printf(“字母%c的ascii码值是:%dn”,ch, 1 ); 答案: ch (二)以下函数的功能是将一个字符串s的内容颠倒过来。 void reserve( 2 ) 答案: char s int i, j, k; for (i=0,j=strlen(s)-1; 3 ;i+,j-) 答案: ij k=si; si=sj; sj=k; (三)由键盘输入三个数a,b,c,计算以这三个数为边长的三角形面积。 #include void main ( ) float a, b, c

7、, s, s1; scanf(“%f%f%f”, 4 ); 答案: &a,&b,&c if (a+b)c & (a+c) b & (b+c) a) s=(a+b+c)/2; s1=s*(s-a)*(s-b)*(s-c); s= 5 ; 答案: sqrt(s1) printf(“n 三角形面积为:%f n”,s); else printf(“ n 不是三角!n”); (四)从键盘输入一个字符串,把它输出到文件中,文件名由键盘输入。 #include void main ( ) file *fp; char ch, *fn; scanf(“%s”,fn); if (fp=fopen(fn, 6 )

8、=null) 答案: “w” printf(“打开文件出错 n”); exit(1); while (ch=getchar( )!=eof) fputc( 7 ); 答案: ch,fp putchar (ch); fclose (fp); 四、编程题(共21分) 1. 从键盘输入3个整数,输出其中最大数。(5分) main ( ) int i=0, x, mx=-32768; while ( i+mx) mx=x; printf (“n %d n”,mx); 2. 编写一函数uf(s),将字符串s中的第一个和最后一个字母改写成大写字母(如原来不是字母或已是大写字母,则不变)。(5分) #inc

9、lude uf (char *s) int i; i=strlen(s); if (i=0) return; if (s0 = a & s0 = a & si-1 = z) si-1 +=a a; main ( ) char s =”asdfgh”; uf (s); printf(“ n%sn”,s); 3. 从键盘输入10个浮点数,输出其平均值及所有低于平均值的数。(5分) #include main ( ) float a10, ave=0; int i; for (i=0; i10;i+) scanf(“%f”,&ai); ave +=ai; ave /=10; for (i=0;i10

10、;i+) if (aiy? 10:11y+?a:z (三)若所有变量都已正确定义为int型则执行下列程序段后x 的值为 79 。x=80;a=10b=16;y=9;z=0;if (ab) if(b!=15) if(!y) x=81;else if(!z) x=79; (四)i,j为int型的变量,则下面程序中的循环体的执行次数为 5 。i=1;j=0; while(i+jj j=j+2);else i=i+2; (五)若有数组a10,类型为int型,元素及值如下所示:数组元素:a0a1a2a3a4a5a6a7a8a9元素中的值:9 4 8 3 2 6 7 0 1 5则*(a+a9 )的值为 6

11、 。 (六)以下函数调用语句中实参的个数为 3 .sub (x1,x2) ,(x3,x4,x5),x6) (七)若有以下函数定义: int (*hs ) () /*函数体*/则函数hs返回的值是 整形 。(八)某c编译程序规定,int型数据存储占个字节,float型数据存储占个字节,char型数据存储占个字节,现有记录描述如下:struct stuunion char bj5; int bh2; class; char xm8;float cj;xs;则sizseof(xs)的值为 17 。(九)设有以下定义:define a 6 #define b a+4 则执行语句c=b*10(c为int

12、型数据)后,c的值为 46 。(十)在c中,文件指针变量的类型只能是 file 。 二、阅读下列程序,写出运行结果(共分,每题分) 程序1#include main() int i; 运行结果:i= 18,j=29.44 float j; i=18; j=29.4361; printf(“i=%4d,j=%2.2f”,i,j ); 程序2 main() int k=10; char c=b; do swith(c+) 运行结果:12 case a:k+; case b:k-; case c:k+=3;break; case d:k=k%4; while(c!=c); printf(“%dn”,

13、k );程序3main() char a=”computer”; char t; int i,j=0; 运行结果:utrpomec for(i=0;i8;i+) for(j=i+1;j8;j+) if(aiaj) t=ai; ai=aj; aj=t; printf(“%s”,a);程序main() char *p,s=”abcdefg”; for(p=s;*p!=0); 运行结果:abcdefg printf(“%sn”,p); p+; if(*p!=0) p+; else break; 5、以下程序的输出结果为_hello wellcom_。main( ) char s140= hello,

14、s220= wellcom;int i=0,j=0; while(s1i!=0) i+; while(s2j!=0) s1i+=s2j+;s1i=0; printf(%sn,s1); 6、#include main()int i, j, x = 0;for (i=0; i2; i+)x+;for (j=0; jy &xz ) return(x);else if (y=x &yz) return(y) ;else return(z);main()int a,b,c,i=1,j,s; scanf(“%d%d%d”,&a,&b,&c);s= max(a,b,c) ;while(1)j=s*i; if

15、( (j%a=0)&(j%b=0)&(j%c=0) ) break; i+;prinf(“%d”,j); 2. 下面程序是判断输入的字符是否中心对称,(如”xyzzyx”和”xyzyx”都中心对称#include main()char s100,*p1,p2; int n;gets(s);n=strlen(s);p1=s;p2= s+n-1 ;while(p1p2)if (*p1!=*p2)break;elsep1+; p2- ;if (p1p2) printf(“non”);elseprintf(“yesn”);3. 结构数组中有4人的姓名和年龄,以下程序输入四人中年龄最大的人的姓名和年龄。

16、#define null 0static struct nodechar name20;int age;person =“lihong”,18, “wangjun”,19, “zhangwei”,20, “zhaofeng”,19;main()struct node * p,* q; int old=0; q=null;p=person;for(; p!=null ;p+)if(oldage) q=p; old=p-age ; printf(“%s,%dn”,q-name,q-age); 四、编程题(共22分) 1 有36块砖,共36人搬,成年男子一次搬4块砖,成年女子一次搬3块砖,儿童两人抬

17、1块砖,恰好一次全部搬完,编程求出成年男子 成年女子和儿童各有多少人。(6分)main() int men,women,child; for(men=0;men9;men+) for(womem=0;women12;women+) child=36-men-women; if(men*4+women*3+child/2.0)=36) printf(“%d,%d,%dn”,men,women,child); 2 非波那契数的递归如下:除x0和x1外,序列中某个元素的值是其前两个元素的和,编写程序输入序号n,求它的非波那契数xn。 long fib(int y) if(y=0) return(0)

18、; else if(y=1) return(1); else return(fib(y-1)+fib(y-2); main() int n; long k; scanf(“%d”,&n); k=fib(n); printf(“k=%dn”,k); 3用循环语句编程将二维数组a34的第一行和第三行对调(如下图),并输出数组。(8分) main() int i,j,t; int a34=2,3,4,5,3,8,10,2,7,9,3,1; for (i=0;i4;i+) t=a0i; a0i=a2i; a2i=t; for (i=0;i3;i+) for (j=0;j7) if (b8) if (c

19、9) x=2 ;else x = 3; 后 x 的值是 c 。 4. a)0 b)2 c)1 d)3 (五)有如下程序 main () int x=23; do printf(“%d”,x - -); while (! x); 该程序的执行结果是 b 。 5. a)321 b)23 c)不输出任何内容 d)陷入死循环 (六)定义一个具有8个元素的整型数组,应当使用语句 a 。 6. a) int a8; b) int a2,4; c) int a ; d) int * a8; (七)设int x =4,2,3,1,q,*p=&x1;则执行语句 q (* p)+ +后,变量q的值为 a 。 7.

20、 a)4 b)3 c)2 d)1 (八)函数调用时,下列说法中不正确的是 b 。 8. a) 实际参数和形式参数可以同名 b) 若用值传递方式,则形式参数不予分配存储单元 c) 主调函数和被调函数可以不在同一个文件中 d) 函数间传递数据可以使用全局变量 (九)下列数据类型中不属于构造类型的是 d 。 9. a)数组型 b)结构型 c)公用型 d)枚举型 (十)存储整型数据7856时,在二进制文件和文本文件中占用的字节数分别是 b 。 10.a)3,2 b)2,5 c)5,5 d)5,2 二、阅读下列程序,写出运行结果(共20分,每题4分) 【程序1】 include main() int x

21、 = 1,a = 0,b = 0; 运行结果: a=1,b=1 switch(x) case 0; b + +; case 1; a + +; case 2; a + +;b + +; printf (“a = % d ,b = % d n”,a,b); 【程序2】 space (int m) while (m - -) printf (“%c”,32); 运行结果: * main() * int i ,j;printf (“n”); * * * for (i=5;i=1;i - -) * * * * * * space (i); printf (“*”); for (j=3;j=2*(i/5

22、)+2;j - -) space (4-i);printf(“*”); printf (“n”); 【程序3】 long ff(int n) 运行结果:6 if (n3) return (ff(n-1)+ff(n-2); else return (3); main () printf (“%dn”,ff(4); 【程序4】 main () 运行结果4 0 0 -4 -3: int i, a5; for(i=0;i2)%5; for (i=4;i=0;i- -) printf (“%3d”,ai); 【程序5】 #include 运行结果:13 union pw int i; char ch2;

23、 a; main () a.ch0=13; a.ch1=0; printf (“%dn”,a.i); 6、以下程序的输出结果为_ x=37_。#define a 3#define b(a) (a+1)*amain() int x; x=3*a+b(7);printf(x=%dn,x); 7#includevoid fun(int *y) printf(*y = %dn, *y);*y += 20; printf(*y = %dn, *y);main()int x = 10;printf(x = %dn, x);fun(&x);printf(x = %dn, x); 程序运行结果是: x=10 *y=10 *y=30 x=30三、阅读下列程序,在 处填上适当的内容使其完整。

温馨提示

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

评论

0/150

提交评论