c语言课后答案_第1页
c语言课后答案_第2页
c语言课后答案_第3页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、C程序设计课外作业及参考答案说明:(1)章节顺序按照 PowerPoint电子教案;(2) 教材上的作业注明了章节和题号;(3) 所用教材是C程序设计(第二版) 谭浩强 清华大学岀版社;第一章C语言概述1.1简答题:写出C语言的主要特点(教材习题1.1)。1.2填空题:1. C语言与操作系统并称“栾生兄弟”。2. C语言俗称为形式。3. C源程序文件经过处理后产生目标文件,目标文件经处理后生成可执行文件。1.3单项选择题1. 以下说法中正确的是 =(A) C语言程序总是从第一个定义的函数开始执行(B) 在C语言程序中,要调用的函数必须在 main函数中定义(C) C语言程序总是main函数开始

2、(D) C语言程序中的main函数必须放在程序的开始部分2. 以下正确的 C标识符是 o(A) _125(B) C# (C) C+(D) A$1.4多项选择题1. 以下关于C语言的说法中,错误的是。(A) 俗称为“低级语言的高级形式”,因此功能简单(B) 不是结构化程序设计语言(C) 可能直接访问内存(D) 语法限制不严2. 以下标识符属于 C语言关键字的有o(A) in teger (B) else (C) in elude (D) while第二章e语言基本数据类型、变量、常量与表达式2.1简答题1. 求下面算术表达式的值。(教材习题3.9)a) x+a%3*(i nt)(x+y)%2/4

3、设 x=2.5, a=7, y=4.7b) (float)(a+b)/2+(i nt)x%(i nt)y设 a=2, b=3, x=3.5, y=2.52. 写岀下面程序的运行结果。(教材习题3.10)mai n() int i,j, m, n;i=8; j=10; m=+i; n =j+;printf(%d,%d,%d,%d, i, j, m, n);3. 写岀下面表达式运算后a的值,设原来 a=12o设a和n已定义为整型变量。3.12)a) a+=ab) a-=2c) a*=2+3b) d) a/=a+ae) a%=(n%=2), n 的值等于 5f) a+=a-=a*=a4. C语言中如

4、何表示“真”和“假”?系统如何判断一个量的“真”和“假”2.2填空题1. 写岀下面各逻辑表达式的值。设a=3, b=4, c=5。(教材习题5.3)(1) a+bc&b=c(2) allb+c&b-c(3) !(ab)&!clll!(x=a)&(y=b)&0(5) !(a+b)+c-l&b+c/22. (1) 5?2(2)0! = l(3) !3A(4) 105%10(5) 3/2*2(6) 5 3 l2b) a=b;if (bc) b=c;else c=b; c=a;2. 执行下列程序后,x和y的值分别是多少。int x,y;for (y= 1 ,x= 1 ;y=10) break; if(

5、x%2=l)(x+=5; continue; x-=3;)3, 写出以下程序的输出结果。#include main()( int c=A,a=0,k=l; while(k+=2)n);5, 若输入为 ABCDJ, 下面程序的输出是什么?#include void main()( char ch,n; for(n=0;(ch=getchar()!=10;n+) putchar(ch+32); printf( H %dn n,n);4.2 单项选择题1. 以下程序的输出结果是 Ox=0: do printf(%d” , x; +w+h)ile(xl):(A) 0(B) 01(C) 012 (D)

6、无任何显示2. 以下能正确计算 10! 的程序段是。(A) doi=l;s=l;s=s*i; i+; while(i=10);(B) doi=l;s=0; s=s*i; i+;while(i=10);(C) i=l;s=l; dos=s*i; i+;while(i=10);(D)i=l;s=0;do s=s*i; i+;while(i=10);3.若变量已有正确定义,程序a=0; for (i=l; i=n; i+) for (j=0; j=0 11 a=0 ).)。(B)立即中止循环(C)中止本次循环,直接开始下一次循环(D) 从一个循环体直接跳转至另一个循环体内4.3程序填空题#i ncl

