1、大连理工程序设计第3次上机作业1.题目描述:编写函数,计算表达式 卜戸沁上胡 的值(;1三玄此),形参n的值由主程序输入并传递,函数返回值为 s.题目分析:主函数用循环语句计算各阶层之和, 调用函数factorialnt x),用循环语句计算每个阶层。流程图:开始定义 n,s,k,m;用scanf输入n循环语句计算各阶层之和调用 factorialnt x)函数用循环语句计算每个阶层返回t值程序代码:#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=factor
2、ial(k); s+=m;prin tf(%dn,s);int factorial( int x)int t,i;t=1;for(i=1;i=x;i+)t*=i;return(t);程序截屏:其加密方法为:(1) 将该数每一位上的数字加 9,然后除以10取余,作为该位上的新数字,(2) .将第1位和第3位上的数字互换,第 2位和第4位上的数字互换,组成加密后的新 数。题目分析:主函数输入n,并打出结果。调用int encrypt(int n)函数,在int encrypt(int n)函数里用公式将 原密码加密,并返回加密后的值。流程图:开始定义a,b;用scanf输入a调用 int encr
3、ypt(int n)函数factorial(int x)函数用公式将原密码加密返回n值主函数用printf打出结果结束程序代码:#in cludevoid 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 %dn ”,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)%1
4、0;n =j*1000+i*100+q*10+p; return n;S3程序截屏:* T:-Pro gram F If 趴!/licro 丹 ft V sual i c My P roj bu g2 eifp1257The enciiipted flunher is 4601Press aflsi key to contim.ie题目描述: 编写数字加密函数 int decrypt(int n),其输入为一个使用 encrypt函数加密后的四位数,返回为解密后的数。题目分析:主函数输入 n,并打出结果。调用int decrypt(int n)函数,在int decrypt(int n)函数
5、里用公式将原密码解密,并返回解密后的值。流程图:开始定义a,b;用scanf输入a调用 int encrypt(int n)函数factorial(int x)函数用公式将原密码解密返回n值主函数用printf打出结果结束程序代码:#in cludevoid mai n()int decrypt(i nt n);int a,b;scan f(%d,&a);b=decrypt(a);prin tf(The decrypted nu mber is %dn ”,b);int decrypt(i nt n)int i,j,p,q;i=n%10;j=n%100/10;p=n %1000/100;q=n
6、/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),
7、第二个数字代表分 (在区间0, 59上)。其输出为该时刻时针和分针间的最小夹角。题目分析:主函数为时间的输入,并进行循环,循环直到输出最大角度。调用 an gle(i nt h,i ntm)函数,运用公式计算角度,返回值到主函数。最后输出结果。流程图:开始定义a,b,t;用for循环内嵌for循环调用 angle(int h,int m)函数用公式计算角度返回t值主函数用printf打出结果结束程序代码:#in cludemain ()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(
8、a,b);if(t=180)goto A;A: printf( 时针和分针在 :%d:%d 时夹角最大 ,其夹角为 :%dn,a,b,t);angle(int h,int m )int t;t=h*30+m/ 2-m*6;if(t180)t=360-t;return(t);程序截屏:E 云4.题目描述:在小学时我们就学习了分数的四则运算,即对两个分数进行加、减、乘、除等运 算,要求用C语言编写4个分数的函数来实现四则运算。题目分析:先用scanf输入运算式,再用 switch函数根据符号的不同计算不同结果。最后再 想办法将结果化简。流程图:开始定义 a,b,c,d,x,y,i,p,q, op用
9、print输入分数运算式用switch语句列不同表达式在不同情况里求解不同x,y用if,while语句化简结果用printf打出结果程序代码:#include void main()int a,b,c,d,x,y,i,p,q;char op;printf( 输入分数运算式 :);A: scanf(%d/%d%c%d/%d,&a,&b,&op,&c,&d);if(b=0|d=0)printf( 分母不能为 0,请重新输入 :); goto A;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(xy)p=x;q=y;elsep=y;q=x;while(q!=0) i=p%q;p=q;q=i;x=x/p;y=y/p;prin tf(%d/%d%c%d/%d=%d/%dn,a,b,op,c,d,x,y);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1