大连理工程序设计-第3次上机作业

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

相关文档
最新文档