大连理工程序设计-第3次上机作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.
题目描述:编写函数,计算表达式卜戸沁上胡的值(;1三玄此),形参n的值由主程序输入并传递,函数返回值为s.
题目分析:主函数用循环语句计算各阶层之和,调用函数factorial^nt x),用循环语句计算每
个阶层。
流程图:
程序代码:
#in clude<> void mai n()
{
int factorial( int x);
int n,s,k,m;
s=0;
scan f("%d",&n);
for(k=1;k<=n ;k++)
{
m=factorial(k); s+=m;
}
prin tf("%d\n",s);
int factorial( int x)
{
int t,i;
t=1;
for(i=1;i<=x;i++)
t*=i;
return(t);
}
程序截屏:
题目描述:编写数字加密函数int en crypt(i nt n).其输入为一个四位数,返回为加密后的数。
其加密方法为:
(1)将该数每一位上的数字加9,然后除以10取余,作为该位上的新数字,
(2).将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。
题目分析:
主函数输入n,并打出结果。调用int encrypt(int n)函数,在int encrypt(int n)函数里用公式将原密码加密,并返回加密后的值。
流程图:
程序代码:
#in clude<>
void mai n()
{
int en crypt(i nt n);
int a,b;
scan f("%d",&a);
b=e ncrypt(a);
prin tf("The en crypted nu mber is %d\n ”,b);
}
int en crypt(i nt n)
int i,j,p,q;
i=n%10;
j=n%100/10;
p=n %1000/100;
q=n/1000;
i=(i+9)%10;
j=(j+9)%10;
p=(p+9)%10;
q=(q+9)%10;
n =j*1000+i*100+q*10+p; return n; }
程序截屏:
k
题目描述:编写数字加密函数int decrypt(int n),其输入为一个使用encrypt函数加密后
的四位数,返回为解密后的数。
题目分析:主函数输入n,并打出结果。调用int decrypt(int n)函数,在int decrypt(int n)函数里用公式将原密码解密,并返回解密后的值。
流程图:
程序代码:
#in clude<>
void mai n()
{
int decrypt(i nt n);
int a,b;
scan f("%d",&a);
b=decrypt(a);
prin tf("The decrypted nu mber is %d\n ”,b);
}
int decrypt(i nt n)
int i,j,p,q;
i=n%10;
j=n%100/10;
p=n %1000/100;
q=n/1000;
i=i+10-9;
j=j+10-9;
p=p+10-9;
q=q+10-9;
n =j*1000+i*100+q*10+p;
return n;
}
程序截屏:
3.
题目描述:钟面上的时针和分针之间的夹角随着时间的不同而变化。举例来说,在十二点的时候两针之间的夹角为0,而在六点的时候夹角为180度(时针和分针有两个夹角,其中较小的为准)。
本题首先要编写函数来计算12:00到11:59之间任意一个时间的时针和分针的夹角,并利用此函数算出在什么时间二者的夹角达到最大(精确到分钟)。
计算夹角的函数angle(int h,int m)有两个输入,第一个数字代表小时(大于0小于等于12),第二个数字代表分(在区间[0, 59]上)。其输出为该时刻时针和分针间的最小夹
角。
题目分析:主函数为时间的输入,并进行循环,循环直到输出最大角度。调用an gle(i nt h,i nt
m)函数,运用公式计算角度,返回值到主函数。最后输出结果。
流程图:
开始
调用angle(int h,int m)函数
用公式计算角度
返回t值
主函数用printf打出结果
结束
程序代码:
#in clude<>
main ()
{
int an gle(i nt h,i nt
m);
int a=1,b=0,t;
for(a=12;a>=1;a--)
{
for(b=0;b<=59;b++)
{
t=angle(a,b);
if(t==180)
goto A;
}
}
A: printf(" 时针和分针在:%d:%d 时夹角最大,其夹角为:%d\n",a,b,t); }
angle(int h,int m )
{
int t;
t=h*30+m/ 2-m*6;
if(t<0)
t=0-t;
else
{
if(t>180)
t=360-t;
}
return(t);