C语言程序设计教程机械工业出版社钱雪忠吕莹楠.docx

上传人:碎****木 文档编号:95047178 上传时间:2023-08-14 格式:DOCX 页数:45 大小:94.80KB
返回 下载 相关 举报
C语言程序设计教程机械工业出版社钱雪忠吕莹楠.docx_第1页
第1页 / 共45页
C语言程序设计教程机械工业出版社钱雪忠吕莹楠.docx_第2页
第2页 / 共45页
点击查看更多>>
资源描述

《C语言程序设计教程机械工业出版社钱雪忠吕莹楠.docx》由会员分享,可在线阅读,更多相关《C语言程序设计教程机械工业出版社钱雪忠吕莹楠.docx(45页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、C 语言程序设计教程机械工业出版社钱雪忠吕莹楠文件排版存档编号:UYTR-OUPT28-KBNTL98-UYNN208编C语言程序设计教程习题及试验题局部答案第 1 章 C 语言概述1 习题一、选择题ADCDB CCBBA二、简答题1、什么是语言语言分几类各有什么特点语言:语言是思维的载体。人和计算机打交道,必需要解决一个“语言”沟通的问 题。如今人与计算机之间有很多种类的“语言”的。语言分类:机器二进制语言、汇编语言(低级)和高级语言(第三代、第四代、) 各自特点:1) 机器二进制语言:用 0、1 两个数字编写的计算机能直接运行的程序的语言,机器语言执行效率高,但难编写、难懂、难移植。2)

2、汇编语言(低级):汇编语言的特点是使用一些“助记符号”来替代那些难懂 难记的二进制代码,所以汇编语言相对于机器指令便于理解和记忆,但它和机器语言的指令根本上是一一对应,两者都是针对特定的计算机硬件系统的,可移植性差,因此称它们都是“面对机器的低级语言”。3) 高级语言:高级语言类似自然语言(主要是英语),由特地的符号依据词汇规 则构成单词,由单词依据句法规章构成语句,每种语句有精准的语义并能由计算机解释。高级语言包含很多英语单词,有“自然化”的特点;高级语言书写计算式子接近于熟知的数学公式的规章。高级语言与机器指令完全分别,具有通用性,一条高级语言语句常常相当于几条或几十条机器指令。2、汇编语

3、言与高级语言有何区分高级语言程序要比汇编语言要易懂、明白、简短得多;高级语言与机器指令完 全分别,具有通用性,一条高级语言语句常常相当于几条或几十条机汇编语言指令;高级语言要经过解释或编译来执行的,而汇编语言程序通过汇编程序来生成机 器程序来执行的。3、什么是程序完成某一特定任务的一组指令序列,或者说,为实现某一算法的指令序列称为 “程序”。不同计算机语言有不同的计算机程序。4、C 语言中为何要加注释语句注释局部,起到说明语句或程序的作用。程序中应添加必要的注释,来增加程 序的阅读与理解。注释用来向用户提示或解释程序的意义。在调试程序中对暂不使用的语句也可用注释符标注起来,使翻译跳过这些不作

