C语言程序设计习题答案 杜有福.doc

C语言程序设计习题答案习题一 C语言程序设计概述一、名词解释(1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2(5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4(9)结构化的程序设计P9二、简述题1. 设计程序时应遵循哪些基本原则P4 答正确性、可靠性、简明性、有效性、可维护性、可移植性。2. 算法的要素是什么算法具有哪些特点 答算法的要素是操作与控制结构;算法的特点有有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。3. 算法的表示形式有哪几种答算法的表示形式有自然语言、传统流程图、伪代码、结构化的流程图(N_S流程图,盒图)。4. 有哪三种基本结构 答三种基本结构是顺序结构、选择结构和循环结构。5. 传统流程图与N-S流程图最大的区别是什么答N-S流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。三、用传统流程图、N-S图分别表示求解以下问题的算法。1. 有3个数a,b,c,要求按由大到小的顺序把它们输出。输入一个数给xmaxx;minx;n1;当n小于10时输入下一个数给x如果maxxYes Nomax x如果minxYes Nomin xn n 1输出max,min的值输入三个数给a,b,c如果abyes no将a与b的值互换 如果acYes no将a与c的值互换 如果bcyes no将b与c的值互换输出a,b,c的值2. 依次将10个数输入,求出其中最大的数和最小的数并输出。3. 求123100的值。 s1; i1当i小于等于10时ss*i; i i1;输出s的值s0; i1当i小于等于100时ssi; i i1;输出s的值4. 求12310的值。5. 求下列分段函数的值。输入一个数给x X1Yes noX1 x5Yes no yes noY3x y4x-1 y5x1 y6-3x输出s的值Y 3X (X1)4X-1 (X1)5X-16 (1X5)6-3X (X5) 6. 求100200之间的所有素数。i 100当i200时n2; flag1;当n i时i能否被n整除yes noflag0n n1flag1yes no输出i的值i i17. 求一元二次方程ax2bxc0的根。分别考虑db2-4ac大于0、等于0和小于0三种情况。四、注释下面C程序的各个组成部分。main /*主函数 */ /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */a10; /*将整数10赋值给变量a */k2; /*将整数2赋值给变量k */m1; /*将整数1赋值给变量1 */ akm*k/k-m; /*先求出算术表达式的值,并将其赋值给变量a */ printfdn,a; /*在屏幕上打印出变量a 的值 */ /*程序结束 */习题二 数据类型、运算符与表达式一、 选择题 110BCDCB DDBCA 1120 ADDAA DBADC 2128 DABAD CDD二、填空题1字母 L 或字母 l 2 字符或c 、 整数或d 3在程序运行过程中,其值可以在一定的范围内变化的量。4 0 5 小数形式 、 指数形式 6 关键字 、 预定义标识符 、 用户标识符 7 字母 、 数字 、 下划线 、 数字 8 18 9 2 、 1 、 30 10 双精度实数或double 11 赋值 、 逗号 、20、 20 、 20、 4 12 4 习题三 顺序程序设计一、 选择题 110BCCBC CCDCC 二、 填空题1. printf 、 scanf 2. l 注long的第1个字符3. 域宽,即在格式字符前加一个整数,如5d4. 0 5. e 、 g 6. 6 7. s 、 c 8. * 9. - 、 10. i 三、 编程题1. 编写程序,从键盘输入一个以秒为单位的时间数,将其换算成几小时几分几秒,然后进行输出。例如输入的时间为4258秒,则输出结果为1小时10分58秒。 答程序参见文件Cprogramxt3_3_01.cinclude stdio.hmainint x,h,m,s; scanfd, hx/3600; mx3600/60; sx60; printfdsdddn,x,h,m,s;2. 编写程序,读入三个整数给变量a、b、c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中原来的值给a。 答程序参见文件Cprogramxt3_3_02.cinclude stdio.hmainint a,b,c,t; printf a b c; scanfddd, printfad,bd,cdn,a,b,c; ta;ac;cb;bt; printfad,bd,cdn,a,b,c;习题四 选择结构程序设计一、 填空题1 1 、 0 2 3 x0 4 0,2 5 20 、 0 、 0 二、 选择题17DDCAD DC三、 程序阅读题1 595959 2 0.500000 3 1 4 2 5 6 6 a2,b1 7 pass warn 8. 1 四、 编程题1. 设a为整型变量且其值大于零,请将以下if语句改写成switch语句。 if a60 m1; else ifa70 m2; else ifa80 m3; else ifa90 m4; else m5; 答程序参见文件Cprogramxt4_4_1.c 或Cprogramxt4_4_1b.cinclude stdio.hmainint a,m; scanfd, switcha/10 case 0case 1case 2case 3 case 4case 5m1;break; case 6m2;break; case 7m3;break; case 8m4;break; defaultm5;break; printfmdn,m;Cprogramxt4_4_1b.cinclude stdio.hmainint a,m; scanfd, m0; switcha/10 defaultm; case 8m; case 7m; case 6m; case 5case 4case 3case 2 case 1case 0m; printfmdn,m;2. 编写程序,从键盘输入一个整数,打印出它是奇数还是偶数。 答程序参见文件Cprogramxt4_4_2.c include stdio.hmainint a; scanfd, ifa21 printfd is a odd number n,a; else printfd is a even number n,a;3. 编写程序,从键盘输入一个字符,判别它是否是小写字母,如果是,将它转换为大写字母;如果不是,不转换。然后输出最后得到的字符。 答程序参见文件Cprogramxt4_4_3.c include stdio.hmainchar ch; scanfc, ifcha chz chch-32; printfcn,ch;4. 编写程序,从键盘输入一个不多于4位的正整数,打印出它是几位数。 答程序参见文件Cprogramxt4_4_4.c include stdio.hmainint x,n; scanfd, ifx1000 n4; else ifx100 n3; else ifx10 n2; else n1; printfdn,n;5. 当一个人的月收入在2000元以下时免税;月收入在2000元到5000元之间时,超过2000的部分纳税8;月收入在5000元以上时,2000至5000之间的部分纳税8,超过5000的部分纳税15。编写程序从键盘输入月收入income,计算并输出应交税款tax。 答程序参见文件Cprogramxt4_4_5.c include stdio.hmainint income; float tax; scanfd, ifincome2000 tax0; else ifincome5000 tax0.08*income-2000; else tax0.08*5000-20000.15*income-5000; printftaxfn,tax;6. 回文是指正读和反读都一样的数或字符串。例如12321、55455、35553等都是回文。请编写一个程序,从键盘上读取一个包含五位数字的长整数,并判断它是否是回文。(提示用除法运算和求余运算把一个数的个位、十位、百位、千位等分别分离出来。) 答程序参见文件Cprogramxt4_4_6.c include stdio.hmainlong x; int a,b,d,e; scanfld, ax/10000; bx10000/1000; dx100/10; ex10; ifae bd printfld is huiwenn,x; else printfld is not huiwenn,x;习题五 循环结构程序设计一、 阅读题1 8 2 4321 3 X 4 -1 5 23 6 52 7 5 8 3 二、 填空题1 18 2 2 3 bi1 4 17 5 i9 、 j30 6 d1.0 、 kk1 、 k10 三、 选择题18ADDAB DDA四、 编程题1. 编写程序,打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字的立方之和等于该数本身。例如,407是一个“水仙花数”,因为407430373。(注若将题意改为打印出最大的或最小的“水仙花数”,则应将循环语句作如何调整)。 答程序参见文件Cprogramxt5_4_01.c include stdio.hmainint a,b,c,k; fork100;k999;k 求最大的“水仙花数”改用fork999;k100;kak/100;bk/1010;ck10; ifka*a*ab*b*bc*c*c printf5d,k; 求最大或最小“水仙花数”时增加一个语句break; printfn;2. 编写程序,输出从公元1980年至2880年所有闰年的年号。每输出5个年号换一行。 答程序参见文件Cprogramxt5_4_02.c include stdio.hmainint k,flag,n0; fork1980;k2880;k flagk40k1000k4000; ifflag printf5d,k; n; ifn100 printfn; printfn;3. 编写程序,求1-35-7-99101的值。 答程序参见文件Cprogramxt5_4_03.c include stdio.hmainint n,t1,s1; forn3;n101;n2 t-t; sst*n; printfsdn,s;4. 编写程序,计算并输出下列级数的前n项之和Sn。n的值从键盘输入。 答程序参见文件Cprogramxt5_4_04.c include stdio.hmainint fz,fm,n,i; float s,t; fz2;fm1;s0; scanfd, fori1;in;i t1.0*fz/fm; sst; fzfzfm; fmfz-fm; printfsfn,s;5编写程序,求e的值e11/11/21/31/41/n 答程序参见文件Cprogramxt5_4_05.c include stdio.hvoid mainint n,i; float t,fm1,e1; scanfd, fori1;in;i fmfm*i; t1.0/fm; eet; printfnd,efn,n,e;6. 已知某球从80米高度自由落下,落地后反复弹起,每次弹起的高度都是上次高度的一半。求此球8次落地所经过的总路程。 答程序参见文件Cprogramxt5_4_06.c include stdio.hvoid mainint n; float s80,hs/2; forn2;n8;n ss2*h; hh/2; printfsfn,s;7. 用牛顿迭代法求高次方程fX2x3-4x25x-180的根。牛顿迭代公式为XnXn-1-fXn-1/fXn-1,其中fXn-1为导函数在点Xn-1的值。 答程序参见文件Cprogramxt5_4_07.c include stdio.hinclude math.hmainfloat x,f,f1; x8; x的初值可为任意值 dof2*x*x*x-4*x*x5*x-18; f16*x*x-8*x5; xx-f/f1;whilefabsf0.00001; printfxf,ffn,x,f;8. 用弦截法求高次方程2x3-3x27x-130的根。 答程序参见文件Cprogramxt5_4_08.c include stdio.hinclude math.hmainfloat a,b,c,fa,fb,fc; do printfEnter a,b; scanff,f, fa2*a*a*a-3*a*a7*a-13; fb2*b*b*b-3*b*b7*b-13; whilefa*fb0; do ca*fb-b*fa/fb-fa; fc2*c*c*c-3*c*c7*c-13; iffa*fc0 ac;fafc; else bc;fbfc; whilefabsfc0.0001; printfxf,yfn,c,fc;9. 有这样一些真分数其分子和分母都是两位正整数,且分子的个位数与分母的十位数相同,如果把该分数的分子的个位数与分母的十位数同时去掉,所得到的新的分数正好与原分数的值相等,如26/652/5。试编程求出所有满足上述条件的真分数。 答程序参见文件Cprogramxt5_4_09.c include stdio.hmainint a,b,c; 设这个分数为ab/bc fora1;a9;a forb1;b9;b forc1;c9;c ifac1.0*a/ca*10.0b/b*10.0c printfd/ddd/ddfn,a,c,a,b,b,c,1.0*a/c;10. 编写程序,求数列1、(11/2)、(11/21/3)、(11/21/31/4)、(11/21/31/41/5)的前10项之和。 答程序参见文件Cprogramxt5_4_10.c include stdio.hmainfloat s,t; int i; s0,t0; fori1;i10;i tt1.0/i; sst; printfsfn,s;11. 编写程序,求3到100之间的所有素数之和。 答程序参见文件Cprogramxt5_4_11.c include stdio.hmainint s,i,k,flag; s0; fori3;i100;i flag1; fork2;ki;k ifik0 flag0;break; ifflag ssi;printf4d,i; printfnsumdn,s;12. 编写程序,求Fibonacci数列中大于800的最小的一个数。 答程序参见文件Cprogramxt5_4_12.c include stdio.hvoid mainint f11,f21,f3; whilef3800 f3f1f2; f1f2; f2f3; printfFibonacci数列中大于800的最小数是5dn,f3;习题六 数组一、 选择题110 BDBCD CDBAB1120BCDCC DABBC2130CCADC ABBCB3141BDDDD CDCCB A二、 填空题1 9 、 0 2 先行后列 3 连续的存储空间中 4 QuickC 5. cgetchar 、 Ai或65i 6. 0 、 str1i-str2i 7 CDABC 8 10 14 9 6 10 1 0 0 0 00 1 0 0 00 0 1 0 00 0 0 1 00 0 0 0 111 600 12 AzyD 13 4 some string *test 三、 编程题1. 定义一个有20个元素的整型数组,分别求出下标为奇数和偶数的元素的平均值。 答程序参见文件Cprogramxt6_3_01.c include stdio.hinclude math.hmainint i,s00,s10,a20; fori0;i20;i airand100; fori0;i20;i2printf3d,ai; s0s0ai; printf sum isd avefn,s0,s0/10.0; fori1;i20;i2printf3d,ai; s1s1ai; printf sum isd avefn,s1,s1/10.0; 2. 设有一个整型数组,另输入一个整数,编程查找这个整数是否在数组中出现过,若出现,则输出第一次出现的位置,否则,输出no found。 答程序参见文件Cprogramxt6_3_02.c include stdio.hinclude math.hmainint i,s,a20; fori0;i20;i airand100; scanfd, fori0;i20;iifaisprintffoundaddn,i,ai; break; ifi20 printfno foundn; fori0;i20;iprintf3d,ai; printfn;3. 设有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入到数组中。 答程序参见文件Cprogramxt6_3_03.c include stdio.hdefine N 10mainint i,j,s; int aN1,3,5,7,9,11,13,15,17; int aN17,15,13,11,9,7,5,3,1; scanfd, i0; if a0a1 whilesai i; else whilesai i; forjN-1;ji;jajaj-1; ajs; fori0;iN;iprintf3d,ai; printfn;4. 编一程序,从一个已排好序的数组中删去某个位置上的元素。 答程序参见文件Cprogramxt6_3_04.c include stdio.hdefine N 10mainint i,j; int aN1,3,5,7,9,11,13,15,17,19; fori0;iN;iprintf3d,ai; printfn; scanfd, forji;jN-1;jajaj1; aj0; fori0;iN;iprintf3d,ai; printfn;5. 将一个二维数组的行、列互换后存到另一个二维数组中并输出结果。 答程序参见文件Cprogramxt6_3_05.c include stdio.hmainint i,j; int a341,3,5,7,9,11,13,15,17,19,21,23,b43; fori0;i4;iforj0;j3;j bijaji; printfarray an; fori0;i3;iforj0;j4;j printf5d,aij; printfn; printfarray bn; fori0;i4;iforj0;j3;j printf5d,bij; printfn; 6. 编一程序,在一个二维数组中,查找第一次出现的负数,并输出该数及其所在的行、列号。 答程序参见文件Cprogramxt6_3_06.c include stdio.hmainint i,j,flag; int a341,3,5,7,9,11,13,-15,17,19,-21,23; flag0; fori0;i3;i forj0;j4;j ifaij0flag1; printffoundadddn,i,j,aij; ij100;可使双重循环提前结束 ifflag0 printfno found ; printfarray an; fori0;i3;iforj0;j4;j printf5d,aij; printfn;7. 编程将一个字符数组中的字母,按由大到小的顺序进行排序。 答程序参见文件Cprogramxt6_3_07.c include stdio.hinclude string.hmainchar t,sABCDIVBHFBVCNLKFDB; int i,j,n; putss; nstrlens; fori0;in-1;i forji1;jn;j ifsisj tsi;sisj;sjt; putss;8. 输入一行字符,统计其中有多少个英语单词,单词之间用空格隔开。 答程序参见文件Cprogramxt6_3_08.c include stdio.hinclude string.hmainchar s81; int w,i,n; getss; i0;n0;w0; whilesi0 ifsi w0; /*end of a word*/ elseifw0w1;n; /*begin of a word*/ i; printfnumber of worddn,n;9. 编程将两个一维数组中的对应元素的值相减后进行输出。 答程序参见文件Cprogramxt6_3_09.c include stdio.hinclude math.hmainint i,a10,b10; fori0;i10;iairand100; printf4d,ai; printfn; fori0;i10;ibirand100; printf4d,bi; printfn; fori0;i10;i printf4d,ai-bi; printfn;10. 有n个无序的数放在数组a中,请将相同的那些数删得只剩得一个,输出经过删除后的数据。 答程序参见文件Cprogramxt6_3_10.c include stdio.hmainint i,j,k,a1090,20,40,30,50,50,50,50,20,80; fori0;i10;i printf4d,ai; printfn; fori0;i9;i forji1;j10;j ifajaiaj-888;k0;fori0;i10;i ifai-888 printf4d,ai; akai; 不相同的有效元素只有K个了 printfn; 11. 求二维数组中这样一个元素的位置它在行上最小,在列上也最小。如果没有这样的元素则输出相应的信息。 答程序参见文件Cprogramxt6_3_11.c include stdio.hinclude math.hmainint j,i,k,flag,fz0,a45; fori0;i4;i forj0;j5;j aijrand100; printf4d,aij; printfn; fori0;i4;i forj0;j5;j flag1; fork0;k5;k ifaikaij flag0;break; fork0;k4flag;k ifakjaij flag0;break; ifflag fz; printfmin adddn,i,j,aij; iffz0 printfno found;12. 在一个二维数组中形成并输出如下矩阵 1 1 1 1 1 2 1 1 1 1 A 3 2 1 1 1 4 3 2 1 1 5 4 3 2

杜有福 c语言 第三版,C语言程序设计习题答案 杜有福.doc相关推荐

  1. c语言程序设计第三版杜有福,C语言程序设计习题答案 杜有福

    C语言程序设计习题答案 杜有福 C语言程序设计习题答案 习题一 C语言程序设计概述 一.名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6) ...

  2. 新视野大学英语(第三版)第一册课后习题答案(完整版)

    想看更多算法题,可以扫描上方二维码关注我微信公众号"数据结构和算法",截止到目前我已经在公众号中更新了500多道算法题,其中部分已经整理成了pdf文档,截止到目前总共有900多页( ...

  3. 算法导论第三版 第15章习题答案

    2020/11/18:初稿,增加Python代码实现,修订参考文献部分错误(如15.1的第4题) 参考文献: https://walkccc.github.io/CLRS/Chap15/ https: ...

  4. 微机原理与接口技术[第三版]——第一章课后习题答案

    1.进制转换 (1)D(128) = B(10000000) = O(200) = H(80) (2)D(1024) = B(10000000000) = O(2000) = H(400) (3)D( ...

  5. 算法导论第三版 第2章习题答案

    2020/10/27: 增加伪代码相应的Python实现代码. 2020/11/13:修订第2节第3题的bug. 参考文献:https://ita.skanev.com/ 2 Getting Star ...

  6. c语言1e3和1e3,自考“高级语言程序设计”习题答案详解(33)

    6.1 单项选择题 1.函数调用语句"f((el,e2),(e3,e4,e5)):"中参数的个数是( ) ①1 ②2 ③4 ④5 「解」上述函数调用中,(e1,e2)和(e3,e4 ...

  7. android应用程序设计张思民课后答案,Java语言程序设计习题答案(清华大学出版杜)张思民版...

    Java语言程序设计习题答案(清华大学出版杜)张思民版 更新时间:2017/2/6 12:39:00  浏览量:568  手机版 第1章 Java概述 [1]为什么说Java的运行与计算机硬件平台无关 ...

  8. c++语言基础教程第三版习题答案,《C++语言基础教程》吕凤翥习题答案

    <<C++语言基础教程>吕凤翥习题答案>由会员分享,可在线阅读,更多相关<<C++语言基础教程>吕凤翥习题答案(66页珍藏版)>请在人人文库网上搜索. ...

  9. java语言程序设计郑莉课后答案_java语言程序设计 第2版 (郑莉)课后习题答案.doc...

    java语言程序设计 第2版 (郑莉)课后习题答案.doc JAVA语言程序设计第2版郑莉第二章习题答案1什么是对象.类,它们之间的联系答1)对象是包含现实世界物体特征的抽象实体,它反映系统为之保存信 ...

最新文章

  1. C语言实现修改文本文件中的特定行
  2. goaccess-nginx日志分析工具简介
  3. 【机器学习】改善LBP特征提高SVM的可分性的经验总结(二)
  4. linux 工具 SecureCRT 使用 rz 和 sz 命令
  5. kotlin学习笔记——集合及集合操作符
  6. 我刚做的一个TreeView的CheckBox进行选中插入数据库,从数据库中读取数据后让CheckBox勾选的代码!...
  7. 西门子plm_西门子的Teamcenter、TIA Portal、NX MCD是如何结合在一起的
  8. 通过界面生成时不存在的数据刷新界面引起的卡顿问题
  9. Python 中的黑暗角落(二):生成器协程的调度问题
  10. C++面向对象程序设计课程笔记(第三周)
  11. [转载] 【Python】bytes数据类型
  12. 我的实例我做主--ECS运维必读
  13. java对象数组排序_java 对象数组排序
  14. 【语音分析】基于matlab语音线谱对转换【含Matlab源码 560期】
  15. 横向时间轴插件 html5,jQuery横向滚动时间轴插件
  16. 入侵提权过程中猜解linux路径与windows路径,网站路径暴力
  17. excel 表格怎么让内容回车换行?
  18. 星星之火-5:数字无线通信相对模拟无线通信的优点
  19. OS - 浅谈操作系统的内存管理
  20. Linux集群部署及搭建-----Hadoop

热门文章

  1. MS9334 HDMI一分四分配器方案
  2. 求数据绝对值的函数注意事项
  3. NFT Insider #41:The Sandbox 与舒淇等多个香港合作伙伴达成合作,YGG筹资帮助菲律宾台风灾民
  4. c语言int转换为十六进制,C语言将int型数据转换为十六进制的字符串
  5. js百度地图鼠标移上覆盖物时 省市区高亮,移走时恢复
  6. assistant字体_Google Assistant中最好的游戏和复活节彩蛋
  7. 秦路数据分析 Week All
  8. 计算机科学与技术专业大几分流,关于2019级计算机大类专业分流实施细则及分流专业名额的公示...
  9. 21天挑战赛算法学习打卡——顺序查找
  10. Python用格雷戈里公式求pi的近似值