C语言书本练习答案_第1页
C语言书本练习答案_第2页
C语言书本练习答案_第3页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、、选择正确答案填空。1. 以下叙述不正确的是D。A) 一个C源程序必须包含一个main函数B) 一个C源程序可由一个或多个函数组成C) C程序的基本组成单位是函数D) 在C程序中,注释说明只能位于一条语句的后面2. 一个C语言程序是由旦。A) 一个主程序和若干个子程序组成B) 函数组成C) 若干过程组成D) 若干子程序组成3. 若x、i、j、k都是int型变量,则计算下面表达式后,x的值为C。x=(i=4,j=16,k=32)A) 4B) 16C) 32D) 524.已知字母 A的ASCII码为十进制数 65,且c2为字符型,则执行语句c2 =,A,+3 后,的值为旦。A)C字符BB) 68C

2、)不确定的值c2中D)字5.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 Do6.A) floatB) charC) intD) double设有:int a=l,b=2,c=3,d=4,m=2 ,n=2;执行(m=a>b)&&(n=c>d)n的值为BoA) 1B)2C)3D)47.判断char型变量ch是否为大写字母的正确表达式是C。A), A, v=chv=2 ,B) (ch>= 6A?)&(ch<= aZ?)C) (ch>= A)&&( chv=Z)D

3、) (Av= ch)AND(Z>= ch)8.已知ch是字符型变量,下面正确的赋值语句是CoA) ch='a+b'B) ch='0'C) ch='7'+9; D) ch=5+9;9.度大于printf函数中用到格式符5s,其中数字5表示输岀的字符串占用5列。如果字符串长5,则输岀按方式旦;如果字符串长度小于5,则输岀按方式CoA) 从左起输岀该字符串,右补空格B)按原字符长从左向右全部输岀C) 右对齐输出该字符串,左补空格D)输出错误信息计算下列表达式的值。(设a=3,b=6,c=9)1. a/b02. (a+b)%c03. a+b,a?

4、c,a=b/c,a+b+c 154. c=a+5. (int)a+(float)a/b 36. (a=a+b)-(-c)1三、分析程序,写岀结果。以下程序段的输岀结果是_ x=l尸2 * sun? * =310 Squared is : 100mai n() int x=l,y=2;printf("x=%d y=%d * sum * =%dn",x,y,x+y);printf("10 Squared is : %dn",10*10);四、编程。1. 编程完成从键盘上输入三角形的底和高,输岀三角形面积的C语言程序。#i nclude nstdio.h&qu

5、ot;mai n() float s,a,b;printf (”请输入直角三角形的底和高n” ;scanf( %f %f',&a,&b);s=a*b/2.0;prin tfCAfAs);2, 从键盘输入本学期所有课程的成绩,输岀课程成绩、总成绩和平均成绩。如下显示课程:C程序设计大学英语高数计应基础体育成绩:98.067.070.0 88.065.0总成绩:329.0平均成绩:65.8#include Hstdio.hnmai n()float avg,s,a,b,c,d,e;sca nf(n%f %f %f %f %f', &a,&b,&

6、; c, &d, &e);s=a+b+c+d+e;avg=s/5.0;printf(程序设计大学英语高数计应基础体育n");printf(nn" ,a,b,c,d,e);print 町总成绩:n" ,s);printf ("平均成绩:n" ,avg);模块3一、选择题1. 以下不正确的if语句是C。A) if(x>y&& x!=z);B) if(x!=y) x+=y;C) if(x!=y)(x+;y+;)D) if(x=y) sacnf( % d;'%d",&x,&y);2