4、处理,待调试完毕后再按需去掉注释符。为此,注释也有调试的关心作用。5、说说 C 语言程序的组成 C 语言程序包括由哪些局部一个 C 语言函数一般又由哪几局部组成的C 语言程序的组成:一个语言源程序可以由一个或多个源程序文件组成。 C 语言程序的组成局部:1. 一个C 语言源程序可以由一个或多个源文件组成;2. 每个源文件可由一个或多个函数组成;3. 一个源程序不管由多少个文件组成,都有一个且只能有一个 main 函数,即主函数;4. 源程序中可以有预处理命令(include 命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面;5. 每一个说明,每一个语句都必需以分号结尾。但预处理

5、命令,函数头和花括 号“”之后不能加分号;6. 标识符,关键字之间必需至少加一个空格以示间隔。 C 语言函数:一个C 语言函数通常由函数首部如 int max(int a,int b)、函数体组成。函数体一般又由局部变量定义与函数声明等组成的定义与声明局部、程序执行语句等组成的执行局部这两局部组成的如 min 函数所示。第 2 章 构造化程序设计与算法2 习题一、选择题BCDCD CBCAD二、简答题1、什么是算法算法的特点是什么什么是算法:算法就是解决某个问题或处理某件事的方法和步骤,在这里所讲的算法是专指 用计算机解决某一问题的方法和步骤。算法的特点: 1有穷性人们编制算法的目的就是要解决

6、问题,假设该算法无法在一个有限合理的时间内 完成问题的求解,那么算法也就失去了其原有的目的,人们就会摒弃它。而且人们 争论算法,其目的还在于它的高效率,即解决同一个问题的两个算法,人们往往选 择其中那个运行效率高的。2确定性所谓算法确实定性是指算法的每一个步骤都应当精准无误,没有歧义性。 3有零个或多个输入执行算法时,有时需要外界供给某些数据,帮助算法的执行。一个算法可以没有输入,也可以有多个输入。例如,求解 N!,该算法就需要输入一个数据 N;而求解两数之和,该算法就需要输入两个数据4有一个或多个输出算法的目的是求解,解就是结果,就是输出,否则就毫无意义。5有效性算法中的每一步都应当能有效地

7、执行、可以实现,执行算法最终应当能得到确 定的结果。2、构造化程序设计的三种根本构造是什么其共同特点是什么构造化程序设计的三种根本构造: 挨次、选择、循环三种根本把握构造其共同特点:1只有单一的入口和单一的出口;2构造中的每个局部都有执 行到的可能;3构造内不存在永不终止的死循环。3、尝试用自然语言、流程图、N-S 流程图或伪代码写出下面问题的求解算法。1) 依据三边,求三角形的周长和面积2) 推断用户输入的一个整数是奇数还是偶数3) 求解一元二次方程 ax2+bx+c=0 根4) 找出 10 个数据的最大数5) 将 20 个考生成绩中不及格者的分数打印出来6求S=1+2+3+4+100解:略

8、试验 2 生疏 VC+ 环境及算法二、试验内容1、改错题#include mainint x=2,y=3,a; a=x-y; printf(“a=%d“,a);printf(“n“);/* 换行 */2、程序填空题#include mainint a,b,m;printf(“Input a,b please!n“); scanf(“%d%d“,&a,&b);m=a*b;/*赋值语句,将 a 和 b 之积值赋给 m*/ printf(“a*b=%dn“,m); /*输出 a 和 b 积的结果值并换行 */3、设计与表示算法推断一个数 n 能否同时被 3 和 5 整除。1用伪代码表示begin(算

9、法开头)input nif (n/3*3)=nif (n/5*5)=nprint “数 n 能同时被 3 和 5 整除”end(算法完毕)2) 用 N-S 图表示3) 用流程图表示输入 n4、编程题n 除以 3开的始余数为 0是否1) 输入n#inclnud除e 以5void是main的余数为 0n 被 3 n 不能同时N 否整除Yprintf(“How are you!n“);n 被 52) n 能同时n 不能同时#include mainN被整3除和 5Y被 3 和 5被 3 和 5n 不能同时被 3 和 5int a,b,c,sum;printf(“Input a,b,c please!

