新编C语言程序设计教程 机械工业出版社 钱雪忠 吕莹楠.docx
- 文档编号:26416533
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:51
- 大小:36.82KB
新编C语言程序设计教程 机械工业出版社 钱雪忠 吕莹楠.docx
《新编C语言程序设计教程 机械工业出版社 钱雪忠 吕莹楠.docx》由会员分享,可在线阅读,更多相关《新编C语言程序设计教程 机械工业出版社 钱雪忠 吕莹楠.docx(51页珍藏版)》请在冰豆网上搜索。
新编C语言程序设计教程机械工业出版社钱雪忠吕莹楠
新编C语言程序设计教程
习题及实验题部分答案
第1章C语言概述
1习题
一、选择题
ADCDBCCBBA
二、简答题
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语言函数通常由函数首部(如intmax(inta,intb))、函数体组成。
函数体一般又由局部变量定义与函数声明等组成的定义与声明部分、程序执行语句等组成的执行部分这两部分组成的(如min函数所示)。
第2章结构化程序设计与算法
2习题
一、选择题
BCDCDCBCAD
二、简答题
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()
{
intx=2,y=3,a;
a=x-y;
printf("a=%d",a);
printf("\n");/*换行*/
}
2、程序填空题
#include
main()
{
inta,b,m;
printf("Inputa,bplease!
\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(算法开始)
inputn
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
整除
n被3整除
开始
n不能同时被3和5整除
结束
N
Y
n被5整除
n能同时被3和5整除
N
Y
输入n
3)用流程图表示
4、编程题
1)
#include
voidmain()
{
printf("Howareyou!
\n");
}
2)
#include
main()
{
inta,b,c,sum;
printf("Inputa,b,cplease!
\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习题
一、选择题
BADCDDCBCA
二、阅读程序,给出运行结果
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.33
4.3
5.#include
voidmain()
{
charc;
c=getchar();
printf("%c\n",c);
printf("%d\n",c);
}
6.#include
intmain()
{
floatC,F;
printf("请输入一个华氏温度:
");
scanf("%f",&F);
C=(5.0/9)*(F-32);
printf("摄氏温度C=%5.2f\n",C);
return0;
}
7.#include
#include
intmain()
{
floata;
a=exp(3.1415926);
printf("%f\n",a);
return0;
}
实验3数据类型及其运算
二、实验内容
1.改错题
#include
main()
{
intx,y;
printf("请输入两个整数\n");
scanf("%d%d",&x,&y);
printf("互换前的x:
%dy:
%d\n",x,y);
x=x+y;
y=x-y;
x=x-y;
printf("互换前的x:
%dy:
%d\n",x,y);
}
2.程序填空题
#include
main()
{
inti1,i2,i3,i;
printf("Pleaseinputi1,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()
{
charc1,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个整数
246
ave=4.000000,ji=48
#include
main()
{
inta,b,c,ji;
floatave;
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习题
一、选择题
BBCBCDCBDD
二、阅读程序,给出运行结果
1、x=3452、a=1,b=3
y=3.460000a=3,b=1
3、a=123,f=457
三、编程题
1.
2.法一:
#include
Intmain()
{floatx,xf;
Intxi;
Printf(“请输入一个实数:
”);
Scanf(“%f”,&x);
Xi=(int)x;
Xi=x-xi;
Printf(“该数的整数部分为:
%d\n”,xi);
Printf(“该数的小数部分为:
5f\n”,xf);
Return0;
}
法二:
#include
doublea,b;scanf("%lf",&a);b=a;longintp;p=(longint)a;printf("整数部分:
%d\n",p);printf("小数部分:
%lf",(b-p));
3.
4.
5.#include
%5.2f\n",area);}
实验4顺序结构程序设计
二、实验内容
1.改错题
下列程序的功能为:
按下列公式计算并输出x的值。
其中a和b的值由键盘输入。
纠正程序中存在的错误,以实现其功能。
该程序的运行结果:
4,6
x=0.480000
#include
main()
{inta,b;
floatx;
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()
{
floatpi,h,r,ly,sy,sq,vq,vz;
pi=3.1415926;
printf("请输入圆半径r,圆柱高h:
\n");
该程序的运行结果:
请输入圆半径r,圆柱高h:
1.53
圆周长为:
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()
{
charc1,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
voidmain()
{floata,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
voidmain()
{floata,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习题
一、选择题
BBCBBCBACB
二、阅读程序写出运行结果
1、-22、Yes
3、
(1)2
(2)3
CC
A=2,b=2,c=4
4、*&5、5
3
2
三、编程题
1.#include
int?
main()
{
?
?
int?
a,b;
?
//先判断a是否大于等于0,如果是的话a=b
?
?
if?
(a>=0)
?
?
?
{
?
?
?
b=a;
?
?
}
?
?
//如果不是的话,先对a按位取反,然后再加一
?
?
else
?
?
{
?
?
?
b=~a;
?
?
b=b+1;
?
?
}
cout<
?
?
getchar();
}
2.略
3.#include
int?
main(void)
{
?
?
?
?
int?
n;
?
?
?
?
int?
status=1;
?
?
?
?
while(status)
?
?
?
?
{
?
?
?
?
?
?
?
?
printf("输入:
");
?
?
?
?
?
?
?
?
scanf("%d",&n);
?
?
?
?
?
?
?
?
switch?
(n)
?
?
?
?
?
?
?
?
{
?
?
?
?
?
?
?
?
case?
0:
?
?
?
?
?
?
?
?
?
?
?
?
printf("舞蹈\n");
?
?
?
?
?
?
?
?
?
?
?
?
break;
?
?
?
?
?
?
?
?
case?
1:
?
?
?
?
?
?
?
?
case?
3:
?
?
?
?
?
?
?
?
?
?
?
?
printf("乒乓球\n");
?
?
?
?
?
?
?
?
?
?
?
?
break;
case2
?
?
?
?
?
?
?
?
case?
4:
?
?
?
?
?
?
?
?
?
?
?
?
printf("篮球\n");
?
?
?
?
?
?
?
?
?
?
?
?
break;
?
?
?
?
?
?
?
?
case?
5:
?
?
?
?
?
?
?
?
?
?
?
?
printf("保龄球\n");
?
?
?
?
?
?
?
?
?
?
?
?
break;
?
?
?
?
?
?
?
?
case?
6:
?
?
?
?
?
?
?
?
?
?
?
?
printf("吉他\n");
?
?
?
?
?
?
?
?
?
?
?
?
break;
?
?
?
?
?
?
?
?
default:
?
?
?
?
?
?
?
?
?
?
?
?
status=0;
?
?
?
?
?
?
?
?
}
?
?
?
?
}
?
?
?
?
return?
0;
}
实验5选择结构程序设计
二、实验内容
1.改错题
下列程序的功能为:
输入3个整数后,输出其中最大值。
请纠正程序中存在错误,使程序实现其功能。
该程序的运行结果:
请输入3个整数:
527
3个数中最大者为:
7
#include"stdio.h"
main()
{
inta,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()
{
inta,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()
{
inta,b,d;
charch;
printf("Pleaseinputaexpression:
");
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("Divisoriszero\n");
elseprintf("%d/%d=%f\n",a,b,(float)a/b);/*强制类型转换*/
break;
default:
printf("InputOperatorerror!
\n");
}
}
3.编程题
(1)#include
main()
{
inta,b,c,max,min;
floatsum,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(max max=c; else if(min>c) min=c; printf("三个数的和%.1f\n",sum); printf("三个数的平均值%.2f\n",d); printf("三个数的积%.1f\n",e); printf("三个数中最大值是%d\n",max); printf("三个数中最小值是%d\n",min); } (2) #include voidmain() { floatx,y; scanf("%f",&x); if(x<5)y=1-x*x*x; elseif(x<=15&&x>=5)y=x-1; elsey=2*x*x-1; printf("x=%0f,y=%0f\n",x,y); } (3) #in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 新编C语言程序设计教程 机械工业出版社 钱雪忠 吕莹楠 新编 语言程序设计 教程 机械工业 出版社