西南大学19年12月C语言程序设计【0039】大作业答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(c)程序必须有输入输出提示。
3. 依据下列提供的程序回答问题
#include <stdio.h>
int f(int m,int n)
{ int r;
while(r=m%n)
{ m=n; n=r; }
return(n);
}
int main()
{ int int_num1, int_num2;
printf("请输入两个正的整数(之间用逗号隔开):\n ");
scanf("%d,%d",&int_num1,&int_num2);
printf("int_num1= %d,int_num2= %d\n",int_num1,int_num2);
printf("The maximun common divisor is %d\n",f(int_num1,int_num2));
}
(1)上述提供程序中,函数f的功能是什么?
答:函数f的功能是求两个数的最大公约数。
(2)请依据提供的函数f代码所表示的算法内涵画出其中的传统流程图或N-S图或采用自然语言描述fun代码所表示的算法。
答:辗转相除法(欧几里德法) C语言中用于计算两个正整数a,b的最大公约数,采用函数嵌套调用形式进行求两个数的最大公约数。
其算法过程为:
前提:设两数为a,b设其中a做被除数,b做除数,temp为余数
Steps:大数放a中,小数放b中;
求a/b的余数;
若temp=0则b为最大公约数;
如果temp!=0则把b的值给a,temp的值给a;
返回第二步。
流程图:(3)在VC6.0环境下,运行上述程序时,若输入的数据序列为36,48其输出结果是什么?答:输出结果如下
int_num1= 36,int_num2= 48
The maximun common divisor is 12
二、大作业要求
大作业共需要完成3个大题:
第1题,满分30分;
第2题(1)-(5)任选两题完成,各15分,(6)题必做,10分,满分40分;
第3题(1)-(3)必做,满分30分。