10、n“)n;能同时被 3 和 5 整 scanf(“%d%d%d“,&a,&b,&c);sum=a*a*a+b*b*b+c*c*c;/*赋值语句,将 a 和 b 之积值赋给m*/完毕printf(“a*a*a+b*b*b+c*c*c=%dn“,sum); /*输出 a 和 b 积的结果值并换行 */第 3 章 数据类型及其运算3 习题一、选择题BADCDDCBCA二、阅读程序,给出运行结果1、7,8,102、1,33、4、 461579112三、编程题1. (sin(sqrt(x*x)/(a*b) 2.3.334.35. #include void mainchar c;c = getchar;

11、 printf(“%cn“,c);printf(“%dn“,c);6. #include int mainfloat C,F;printf(“请输入一个华氏温度:“); scanf(“%f“,&F);C = 9)*(F-32);printf(“摄氏温度 C=%n“,C);return 0;7. #include #include int mainfloat a; a = exp;printf(“%fn“,a); return 0;试验 3 数据类型及其运算二、试验内容1改错题#include mainint x,y;printf(“请输入两个整数n“); scanf(“%d%d“,&x,&y)

12、;printf(“互换前的 x:%d y:%dn“,x,y); x=x+y;y=x-y;x=x-y;printf(“互换前的 x:%d y:%dn“,x,y);2. 程序填空题#include mainint i1,i2,i3,i;printf(“Please input i1,i2,i3: “); scanf(“%d%d%d“,&i1,&i2,&i3);该程序的运行该结程序的运行结果:果:请输入 3 个整A数BC2 4 6abcave=,ji=48i=i3; 2.法一: #includeInt main float x,xf; Int xi;Printf (“请输入一个实数:”);Scanf

13、(“%f”,&x);Xi=(int)x;Xi=x-xi; Printf(“该数的整数局部为:%dn”,xi); Printf(“该数的小数局部为:5fn”,xf); Return 0;法二: #include double a,b; scanf(“%lf“,&a); b = a;long int p;p = (long int)a;printf(“整数局部:%dn“,p); printf(“小数局部:%lf“,(b - p); 3.4.5. #include void main( ) float a, b ,h;float area;scanf(“%f,%f,%f“,&a,&b,&h);are

14、a=(a+b)*h/2;printf(“梯形的面积为:%n“,area);试验 4 挨次构造程序设计二、试验内容1改错题以下程序的功能为:按以下公式计算并输出 x 的值。其中 a 和 b 的值由键盘输入。订正程序中存在的错误,以实现其功能。该程序的运行结果:4,6x =2ab (a + b)2#include main int a,b; float x;scanf(“%d,%d“,a,b);scanf(“%d,%d“,&a,&b);x=2ab/(ab)(ab);x=*a*b/(ab)*(ab);printf(“x=%dn“,x);printf(“x=%fn“,x); 2.程序填空题以下程序的功

15、能为:设圆半径 r=,圆柱高 h=3,求圆周长、圆面积、圆球外表积、圆球体积、圆柱体积。用 scanf 输入数据 r、h,输出计算结果,输出时要求有文字说明,取小数点后位数字。(周长l=2p r ,圆面积 s=p r 2 ,圆球外表积 sq= 4p r 2 ,4圆球体积 vq= 3p r 3;圆柱体积 vz=p hr2),请补充完善程序,以实现其功能。#include mainfloat pi,h,r,ly,sy,sq,vq,vz; pi=;该程序的运行结果:请输入圆半径 r,圆柱高h:3圆周长为:printf(“请输入圆半径 r,圆柱高 h:n“); scanf(“%f%f“,&r,&h);

16、ly= 2*pi*r ; sy= pi*r*r ; sq= 4*pi*r*r; vq= 3*pi*r*r*r; vz= pi*h*r*r;printf(“圆周长为:%.2fn“,ly); printf(“圆面积为:%.2fn“, sy); printf(“圆球外表积为:%.2fn“, sq); printf(“圆球体积为:%.2fn“, vq); printf(“圆柱体积为:%.2fn“, vz);3. 编程题(1) 编写一个程序实现如下功能:从键盘输入 3 个字符,然后在屏幕上分 3 行输出该 3 个字符。该程序的运行结果:ABCA#include mainchar c1,c2,c3;Bc1

17、=getchar;c2=getchar; c3=getchar; putchar(c1); putchar(”n”); putchar(c2); putchar(”n”); putchar(c3); putchar(”n”);(2) 编写一个程序实现如下功能:输入一元二次方程 ax2+bx+c=0 的系数 a、b、c,求方程的根。要求:运行该程序时,输入 a、b、c 的值,分别使 b2-4ac 的值大于、等于和小于零,观看并分析运行结果。求根公式如下:该程序的运行结果:a=1,b=3,c=2x1=x2=法一:#include #include void mainfloat a,b,c,disc

18、,x1,x2,p,q;scanf(“a=%f,b=%f,c=%f“,&a,&b,&c); disc=b*b-4*a*c;p=-b/*a); q=sqrt(disc)/*a);x1=p+q; x2=p-q;printf(“x1=%nx2=%n“,x1,x2);法二: #include #include void main float a,b,c,disc,x1,x2,p,q;scanf(“a=%f,b=%f,c=%f“,&a,&b,&c); if (a=0)printf(“不是二次方程n“);elsedisc=b*b-4*a*c; if (disc0)printf(“无实根n“);elseif

19、(disc=0)p=-b/*a); q=sqrt(disc)/*a); x1=p+q;x2=p-q;printf(“有两个一样的实根n“); printf(“x1=%nx2=%n“,x1,x2);elsep=-b/*a); q=sqrt(disc)/*a); x1=p+q;x2=p-q;printf(“有两个不同的实根n“); printf(“x1=%nx2=%n“,x1,x2);第 5 章 选择构造程序设计5 习题一、选择题BBCBBCBACB二、阅读程序写出运行结果1、-22、Yes3、(1)2(2)3CC A=2,b=2,c=44、*&5、532三、编程题1.#includeintmai

20、ninta,b;3. #include intmain(void)intn; intstatus=1; while(status)printf(“输入:“);scanf(“%d“,&n); switch(n)case0:printf(“舞蹈n“); break;case1:case3:printf(“乒乓球n“); break;case 2case4:printf(“篮球n“); break;case5:printf(“保龄球n“); break;case6:printf(“吉他n“); break;default: status=0;return0;试验 5 选择构造程序设计二、试验内容1改

21、错题以下程序的功能为:输入 3 个整数后,输出其中最大值。请订正程序中存在错误, 使程序实现其功能。该程序的运行结果:请输入 3 个整数:5 2 7#include “mainint a,b,c,max;printf (“请输入 3 个整数:n“); scanf (“%d%d%d“,&a,&b,&c); max=a;if (cb) if (ba) max=c;/* cba */ else/* bc */if (ca) max=b;/* bca */ printf(“3 个数中最大者为:%dn“,max);改正后的程序: #include “ mainint a,b,c,max;printf (

22、“请输入 3 个整数:n“); scanf (“%d%d%d“,&a,&b,&c); max=a;if (cb) if (ca) max=c; elseif (ba) max=b;printf(“3 个数中最大者为:%dn“,max);2. 程序填空题#include mainint a,b,d; char ch;printf(“Please input a expression:“); scanf(“%d%c%d“,&a,&ch,&b); /*输入数学表达式*/ switch(ch)case ”+”: d=a+b; printf(“%d+%d=%dn“,a,b,d); break;case

23、”-”: d=a-b;printf(“%d-%d=%dn“,a,b,d); break;case ”*”: d=a*b;printf(“%d*%d=%dn“,a,b,d); break; case ”/”:if (b=0) printf(“Divisor is zeron“);else printf(“%d/%d=%fn“,a,b,(float)a/b); /* 强制类型转换*/break;default : printf(“Input Operator error!n“);3. 编程题1#include mainint a,b,c,max,min; float sum,d,e;printf(

24、“请输入三个数:“);scanf(“%d%d%d“,&a,&b,&c); sum=a+b+c;d=sum/3; e=a*b*c; if(ab)max=a;min=b; elsemax=b;min=b; if(maxc)min=c;printf(“三个数的和%.1fn“,sum); printf(“三个数的平均值%.2fn“,d); printf(“三个数的积%.1fn“,e);printf(“三个数中最大值是%dn“,max); printf(“三个数中最小值是%dn“,min);2 #include void mainfloat x,y; scanf(“%f“,&x); if(x5) y=1

