类型汇编C语言学习知识-程序设计教育教程教案资料汇总(机械工业出版社钱雪忠吕莹楠).doc

收藏

编号:2611272    类型:共享资源    大小:133.36KB    格式:DOC    上传时间:2020-04-24
  
10
金币
分享到微信 分享到微博 分享到QQ空间
关 键 词:
汇编 语言 学习 知识 程序设计 教育 教程 教案 资料 汇总 机械工业 出版社 钱雪忠 吕莹
资源描述:
// 新编C语言程序设计教程 习题及实验题部分答案 第1章 C 语言概述 1 习题 一、选择题 ADCDB CCBBA 二、简答题 1、什么是语言?语言分几类?各有什么特点? 语言: 语言是思维的载体。人和计算机打交道,必须要解决一个“语言”沟通的问题。如今人与计算机之间有许多种类的“语言”的。 语言分类: 机器二进制语言、汇编语言(低级)和高级语言(第三代、第四代、……) 各自特点: 1)机器二进制语言:用0、1两个数字编写的计算机能直接运行的程序的语言,机器语言执行效率高,但难编写、难懂、难移植。 2)汇编语言(低级):汇编语言的特点是使用一些“助记符号”来替代那些难懂难记的二进制代码,所以汇编语言相对于机器指令便于理解和记忆,但它和机器语言的指令基本上是一一对应,两者都是针对特定的计算机硬件系统的,可移植性差,因此称它们都是“面向机器的低级语言”。 3)高级语言:高级语言类似自然语言(主要是英语),由专门的符号根据词汇规则构成单词,由单词根据句法规则构成语句,每种语句有确切的语义并能由计算机解释。高级语言包含许多英语单词,有“自然化”的特点;高级语言书写计算式子接近于熟知的数学公式的规则。高级语言与机器指令完全分离,具有通用性,一条高级语言语句常常相当于几条或几十条机器指令。 2、汇编语言与高级语言有何区别? 高级语言程序要比汇编语言要易懂、明了、简短得多;高级语言与机器指令完全分离,具有通用性,一条高级语言语句常常相当于几条或几十条机汇编语言指令;高级语言要经过解释或编译来执行的,而汇编语言程序通过汇编程序来生成机器程序来执行的。 3、什么是程序? 完成某一特定任务的一组指令序列,或者说,为实现某一算法的指令序列称为“程序”。不同计算机语言有不同的计算机程序。 4、C语言中为何要加注释语句? 注释部分,起到说明语句或程序的作用。程序中应添加必要的注释,来增强程序的阅读与理解。注释用来向用户提示或解释程序的意义。 在调试程序中对暂不使用的语句也可用注释符标注起来,使翻译跳过这些不作处理,待调试结束后再按需去掉注释符。为此,注释也有调试的辅助作用。 5、说说C语言程序的组成?C语言程序包括由哪些部分?一个C语言函数一般又由哪几部分组成的? C语言程序的组成: 一个C语言源程序可以由一个或多个源程序文件组成。 C语言程序的组成部分: 1.一个C语言源程序可以由一个或多个源文件组成; 2.每个源文件可由一个或多个函数组成; 3.一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数; 4.源程序中可以有预处理命令(include 命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面; 5.每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号; 6.标识符,关键字之间必须至少加一个空格以示间隔。 C语言函数: 一个C语言函数通常由函数首部(如int max(int a,int b))、函数体组成。函数体一般又由局部变量定义与函数声明等组成的定义与声明部分、程序执行语句等组成的执行部分这两部分组成的(如min函数所示)。 第2章 结构化程序设计与算法 2 习题 一、选择题 BCDCD CBCAD 二、简答题 1、什么是算法?算法的特点是什么? 什么是算法: 算法就是解决某个问题或处理某件事的方法和步骤,在这里所讲的算法是专指用计算机解决某一问题的方法和步骤。 算法的特点: 1)有穷性 人们编制算法的目的就是要解决问题,若该算法无法在一个有限合理的时间内完成问题的求解,那么算法也就失去了其原有的目的,人们就会摒弃它。而且人们研究算法,其目的还在于它的高效率,即解决同一个问题的两个算法,人们往往选择其中那个运行效率高的。 2)确定性 所谓算法的确定性是指算法的每一个步骤都应该确切无误,没有歧义性。 3)有零个或多个输入 执行算法时,有时需要外界提供某些数据,帮助算法的执行。一个算法可以没有输入,也可以有多个输入。例如,求解N!,该算法就需要输入一个数据N;而求解两数之和,该算法就需要输入两个数据 4)有一个或多个输出 算法的目的是求解,解就是结果,就是输出,否则就毫无意义。 5)有效性 算法中的每一步都应该能有效地执行、可以实现,执行算法最后应该能得到确定的结果。 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 解:略 实验2 熟悉VC++ 6.0环境及算法 二、实验内容 1、改错题 #include main() { int x=2,y=3,a; a=x-y; printf("a=%d",a); printf("\n"); /* 换行 */ } 2、程序填空题 #include main() { int a,b,m; printf("Input a,b please!\n"); scanf("%d%d",&a,&b); m=a*b; /*赋值语句,将a和b之积值赋给m*/ printf("a*b=%d\n",m); /*输出a和b积的结果值并换行 */ } 3、设计与表示算法 判断一个数n能否同时被3和5整除。 1)用伪代码表示 begin (算法开始) input n if (n/3*3)=n { if (n/5*5)=n { print “数n能同时被3和5整除” } } end (算法结束) 2)用N-S图表示 输入n n除以3的余数为0 n除以5的余数为0 是 否 是 否 n能同时 被3和5 整除 n不能同时 被3和5 整除 n不能同时 被3和5 整除 3)用流程图表示 n被3整除 开始 n不能同时被3和5整除 结束 N Y n被5整除 n能同时被3和5整除 N Y 输入n 4、编程题 1) #include void main() { printf("How are you!\n"); } 2) #include main() { int a,b,c,sum; printf("Input a,b,c please!\n"); 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=%d\n",sum); /*输出a和b积的结果值并换行 */ } 第3章 数据类型及其运算 3 习题 一、选择题 BADCD DCBCA 二、阅读程序,给出运行结果 1、7,8,10 2、1,3 3、 4、 4 61 57 9 112 三、编程题 1. (sin(sqrt(x*x)))/(a*b) 2. 5.5 3. 3 3 4. 3 5. #include void main() { char c; c = getchar(); printf("%c\n",c); printf("%d\n",c); } 6. #include int main() { float C,F; printf("请输入一个华氏温度:"); scanf("%f",&F); C = (5.0/9)*(F-32); printf("摄氏温度C=%5.2f\n",C); return 0; } 7. #include #include int main() { float a; a = exp(3.1415926); printf("%f\n",a); return 0; } 实验3 数据类型及其运算 二、实验内容 1.改错题 #include main() { int x,y; printf("请输入两个整数\n"); scanf("%d%d",&x,&y); printf("互换前的x:%d y:%d\n",x,y); x=x+y; y=x-y; x=x-y; printf("互换前的x:%d y:%d\n",x,y); } 2. 程序填空题 #include main() { int i1,i2,i3,i; printf("Please input i1,i2,i3: "); scanf("%d%d%d",&i1,&i2,&i3); i=i3; //i=i1; //i=i2; i3=i2; //i1=i3; //i2=i1; i2=i1; //i3=i2; //i1=i3; i1=i; //i2=i; //i3=i2; printf("i1=%d\ni2=%d\ni3=%d\n",i1,i2,i3); } 3.编程题 (1)从键盘输入3个大写英文字母,把它们转换成小写字母后输出。 该程序的运行结果: ABC abc #include main() { char c1,c2,c3; scanf("%c%c%c",&c1,&c2,&c3); c1=c1+32; c2=c2+32; c3=c3+32; printf("%c%c%c\n",c1,c2,c3); } (2)从键盘输入3个整数,输出它们的平均值与积。 该程序的运行结果: 请输入3个整数 2 4 6 ave=4.000000,ji=48 #include main() { int a,b,c,ji; float ave; printf("请输入3个整数\n"); scanf("%d%d%d",&a,&b,&c); ave=(a+b+c)/3.0; ji=a*b*c; printf("ave=%f,ji=%d\n",ave,ji); } 第4章 顺序结构程序设计 4 习题 一、选择题 BBCBC DCBDD 二、阅读程序,给出运行结果 1、 x=345 2、 a=1,b=3 y=3.460000 a=3,b=1 3、a=123,f=457 三、编程题 1. 2. 法一: #include Int main() { float x,xf; Int xi; Printf (“请输入一个实数:”); Scanf(“%f”,&x); Xi=(int)x; Xi=x-xi; Printf(“该数的整数部分为:%d\n”,xi); Printf(“该数的小数部分为:5f\n”,xf); Return 0; } 法二: #include double a,b; scanf("%lf",&a); b = a; long int p; p = (long int)a; printf("整数部分:%d\n",p); printf("小数部分:%lf",(b - p)); 3. 4. 5. #include void main( ) { float a, b ,h; float area; scanf("%f,%f,%f",&a,&b,&h); area=(a+b)*h/2; printf("梯形的面积为:%5.2f\n",area); } 实验4 顺序结构程序设计 二、实验内容 1.改错题 下列程序的功能为:按下列公式计算并输出x的值。其中a和b的值由键盘输入。纠正程序中存在的错误,以实现其功能。 该程序的运行结果: 4,6 x=0.480000 #include main() { int a,b; float x; scanf("%d,%d",a,b); scanf("%d,%d",&a,&b); x=2ab/(a+b)(a+b); x=2.0*a*b/((a+b)*(a+b)); printf("x=%d\n",x); printf("x=%f\n",x); } 2.程序填空题 下列程序的功能为:设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据r、h,输出计算结果,输出时要求有文字说明,取小数点后2位数字。(周长l=2,圆面积s=,圆球表面积sq=,圆球体积vq=;圆柱体积vz=),请补充完善程序,以实现其功能。 #include main() { float pi,h,r,ly,sy,sq,vq,vz; pi=3.1415926; printf("请输入圆半径r,圆柱高h:\n"); 该程序的运行结果: 请输入圆半径r,圆柱高h: 1.5 3 圆周长为:9.42 圆面积为:7.07 圆球表面积为:28.27 圆球体积为:14.14 圆柱体积为:21.21 scanf("%f%f",&r,&h); ly= 2*pi*r ; sy= pi*r*r ; sq= 4*pi*r*r; vq= 4.0/3*pi*r*r*r; vz= pi*h*r*r; printf("圆周长为:%.2f\n",ly); printf("圆面积为:%.2f\n", sy); printf("圆球表面积为:%.2f\n", sq); printf("圆球体积为:%.2f\n", vq); printf("圆柱体积为:%.2f\n", vz); } 3.编程题 (1)编写一个程序实现如下功能:从键盘输入3个字符,然后在屏幕上分3行输出该3个字符。 该程序的运行结果: ABC A B C #include main() { char c1,c2,c3; c1=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=2 x1=-1.00 x2=-2.00 . . . . . 法一: #include #include void main() {float a,b,c,disc,x1,x2,p,q; scanf("a=%f,b=%f,c=%f",&a,&b,&c); disc=b*b-4*a*c; p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf("x1=%5.2f\nx2=%5.2f\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"); else disc=b*b-4*a*c; if (disc<0) printf("无实根\n"); else if (disc==0) {p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf("有两个相同的实根\n"); printf("x1=%5.2f\nx2=%5.2f\n",x1,x2); } else {p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf("有两个不同的实根\n"); printf("x1=%5.2f\nx2=%5.2f\n",x1,x2); } } 第5章 选择结构程序设计 5 习题 一、选择题 BBCBB CBACB 二、阅读程序写出运行结果 1、-2 2、Yes 3、(1)2 (2)3 CC A=2,b=2,c=4 4、*& 5、5 3 2 三、编程题 1. #include intmain() { inta,b; //先判断a是否大于等于0,如果是的话a=b if(a>=0) { b=a; } //如果不是的话,先对a按位取反,然后再加一 else { b=~a; b=b+1; } cout< intmain(void) { intn; intstatus=1; while(status) { printf("输入:"); scanf("%d",&n); switch(n) { case0: printf("舞蹈\n"); break; case1: case3: printf("乒乓球\n"); break; case 2 case4: printf("篮球\n"); break; case5: printf("保龄球\n"); break; case6: printf("吉他\n"); break; default: status=0; } } return0; } 实验5 选择结构程序设计 二、实验内容 1.改错题 下列程序的功能为:输入3个整数后,输出其中最大值。请纠正程序中存在错误,使程序实现其功能。 该程序的运行结果: 请输入3个整数: 5 2 7 3个数中最大者为:7 #include "stdio.h" main() { int a,b,c,max; printf ("请输入3个整数:\n"); scanf ("%d%d%d",&a,&b,&c); max=a; if (c>b) { if (b>a) max=c;} /* c>b>a */ else /* b>c */ {if (c>a) max=b;} /* b>c>a */ printf("3个数中最大者为:%d\n",max); } 改正后的程序: #include "stdio.h" main() { int a,b,c,max; printf ("请输入3个整数:\n"); scanf ("%d%d%d",&a,&b,&c); max=a; if (c>b) { if (c>a) max=c;} else {if (b>a) max=b;} printf("3个数中最大者为:%d\n",max); 2. 程序填空题 #include main() { int 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=%d\n",a,b,d); break; case -: d=a-b; printf("%d-%d=%d\n",a,b,d); break; case *: d=a*b;printf("%d*%d=%d\n",a,b,d); break; case /: if (b==0) printf("Divisor is zero\n"); else printf("%d/%d=%f\n",a,b,(float)a/b); /* 强制类型转换*/ break; default : printf("Input Operator error!\n"); } } 3.编程题 (1)#include main() { int a,b,c,max,min; float sum,d,e; printf("请输入三个数:"); scanf("%d%d%d",&a,&b,&c); sum=a+b+c; d=sum/3; e=a*b*c; if(a>b) {max=a;min=b;} else {max=b;min=b;} if(maxc) min=c; printf("三个数的和%.1f\n",sum); printf("三个数的平均值%.2f\n",d); printf("三个数的积%.1f\n",e); printf("三个数中最大值是%d\n",max); printf("三个数中最小值是%d\n",min); } (2) #include void main() { float x,y; scanf("%f",&x); if(x<5) y=1-x*x*x; else if(x<=15&&x>=5) y=x-1; else y=2*x*x-1; printf("x=%0f,y=%0f\n",x,y); } (3) #include void main() { int a; printf("input integer number:"); scanf("%d",&a); switch(a) { case 0:printf("Sunday\n");break; case 1:printf("Monday\n");break; case 2:printf("Tuesday\n");break; case 3:printf("Wednesday\n");break; case 4:printf("Thursday\n");break; case 5:printf("Friday\n");break; case 6:printf("Saturday\n");break; default:printf("error\n"); } } 第6章 循环结构程序设计 6 习题 一、选择题 BCDDA BDBAB BC 二、阅读程序写出运行结果 1、______3,4________ 2、_____6_____ 3、___##___ 4、___02____ 5、___18_____ 6、_____1______ 7、___80____ 8、___输出一行中含大写或小写字母个数中的大者数________ 9、 1)5次 21 2 2) 2次 13 6 4 4 3)外循环2次,内2层循环累计3次,内3层循环累计5次 28 4)外循环3次,内循环累计4次 -1 -10 5 三、编程题 略 实验6 循环结构程序设计 二、实验内容 1.改错题 下列程序的功能为:倒序打印26个英文字母。纠正程序中存在的错误,以实现其功能。 #include main() { char x; x=z; while(x!=a) while(x!=a-1)或while(x>=a) { printf("%3d",x); printf("%3c",x); x++; x- -; } } 2. 程序填空题 1) #include main() { int day,x1,x2; day=0; x1=1020; while (x1) { X2=x1/2-2; X1=x2; day++; } printf(“day=%d\n”,day); } 2) #include #include main() { int i,left,right;char cc[80]; printf("输入一个算术表达式\n"); gets(cc); left = 0;right = 0;//left和right分别代表统计的左右括号数 for(i=0;i<(int)strlen(cc);i++){ if( cc[i]==( ) left++; if( cc[i]==) ) right++; if( right>left ) break; } if (left==right) printf("圆括号配对正确\n"); else printf("圆括号配对不正确\n"); } 三、编程题 (1)计算1~100之间所有含8的数之和。 参考程序: #include main() { int i, sum=0; for(i=1; i<=100; i++) if(i%10==8 || i/10==8) sum+=i; printf("sum=%d\n",sum); } (2)编写程序,利用下列近似公式计算e值,误差应小于10-5。 … 参考程序: #include main() { int i=0 ; long n=1; float e=0, t=1; while(t>1e-5) { e+=t; i++; n*=i; t=1.0/n; } printf("e=%f\n",e); } (3)某学校有近千名学生,在操场上排队,若5人一行余2人,7人一行余3人,3人一行余1人。编写程序,求该校的学生总人数。 参考程序: #include main() {int i; for(i=900;i<=1000;i++) if(i%5==2&&i%7==3&&i%3==1) break; printf("学生总人数=%d\n",i); } (4)从键盘输入N个学生的学号和每人M门课程的成绩,计算每个学生的总分及平均分。输出内容包括每个学生的学号、总分和平均分。 #include void main() { int i,j,n,m,no,score,sum; float ave; printf("输入学生数和每人课程数:"); scanf("%d%d",&n,&m); for(i=1;i<=n;i++) { sum=0; printf("输入第%d个学生的学号: ",i); scanf("%d",&no); printf("输入第%d个学生的%d门课程成绩: ",i,m); for(j=1;j<=m;j++) { scanf("%d",&score); sum+=score; } ave=(float)sum/m; printf("\n**第%d个学生的学号为:%d 总分为:%d 平均分为:%.2f\n\n",i,no,sum,ave); } } 第7章 数组及其应用 7 习题 一、选择题 DACBC ABDBD 二、阅读程序写出运行结果 1、______4______ 2、____ Tony _____ 3、____ max=85,min=5,sum=180,aver=30.0_____________ 4、____ a=2 b=2 c=2 d=2 e=1 f=2 g=2____ 5、____j=45_____ 三、编程题 1.略 2. #include intmain() { inta[10];//用来存数据 inti,j,temp; for(i=0;i<10;i++)//输入10个数。 scanf("%d",&a[i]); for(j=0;j<9;j++)//标准冒泡法排序 for(i=0;i<9-j;i++) { if(a[i]>a[i+1]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } } for(i=0;i<10;i++)//输出。 printf("%d,",&a[i]); printf("\n"); return0; } 实验7 数组及其应用 二、实验内容 1.改错题 #include void main() { char a[8]="wel",b[]="come"; int i,n=0; while (a[n]) n++; for(i=0;b[i]!=\0;i++) a[n+i]=b[i]; a[n+i]=\0; //n=0; //while (a[n]) {putchar(a[n]);n++;} printf("%s\n",a); } 2. 程序填空题 #include #include void main() { char string[20],str[3][20]; int i; for (i=0;i<3;i++) gets(str[i]); if (str
展开阅读全文
提示  得力文库 - 分享文档赚钱的网站所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:汇编C语言学习知识-程序设计教育教程教案资料汇总(机械工业出版社钱雪忠吕莹楠).doc
链接地址:https://www.deliwenku.com/p-2611272.html
关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

本站为文档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  

收起
展开