大连理工程序设计第3次上机作业.docx
《大连理工程序设计第3次上机作业.docx》由会员分享,可在线阅读,更多相关《大连理工程序设计第3次上机作业.docx(10页珍藏版)》请在冰豆网上搜索。
大连理工程序设计第3次上机作业
1.
题目描述:
编写函数,计算表达式卜戸沁上胡的值(;1三玄此),形参n的值由主程序输入
并传递,函数返回值为s.
题目分析:
主函数用循环语句计算各阶层之和,调用函数factorial^ntx),用循环语句计算每
个阶层。
流程图:
开始
定义n,s,k,m;
用scanf输入n
循环语句计算各阶层之和
调用factorial^ntx)函数
用循环语句计算每个阶层
返回t值
程序代码:
#include<>voidmain()
{
intfactorial(intx);
intn,s,k,m;
s=0;
scanf("%d",&n);
for(k=1;k<=n;k++)
{
m=factorial(k);s+=m;
}
printf("%d\n",s);
intfactorial(intx)
{
intt,i;
t=1;
for(i=1;i<=x;i++)
t*=i;
return(t);
}
程序截屏:
其加密方法为:
(1)将该数每一位上的数字加9,然后除以10取余,作为该位上的新数字,
(2).将第1位和第3位上的数字互换,第2位和第4位上的数字互换,组成加密后的新数。
题目分析:
主函数输入n,并打出结果。
调用intencrypt(intn)函数,在intencrypt(intn)函数里用公式将原密码加密,并返回加密后的值。
流程图:
开始
定义a,b;
用scanf输入a
调用intencrypt(intn)函数
factorial(intx)函数
用公式将原密码加密
返回n值
主函数用printf打出结果
结束
程序代码:
#include<>
voidmain()
{
intencrypt(intn);
inta,b;
scanf("%d",&a);
b=encrypt(a);
printf("Theencryptednumberis%d\n”,b);
}
intencrypt(intn)
inti,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;returnn;
}
S3
程序截屏:
*T:
'-ProgramFIf趴!
/licro丹ftVsualic\MyProjbug\2eifp
1257
Theenci'iiptedflunheris4601
Pressaflsikeytocontim.ie
题目描述:
编写数字加密函数intdecrypt(intn),其输入为一个使用encrypt函数加密后
的四位数,返回为解密后的数。
题目分析:
主函数输入n,并打出结果。
调用intdecrypt(intn)函数,在intdecrypt(intn)函数里用公式将原密码解密,并返回解密后的值。
流程图:
开始
定义a,b;
用scanf输入a
调用intencrypt(intn)函数
factorial(intx)函数
用公式将原密码解密
返回n值
主函数用printf打出结果
结束
程序代码:
#include<>
voidmain()
{
intdecrypt(intn);
inta,b;
scanf("%d",&a);
b=decrypt(a);
printf("Thedecryptednumberis%d\n”,b);
}
intdecrypt(intn)
inti,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;
returnn;
}
程序截屏:
3.
题目描述:
钟面上的时针和分针之间的夹角随着时间的不同而变化。
举例来说,在十二点的
时候两针之间的夹角为0,而在六点的时候夹角为180度(时针和分针有两个夹角,其中较小的为准)。
本题首先要编写函数来计算12:
00到11:
59之间任意一个时间的时针和分针的夹角,并
利用此函数算出在什么时间二者的夹角达到最大(精确到分钟)。
计算夹角的函数angle(inth,intm)有两个输入,第一个数字代表小时(大于0小于等于
12),第二个数字代表分(在区间[0,59]上)。
其输出为该时刻时针和分针间的最小夹
角。
题目分析:
主函数为时间的输入,并进行循环,循环直到输出最大角度。
调用angle(inth,int
m)函数,运用公式计算角度,返回值到主函数。
最后输出结果。
流程图:
开始
定义a,b,t;
用for循环内嵌for循环
调用angle(inth,intm)函数
用公式计算角度
返回t值
主函数用printf打出结果
结束
程序代码:
#include<>
main()
{
intangle(inth,intm);
inta=1,b=0,t;
for(a=12;a>=1;a--)
{
for(b=0;b<=59;b++)
{
t=angle(a,b);
if(t==180)
gotoA;
}
}
A:
printf("时针和分针在:
%d:
%d时夹角最大,其夹角为:
%d\n",a,b,t);
}
angle(inth,intm)
{
intt;
t=h*30+m/2-m*6;
if(t<0)
t=0-t;
else
{
if(t>180)
t=360-t;
}
return(t);
程序截屏:
E云
4.
题目描述:
在小学时我们就学习了分数的四则运算,即对两个分数进行加、减、乘、除等运算,要求用C语言编写4个分数的函数来实现四则运算。
题目分析:
先用scanf输入运算式,再用switch函数根据符号的不同计算不同结果。
最后再想办法将结果化简。
流程图:
开始
定义a,b,c,d,x,y,i,p,q,op
用print输入分数运算式
用switch语句列不同表达式
在不同情况里求解不
同x,y
用if,while语句化简结果
用printf打出结果
程序代码:
#include<>voidmain()
{
inta,b,c,d,x,y,i,p,q;
charop;
printf("输入分数运算式:
");
A:
scanf("%d/%d%c%d/%d",&a,&b,&op,&c,&d);
if(b==0||d==0)
{
printf("分母不能为0,请重新输入:
");gotoA;
}
switch(op)
{case'+':
x=a*d+c*b;y=b*d;break;
case'-':
x=a*d-c*b;y=b*d;break;
case'*':
x=a*c;y=b*d;break;
case'/':
x=a*d;y=b*c;break;
}
if(x>y)
{p=x;q=y;}
else
{p=y;q=x;}
while(q!
=0)
{i=p%q;
p=q;
q=i;
}
x=x/p;y=y/p;
printf("%d/%d%c%d/%d=%d/%d\n",a,b,op,c,d,x,y);
}