25、-x*x*x;else if(x=5) y=x-1;else y=2*x*x-1; printf(“x=%0f,y=%0fn“,x,y);3 #include void main int a; printf(“input integer number:“); scanf(“%d“,&a);switch(a) case 0:printf(“Sundayn“);break; case 1:printf(“Mondayn“);break;case 2:printf(“Tuesdayn“);break;case 3:printf(“Wednesdayn“);break; case 4:printf(“

26、Thursdayn“);break; case 5:printf(“Fridayn“);break; case 6:printf(“Saturdayn“);break; default:printf(“errorn“);第 6 章 循环构造程序设计6 习题一、选择题BCDDABDBAB BC二、阅读程序写出运行结果 1、3,4 2、6 3、# 4、02 5、18 6、1 7、80 8、输出一行中含大写或小写字母个数中的大者数 9、15 次21 22) 2 次13 6 4 43) 外循环 2 次,内 2 层循环累计 3 次,内 3 层循环累计 5 次284) 外循环 3 次,内循环累计 4 次-

27、1 -10 5三、编程题略试验 6 循环构造程序设计二、试验内容1改错题以下程序的功能为:倒序打印 26 个英文字母。订正程序中存在的错误,以实现其功能。#include mainchar x; x=”z”;while(x!=”a”)while(x!=”a”-1)或 while(x=”a”)printf(“%3d“,x);printf(“%3c“,x); x+;x- -;2. 程序填空题1#include mainint day,x1,x2; day=0; x1=1020;while (x1)X2=x1/2-2; X1=x2;day+;printf(“day=%dn”,day);2 #incl

