西工大C语言大作业习题答案Word文件下载.docx
《西工大C语言大作业习题答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《西工大C语言大作业习题答案Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
![西工大C语言大作业习题答案Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-10/29/619f0ee6-8740-4f6c-87af-a34d6c8305f3/619f0ee6-8740-4f6c-87af-a34d6c8305f31.gif)
math.h>
voidmain()
{
doubley;
intx,m;
for(y=1;
y>
=-1;
y-=0.1)
m=acos(y)*10;
for(x=1;
x<
m;
x++)printf("
"
);
printf("
*"
for(;
62-m;
x++)printf("
*\\n"
}
no2.绘制余弦曲线和直线
在屏幕上显示0~360度的cos(x)曲线与直线f(x)=45*(y-1)+31的迭加图形。
其中cos(x)图形用“*”表示,f(x)用“+”表示,在两个图形相交的点上则用f(x)图形的符号。
本题可以在上题的基础上进行修改。
图形迭加的关键是要在分别计算出同一行中两个图形的列方向点坐标后,正确判断相互的位置关系。
为此,可以先判断图形的交点,再分别控制打印两个不同的图形。
*程序注释与说明
intx,m,n,yy;
for(yy=0;
yy<
=20;
yy++)
y=0.1*yy;
m=acos(1-y)*10;
n=45*(y-1)+31;
for(x=0;
=62;
x++)
if(x==m&
&
x==n)printf("
+"
elseif(x==n)printf("
elseif(x==m||x==62-m)printf("
else
\\n"
--------------------------------------------------------------------------------
no3.绘制圆
在屏幕上用“*”画一个空心的圆
打印圆可利用图形的左右对称性。
根据圆的方程:
R*R=X*X+Y*Y
可以算出圆上每一点行和列的对应关系。
for(y=10;
=-10;
y--)
m=2.5*sqrt(100-y*y);
30-m;
30+m;
no4.歌星大奖赛
在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。
选手最后得分为:
去掉一个最高分和一个最低分后其余8个分数的平均值。
请编写一个程序实现。
*问题分析与算法实现
这个问题的算法十分简单,但是要注意在程序中判断最大、最小值的变量是如何赋值的。
intinteger,i,max,min,sum;
max=-32768;
min=32767;
sum=0;
for(i=1;
i<
=10;
i++)
Inputnumber%d="
i);
scanf("
%d"
&
integer);
sum+=integer;
if(integer>
max)max=integer;
if(integer<
min)min=integer;
Canceledmaxscore:
%d\\nCanceledminscore:
%d\\n"
max,min);
Averagescore:
(sum-max-min)/8);
*运行结果
Inputnumber1=90
Inputnumber2=91
Inputnumber3=93
Inputnumber4=94
Inputnumber5=90
Inputnumber6=99
Inputnumber7=97
Inputnumber8=92
Inputnumber9=91
Inputnumber10=95
99
Canceledminscore:
90
92
*思考题
题目条件不变,但考虑同时对评委评分进行裁判,即在10个评委中找出最公平(即评分最接返平均分)和最不公平(即与平均分的差距最大)的评委,程序应该怎样实现?
no5.求最大数
问555555的约数中最大的三位数是多少?
根据约数的定义,对于一个整数N,除去1和它自身外,凡能整除N的数即为N的约数。
因此,最简单的方法是用2到N-1之间的所有数去除N,即可求出N的全部约数。
本题只要求取约数中最大的三位数,则其取值范围可限制在100到999之间。
longi;
intj;
Pleaseinputnumber:
"
%ld"
i);
for(j=999;
j>
=100;
j--)
if(i%j==0)
Themaxfactorwith3digitsin%ldis:
%d,\\n"
i,j);
break;
输入:
555555
输出:
Themaxfactorwith3digitsin555555is:
777
no6.高次方数的尾数
求13的13次方的最后三位数
解本题最直接的方法是:
将13累乘13次方截取最后三位即可。
但是由于计算机所能表示的整数范围有限,用这种“正确”的算法不可能得到正确的结果。
事实上,题目仅要求最后三位的值,完全没有必要求13的13次方的完整结果。
研究乘法的规律发现:
乘积的最后三位的值只与乘数和被乘数的后三位有关,与乘数和被乘数的高位无关。
利用这一规律,可以大大简化程序。
inti,x,y,last=1;
InputXandY(X**Y):
%d**%d"
x,&
y);
=y;
i++)
last=last*x%1000;
Thelast3digitsof%d**%dis:
x,y,last%1000);
13**13
Thelast3digitsof13**13is:
253
13**20
Thelast3digitsof13**20is:
801
no8.借书方案知多少
小明有五本新书,要借给A,B,C三位小朋友,若每人每次只能借一本,则可以有多少种不同的借法?
本问题实际上是一个排列问题,即求从5个中取3个进行排列的方法的总数。
首先对五本书从1至5进行编号,然后使用穷举的方法。
假设三个人分别借这五本书中的一本,当三个人所借的书的编号都不相同时,就是满足题意的一种借阅方法。
inta,b,c,count=0;
TherearediffrentmethodsforXMtodistributebooksto3readers:
for(a=1;
a<
=5;
a++)
for(b=1;
b<
b++)
for(c=1;
a!
=b&
c<
c++)