7、ude stdio.hinclude n Q)Hmai n()(int m, i, k;for(m=2; m=1000; m+)(k=(i nt)sqrt(m)+l;for(i=2; i=k; i+) if( )break;if(3) printf( n%5dn, m);4.4程序设计题1. 企业放发的奖金根据利润提成。设企业的利润为I,提成标准如下:110万元时,提成10%;10万元IW20万元时,低于10万元部分仍按10%提成,高于10万元部分按7. 5%提成;20万 元IW40万元时,低于20万元部分按前面方法提成,高于20万元部分按5%提成;40万元IW60万元时,低于 40万元部分按

8、前面方法提成,高于40万元部分按3%提成;60万元IW100万元时,低于60万部分按前面方法提成,高于60万部分按1. 5%提成;100万元=0; m )for(n=0; n=m; n+) printf(%d n, *(p+n);)2. #include stdio.h#define N 8void main()( int a N , k , *p;for(k = 0;kN;k + + ) scanf ( d,& a k );P=a;for (k = 0 ; k 0) *p+=ak; while(pa) printf *p);若该程序的输入为 0 9 6 -1454 3 -5 21,则程序的输

9、出是什么?6.2 单项选择题1.有定义 static int a = 0,1 , 2,3,4 , *p=a+2 ; 表达式 *+p 的值为。(A) 1(B) 2(C) 3(D) 42. 已有定义int k=2; int *ptrl,*ptr2; 且ptrl和ptr2均已指向变量 k,下面不能正确执行的赋值语句是。(A) k= *ptr l+*ptr2;(B) ptr2=k;(C) ptrl=ptr2;(D) k= *ptrl*(*ptr2);3. 若有定义:int a10, *p=a;,则 p+5 表示(8)。(A)元素a5的地址(B)元素a5的值(C)元素a6的地址(D)元素a6的值第七章

10、函数(含习题课)7.1程序分析题1. 下面程序的运行结果是。void fl(void)(int x=l;static y=2;x+;y+;printf(%d,%dn n,x,y);)mai n()(int k;for(k=l ;k=3 ;k+) fl();2. 下列程序的运行结果是oint d=l;void fl(i nt p)(int d=2;d+=p+;printf( n%d ” ,d);mai n()(int a=3;fl(a);d+=a+; printf( H%dnH,d);3. 下列程序的运行结果是-#in elude int a= 10,c=5;main()( int a= 1,

11、b=2, d=4, e=5;printf(%dn n,func(a+b,b*c,c%d),(d,e/b);)int func (int x, int y)(return x+y;14. 下面程序的运行结果是什么?#include static int x=150; void show(int x,int y) ( printf( ,x=%d,y=%dn,x,y);x=300; y=400;)void main()( int x=100,y=200;show(y,x); printf(x=%d,y=%dn,x,y);)5. 下面程序的运行结果是 ovoid fl(void)( int x=l;s

12、tatic y=2;x+;y+; printf(%d,%dn,x, y);)void main()( int k;for(k= 1 ;k=3;k+) fl();7.2 程序填空题1. 以下函数 f 的功能是实现 NxN 阶方阵转置,请填空。 #define N 8 void swap()( int temp=*p;*p=*q;*q=temp;void f(int )( int i,j;for(i=0;iN;i+)for(j=0;j ;j+) swap(&aij, );)2. 下程序的功能是求 M 行 N 列矩阵的最大值元素,请填空。#include stdio.h#define M 5#def

13、ine N 4 float *getmax( ) int i,j;float *pmax;pmax=;for(i=0;iM;i+) for(j=0;j*pmax) pmax=;retum();)float aMN;void main() int i,j ;for(i=0;iM;i+) for(j=0;jN;j+) scanf(, &aij);printf(max=%.2f n,*getmax();3. bubsort 函数的功能是实现对 N 元整型数组冒泡排序 (由大到小 ) ,请填空使之完善。 #define N 10 int aN;void bubsort()( int i,j,t;for

14、(i=l; iN-l; i+)for(j=0; j=A & *sv=Z) *s+=32; puts(a);若程序的输入为 SWJTU,则输岀结果为 o2. 若程序输入为 ABCD,下面程序的输岀结果是#include stdio.h#include string.hvoid main()( char s81, *p, *q, t;gets(s);p=s;q=s+strlen(s)-l;while(p0 a=l; else a=0;(C) char s10=HHello2. C 语言存贮字符串时,用特殊字符(A) ,xOd , (B) O (C) 侦 (D) , 03. 以下选项中,不能正确赋值

15、的是(A) char s10;s= nHello n;() 表示字符串结束。o(B) char s=H, e ,T, T, o, 0;(D) char *s= ,Hellon H;4. 以下程序能够安全正确地输入字符串的是 o (A) char s41; scanf(%s, s0);(B) char s41; scanf(%c H,s);(C) char *s; scanf( s”, s);(D) char s41, *p=s; scanf(%s,&(*p);7_3.程序设计题1. 编写程序,输入一个字符串,用函数实现字符的逆序存储后输出该字符串2. 从键盘接收一个字符串,判断该字符串是否为回

16、文。 所谓回文,就是正读和反读顺序相同的串,如: ABCDCBA( 要求用函数实现 )3. 编写程序将字符串中的小写英文字符变成大写,其它字符保持不变。第八章编译预处理指令8.1单项选择题1. 为计算机多项式f(x) = 3x 2 + 2x+l ,最恰当的宏定义是(A) |#defi ne f(x) = 3*x*x + 2*x+l(B) #define f (x ) f(3*x*x+2*x+l)(C) #define f ( x ) (3*x*x + 2*x +1)(D) #define f ( x ) (3*(x)*(x) + 2*(x)+l)2. 以下不能判断一个整数x的奇偶性的宏定义是o

17、(A) #defi ne odd(x) (x)%2)(C) #define odd(x) (x)=l)(B) #define odd(x) (x)&l)(D) #define odd(x) (x) ? 2*(x)/2)8.2程序设计题1. 定义一个带参数的宏,使两个参数的值互换,并写岀程序,输入两个数作为使用宏时的 参。输岀已交换后的两个值。(教材习题9.1)2. 年份year,定义一个宏,以判别该年是否闰年。(教材习题9.2)第九章指针深入9.1单项选择题1. 以下关于指针的说法中,不正确的是。(A)指针表达式也称为地址表达式(B )指针值的存贮长度有2字节、4字节两种 仃C2.0)(C)

18、指针变量可以进行加减乘除运算(D) 函数的名字就是一个函数指针常量,表示该函数代码的入口地址则输2. 若有定义和语句:int a=10,b=20,*p=&a,*pp=&p;p=&b;pri ntf(%d %dn,*p,*pp);,岀结果是 o(A) 10,20(B) 10,10(C) 20,10(D) 20,209.2多项选择题1.若有定义 int a45,(*p)5=a;则以下正确而安全访问数组元素的表达式是。(A) *p;(B) *(*(p+4)+l)(C) *(a+l)+l(D) *(*a+l)(E)*p0+2(F) (*(p+3)4(G) a43(H) *(a3+l)2,若有数组定义i

19、nt a3;以及函数原型void f(int (*a)4);以下函数调用正确的是 o(A) f(a);(B)f(a00);(C) f(a0);(D) f(a+2);(E) f(&al);(F) f(&a00);(G) f(*a);(H) f(*a0);4. 若有定义和语句:int w3,(*pw)3; pw=w;则能对w数组元素正确引用的是。(A) *(w0+2);(B) *(w 3);(C) pwOO;(D) *(pwl2);9.3程序分析题1. 以下程序的输岀是0#i nclude void mai n()(double a=2.5,*p,*q;p=&a ; q=&p;(*p)+;prin

20、tf(”.2fn n,*q);2. 以下程序的输岀是o#i nclude stdio.hmai n()(intx3= 123,4,5,6,7,8,9 ;int (*p)3=x+l;printf( %”n” ,*p,*(*(p+l)+2),*(*x+l);return 0;3. 下列程序的运行结果是。mai n()(int a10=9,7,6,l,2,3,0,4,8,5,*p,*k;p=a;printf( %”d ,*(p+);printf( % d ”(+p);k=&p;prin tf(%dn,*k);第十章结构、联合、枚举、类型定义10.1单项选择题1. 有定义struct int a5;

21、b;贝U正确表达成员数组 a的最后一个元素地址的是(A) b.a(B) b.a5(C) b.a+4(D) &(&b-a4)2. 以下对枚举类型名的定义中正确的是o(A) enum a= (on e,two,three;(B) enum b(on e=9,two=-1,three);(C) enum c=(o ne,two,three;(D) en um do ne,two,three;3. 以下关于结构体的说法正确的是。(A) 结构体的成员变量可以与结构体变量同名(B) 结构体的成员变量不能是指针类型的变量(C) 指向结构体的指针变量不能在定义时初始化(D) 结构体数组不能在定义时进行初始化4

22、. 以下关于C语言结构体变量的说法中错误的是o(A)各成员变量首地址不相同(B)各成员变量首地址相同10.2多项选择题1. 若有定义 struct dl_tp ( int a,b; ; struct d2_tp ( dl_tp a; int b; b;则以下正确的成员变量表达式是0(D) b.b(A) a.a (B) b.a.b (C) (&b.a)-a2. 以下选项中,能正确定义s为结构体变量并进行初始化的有o(B) struct ABC(charnaiW; s=(nJackn,20);(D) struct(charnameage;s= ” Jack ” ,20 ;(A) typedef s

23、truct tag(char n ame20;int age;ABC;ABC s=( nJackn,20;(C) struct(char n ame20; int age;ABC;ABC s= ” Jack ” ,20;第十一章C文件操作11.1单项选择题1. 以只写方式打开一个二进制文件,应选择的文件操作方式是(A) a+(B) w + (C) rb(D) wb2. 改写磁盘文件中的数据,文件打开方式正确的是。(A) ab+(B) rb+(C) wb+(D) rb3. 以下文件打开方式串中,不能创建新文件的是。(A)叶(B) a(C) w+(D) a+11.2程序填空题1. 以下程序的功能是

24、统计字符文件a.txt中有多少个空格,请填空。#i nclude stdio.h#in clude process.hvoid mai n()(FILE *fp; int ch; int n=_;if(!(fp=fopen( na.txt, rt) ( printf(File open error!n);exit(l); while(l)(ch=fgetc(fp); if(2) break;if()n+;printf( nn=%dn H,n);fclose(fp);2.以下程序的功能是统计正文(文本)文件ABC. TXT 的行数。#in clude“ stdio.hmai n()(FILE *

25、fp;int ch , count=0;fp=fope n(abc. txt”,Q);if(fp=NULL) ( printf(“ ABC.TXT notfouind).;retum; while() ch=fgetc(fp);if(2) break;if(ch=(3) cou nt+;fclose(fp);pri ntf( n umbers of li nes=%dn, ”cou nt);3. 以下程序段的功能是从键盘上输入一个字符串,将字符串中的大写字母转换为小写字母,输岀到文本文件test.txt中。请填空使该程序功能完整。#i nclude #in clude void mai n()

26、(UD_ fp ;char str255; int i=0;if(fp = (test.txt,w)=NULL) ( printf(Cant open test.txt.n); exit(O);)pri ntf( In put a stri ng: n); gets(str);while( (3)_!=勒) if(stri=A & strik 或 i=k+l4.41. /* if语句求解*/#in cludestdio.hvoid main()( double I,p=0;printf( “ lnputl= ” );sclaf,n&f(l); “ if(I100) ( p+=(I-100)*0

27、.01; 1=100; if(I60) p+=(I ? 60)*0.015;I=60; if(I40) ( p+=(I-40)*0.03;I=40; if(I20) p+=(I-20)*0.05;I=20; if(I10) ( p+=(L10)*0.075;I=10; p+=I*0.1;printf(p=%fn,p);/* switch 语句求解 */#include “ s.thdiovoid main()( double I, p=0;printf( “ lnputl= ” );sclaf,n&f(l); “ if(I=100) ( p+=(I-100)*0.01;I=100; swith

28、(int)(I/10)( case 10: case 9:case 8:case 7:case 6: p+=(I-60)*0.015;I=60;case 5:case 4: p+=(I-40)*0.03;I=40;case 3:case 2:p+=(I ? 20)*0.05; 1=20;case 1:p+=(I-10)*0.075;I=10;default:p+=I*0.1;printf(p=%frT,p);#include stdio.hvoid main()( int sl,s2,s3; float av; char level;while(l)4 ,?( printf( Input th

29、ree scores of one student:n ); scanf( d%d%d,&sl,&s2,&s3); if(sl0lls20lls3=A&chv=Zllch=a&chv=z)ne+; if(ch=0&chv=9 ) nd+;if(ch=32) ns+;printf(the number of English letters = %dn, ne); printf(the number of digital numbers = %dn, nd); printfCthe number of spaces = %dn, ns);printf(the number of other cha

30、racters = %dn,n-ne-ns-nd);4.#include stdio.hvoid main()( double s,a;int k,n;printf( “ Input n= ” );scda”nf(,&n)“;s=0;a=l;for(k=0;k=n;k+) ( s+=a;a=(n+l)*a; printf( 1 e-6)( s+=a;k+=2;a*=-x*x/k/(k-l);) printf(sin(%.4f)=%.4fn,x,s);7.#include stdio.hvoid main()( int n;double pi=l; for(n=2;n=2000;n+=2) pi

31、*=(double)n*n/(n-l)/(n+1); pi*=2;printf( Hpi=%fn n,pi);8.#include stdio.hvoid main()( int m;for(m=l ;m=l 0000;m+) if(m%5=l &m%6=5 &m%7=4&m% ll=10) printf(” m=n%”d ,m);1 万以内的解有 4个:即 2111,4421,6721,90419.#include stdio.hvoid main()( int man,child,women;printfC ,%8s%8s%8snn;man,V,womenn,child);for(man= 1 ;man 17 ;man+) for(women= 1 ;women= 1 &man+women+child=30) printf( n%8d%8d%8dn H,man,women,child);10.#include stdio.h 1#include conio.hvoid main()( int i5,i2,il,i0_5,count=0;for(i5=l;i5=20;i5+) for(i2=l;i237;i2+) for(il=l;il=l &i5+i2+i 1 +i0_5 v=40) ( printf( n%4d%4d%4d%4dn n,i5,i2,il,i0_5);

温馨提示

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

评论

0/150

提交评论