28、ude #include mainint i,left,right;char cc80; printf(“输入一个算术表达式n“);gets(cc);left = 0;right = 0; e = 11+ 1! +11+2!3!1+ n!fnn“,i,no,sum,ave);第 7 章 数组及其应用7 习题一、选择题DACBCABDBD二、阅读程序写出运行结果 1、4 2、Tony 3、 max=85,min=5,sum=180,aver=4、a=2 b=2 c=2 d=2 e=1 f=2 g=2 5、j=45 三、编程题1. 略2.#include intmaininta10;程序填空题#i

29、nclude #include void mainchar string20,str320; int i;for (i=0;i0) strcpy(string,str0); else strcpy(string,str1);if (strcmp(str2,string)0) strcpy(string,str2); puts(string);三、编程题1从键盘输入 10 个数,用选择排序法将其按由大到小的挨次排序;然后在排好序的数列中插入一个数,使数列保持从大到小的挨次。#define N 11 #include void main int aN,i,j,k,t,p;printf(“请输入%d

30、 个整数 :n“,N); for(i=0;iN-1;i+)scanf(“%d“,&ai); for(i=0;iN-2;i+)程序填空题#include #include #define MAX 100 n“,s,len(s);2. 程序填空题#include #include chnum(char *p); void mainchar s6; int n; gets(s);if (*s=”-”) n=-chnum(s+1); else n=chnum(s); printf(“%dn“,n);chnum(char *p)int num=0,k,len,j; len=strlen(p); for(

31、;*p!=”0”;p+)k=*p-”0”;j=(-len);while (j-0)k=k*10;num=num+k;return(num);1 A. *p!= ”0”B. *(+p)!=”0”C.*(p+)!=”0”D. len!=02 A. *pB. *p+”0”C.*p-”0”D.*p-323 A. -jB. j-0C.-lenD.len-0三、编程题第 10 章 自定义类型及其应用10 习题一、选择题BDDBB DCCDA CDBCD二、阅读并写出结果1、_ p-sex 2、2。3、M。4、32 5、216、5,37、y hang8、1,219、13试验 10 自定义类型及其应用二、试验

32、内容1改错题#include #include #define NUM 4 struct studentint rank;/* 学生排名 */ char name8; /* 学生姓名 */ double score;/* 学生成绩 */stu=3,“Tom“,4,“Mary“,1,“Jack“,2,“Jim“,;mainchar str10; int i;doprintf(“Enter a name:“);scanf(“%s“,&str); for(i=0;i=NUM&strcmp(str,“0“)!=0) printf(“Not foundn“); while(strcmp(str,“0“)

33、!=0);2. 程序填空题#include static struct personchar name20; int age; person=“Li-ming“,18, “wang-hua“,19, “zhang-ping“,20; mainint i,max,min; max=min=person0.age;for(i=1;imax) max=personi.age;else if (personi.agemin) min=personi.age; for(i=1;i3;i+)if (personi.age!=max & personi.age!=min)printf(“%s %dn“,pe

34、rsoni.name,personi.age); break;第 11 章 文件及其应用11 习题一、选择题BCABADACDA二、阅读并写出结果1、从文件中逐个字符地读出全部内容,并显示在屏幕上 2、把复制到 中3、2404、试验 11 文件及其应用二、试验内容1改错题#include #include #include void mainint x1000,i,k;FILE *fp2;srand(unsigned) time(NULL); for(i=0;i1000;i+)xi=rand; printf(“%d n“,xi);fp2=fopen(“,“wb“); if (fp2=NULL)

35、printf(“Open error n“);exit(0);for(k=0;k1000;k+) fwrite(&xk,sizeof(int),1,fp2);fclose(fp2);2. 程序填空题#include mainFILE *fp;char c,str256;int i=0,no=0,line=0;if (fp=fopen(“,“w“)=NULL) printf(“can”t open this file.n“); exit(0);printf(“please input a string.n“); while(c=getchar)!=EOF)if(c=”a” & c=”z”) c=

36、c-32; fputc(c,fp);fclose(fp);if (fp=fopen(“,“r“)=NULL) printf(“can”t open this file.n“); exit(0);while (!feof(fp)c=fgetc(fp); no+;if (c=”n”) line+;printf(“line=%d character_no=%dn“,line,no); fclose(fp);第 12 章 预处理命令12 习题一、选择题DBDCDAADBC二、阅读并写出程序结果1、97,c2、c=113、d=804、5005、area=-19第 13 章 位运算13 习题一、选择题BCBBAA二、阅读并写出程序结果1、a=125 b=152、a=97, b=98,c=97,d=98

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com