7、. 变量定义为intx=l,y=2,z=3;以下语句执行后 x、y、z的值是旦if(x>y)z=x; x=y; y=z;A) x=l,y=2,z=3B) x=2,y=3,z=3C) x=2,y=3,z=D) x=2,y=3,z=23. 以下程序的运行结果是旦。int m = 5;if(m + + >5) pri ntf(% n“,m);elseprintf(“ % dn",m-);D)7A) 4B)5C)64. 有一分段函数如下表:X的范y和x的关系围x<0y=x-lx=0y=xx>0x+1A) y = x+ 1;B) y = x-l;C) if ( xv =

8、 0 )D) y = x;if(x>=0)if(x!=0)if(x< 0)if (x v =0)if(x = = 0)if(x>0)y = x- 1;if(x<0)y = x;y = x + 1;else y = x;y = x 1else y = x-1;else y = x;else y = x+ 1;else y= x+ 1;5.为了避免在嵌套的if-else语句中产生歧义,C语言规定:else子句总是与 B配对A )缩排位置相同的ifB)其之前最近的ifC)其之后最近的ifD)同一行上的if二、填空题1. 输入三个整数,按从大到小的顺序进行输出。int main

9、 ()int nl , n2 , n3 , temp ;scanf (“ %d %d %,d &” , & n2 , & n3 );if(n2<n3 ) 希望n2存放的数比n3大temp = n2 ; n2 = n3 ; n3 = temp ; if(nl<n3) 希望nl存放的数比 n3大temp = nl ; nl = n3 ; n3 = temp; if (nlvn2 ) 希望nl存放的数比n2大temp = nl ; nl = n2 ; n2 = temp ; printf ( "%d , %d , %d ", numl , n

10、um2 , num3 );2. 输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其它字符不变。int mai n() char ch;sca nf (" %c“ , & ch);if ( ch>=Z&&chv=Z ) ch = ch + 32 ;else if ( ch > = 'a' && ch v = ' z ') ch=ch-32 ;printf (" % c",ch);1. 编写一个程序,要求用户从终端上键入两个整数数值。检

11、测这两个数,判定第一个数 能 否被第二个数整除,并在终端上显示相应的信息 ( 要求绘制流程图 )。#include ” stdio.h ”mainQ int a,b;printff'please input two numbers:n H);scanf("%d%d ” ,&a,&b);if(a%b=O)printf( n%d%可以被 d 整除”,a,b);elseprintf( H%d 不能被 (1 整除” ,a,b);2. 从键盘输入 a、b、c 三个整数,输出其中最大的数。#include Hstdio.hnmainQint a,b,c,t;scanf(

12、” d%d%d” ,&a,&b,&c);if(a>b)t=a;elset=b;if(t>c) ;elset=c;printf( ”d” ,t);消费金额折扣P<1000%100vP<2005%200 < P < 50010%500 <P< 100015%P> 100020%编写程序,从键盘输入消费金额,输岀折扣率和实付金额(f),分别用if语句和switch语 句来实现(要求绘制流程图)。1 .#include Hstdio.hnmai n()(float p,f d;scanf(" % f',&a

13、mp;p);if(p<100)d=0.;else if(p<200)d=0.05;else if(p<500)d=0.1;else if(p<1000)d=0.15;elsed=0.2;f=p*(l-d);printf( ” d=%d%a%2f(jnt)(d*100),f);2. #i nc lude ” stdio. h ”mai n()(float p,f>d;int c;scanf(" % f',&p);c=p/100;switch(c) case 0:d=0.;break;case l:d=0.05;break;case 2:ca

14、se 3:case 4:d=0.1;break;case 5:case 6case 7case 8case d=0.15;b 9default:dre=0a.k2;f=p*(l-d);printf( nd=%d%>%.2fn H,(int)(d*100),f);模块 41.单选题(1) C 语言中 while 与 do-while 语句的主要区别是 ( A )A) do-while 的循环体至少无条件执行一次B) do-while 允许从外部转到循环体内C) do-while 的循环体不能是复合语句D) while 的循环控制条件比 do-while 的循环控制条件严格 假定a和b为in

15、t型变量,则执行以下语句后b的值为(B )a 二 1; b 二 10;do b-=a; a+; while (b 一v 0);D) 8D)有语法错误A) 9B) -2C) - 1(3) 以下程序段 ( A )x 二 T ;do( X=x*x ; while (!x);A)是死循环B)循环执行两次C)循环执行一次(4) 下面程序的运行结果是 (ftinclude <stdio.h>int main () ( int y=10; do y ; while( 一 y);return 0:(5)对for (表达式1;表达式3)可理解为(B )C - forfor(6)若 i、j(表达达式B

16、)表达式均为整型变量,则以下循环BD)fforfor (i=0, j=T j=l;i+, j+)1;1;表达式0printf ("%d , %dn" ,i,j);C)判环循只结行的条件不以下的for循环(B)for (x=0,y=0;(y!=123)&&( x<4);x+);A)执行3B)执行4C)循环次数不D)是无限循(8 )设j为int型变量,则下面for循环语句的执行结果是(for (j=10; j3; j )j ; J ;pri ntf j);A) 6 3B) 7 42.根据要求完成程序填空062D)7(1)下面的程序片段从键盘输入的字符中统计

17、数字字符的个数,用换行符结束循环。c;c=getchar ();while(Q 二'n' && c!='o') if(c ='O' && c =' 9' ) n+;c=getchar ();下面程序的功能是用do-while语句求1至1000之间满足“用3除余2,用 5除余int n=0.3,用7除余2”的数,且一行只打印五个数ttin elude vstdio. h>int mai n ()(int i=l, j 二 0;do ( if (i%3=2 &&i%5=3$i%7=

18、2)(printf("%4d” , i);J=j+1 ;if (j=5) printf ( n );i=i+1;while(i<1000);return 0; 打印100以内个位数为6且能被3整除的所有数。ftin clude <stdio. h>int mai n ()(int i, j ;for (i=0; ;i+)(j=i*10+6 ;if (i%3= 1) con ti nue;printf ( d ” , j);return 0;3. 编程题:(1) 编一程序求n的阶乘(n由键盘输入)Mai n()(int n, e=l;Long int i;Scanf(

19、 "d" , &n);For (i=n;i>0;i 一)e=e*i;Printf( " d" , e);(2) 计算 1! +2! +3! + +10!的值。Main ()int s=0, i, e ;For (i=l;i<=10;i+)e=e*i;S=s+e; )Printf( "%d ,”s);3+33+333+3333 求Sn=a+aa+aaa+aa?a (n个a)的值,其中 a是一个数字。例如(此时 n=4), n 由键盘输入。Main()int n, e=l, a, i;Long int s 二 0;Scanf (

20、 "d%d”,&n, &a);For (i=n;i>0;i+)e 二 e*a;s=s+e;a 二 a*10+a;Printf( "%d ,”s);3 位数,其各位数字立方和等(4) 打印出所有的“水仙花数”,所谓“水仙花数”是指一个 于该数本身。例如, 153 是一个水仙花数。Main ()int a, b, c, n, w;Scanf ( "%d ,”&n);While (n>0)a=n/100; b=n%10;c=n/10%10;w=a+b+c;if(w=n)printf ( "%d ,n”) ;(5) 两个乒乓球

21、队进行比赛,各出3人。甲队为 a,b,c 3人,乙队为 x,y,z 3 人。已抽签 决定比赛名单。有人向队员打听比赛的名单。a 说,他不和 x 比, c 说他不和 x,y 比,请编 程序找出 3队赛手的名单。#include<stdio. h>main ()( int i, j;for(i='A' ;i =' C' ;i+) for(j='X' ;j<= Z J ;j+)if (! (i= A' &&j=' X=''| C|i' &&(j=' X&#

22、39; | | j=' Y')printf ( z,%c %cn, i, j);(6) 每个苹果 0.8元,第一天买 2 个苹果,第二天开始,每天买前一天的 2倍,直至购买 的 苹果个数达到不超过 100 的最大值。编写程序求每天平均花多少钱?main () int day=l, num, t=0, i=2;double average, money;while (t<100) t+=i ;i=i*2;day+;num 二 t-i/4;money=num*0. 8;average=money/(day-2);printf ( /zthe ave price is %fn z , average);(7) 编程完成用一元人民币换成一分、两分、五分的所有兑换方案,即输出所有满足搭配 求的 1 分币个数、 2 分币个数、 5 分币个数。main (

温馨提示

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

评论

0/150

提交评论