while(m%j!
=0||n%j!
=0)j--;
●主函数main():
输入m和n,调用函数gys(m,n)求最大公约数,最后输出结果。
用类for语句表示如下:
【调试、运行程序】:
运行结果:
输入两个正整数m和n:
1824
18与24的最大公约数是6
【源程序代码截屏】:
【运行结果截屏】:
4、【程序模仿】程序功能:
输入两个正整数m和n,求m和n的最小公倍数。
要求:
定义并调用函数gbs(m,n)求m和n的最小公倍数。
【打开“第4”题文件夹中名为proj5_4.c文件,阅读完善程序并保存】:
【解题提示】:
认真阅读并理解第3题的解题思路和程序清单,思考以下几个问题,寻找本题的解题方法。
A.子函数gby的设计:
设置变量j代表m和n的最小公倍数,其初值等于m和n中较大数,然后循环检查j是否能同时整除m和n,若不能,则将j递加m与n的较大数,继续检查,直到j能同时整除m和n为止,此时j就是最小公倍数。
B.子函数循环语句选择问题?
选择for、while还是do-while。
【源程序代码截屏】:
【运行结果截屏】:
5、【程序示例】程序功能:
输入一个正整数n,如果它是素数,输出"YES",否则,输出"NO"(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。
要求定义并调用函数prime(n)判断n是否为素数。
【打开“第5题”文件夹中名为proj5_5.c文件,阅读完善程序并保存】:
【解题思路】:
A.本题要求采用主函数调用子函数的程序结构。
主函数调用子函数返回判定结果。
子函数判定整数n是否素数并返回判定结果。
B.从输出结果程序段if语句中的条件“flag==1”可知,flag是标志变量,1代表素数,0代表非素数。
C.函数设计:
●子函数prime:
判定整数n是否素数并返回判定结果。
✧函数返回值类型:
int型。
✧函数参数:
一个int型参数,代表要判定是否素数的整数。
✧函数体:
判定整数n是否素数并返回判定结果。
算法步骤如下:
a)设置变量flag的初值,若n是1,则将flag初值置0,表示n不是素数,否则,将flag初值置1。
b)循环检查n能否被[2,n/2]间的整数整除,若都不能整除,则n是素数,否则n非素数,将flag置0并退出循环。
由于循环次数已知,选用for语句。
用类for语句表示如下:
if(n==1)flag=0;elseflag=1;
for(i=2;i<=n/2;i++)
if(n%i==0){flag=0;break;}
c)返回flag。
●主函数main():
输入n,调用子函数prime(n)返回判定结果,最后根据返回值输出结果。
【完善的程序段】:
/*请在两条星线之间填入相应的代码,声明prime函数*/
/************************************************/
intprime(intn);
/************************************************/
/*请在两条星线之间填入相应的代码,调用函数prime判定n是否是素数*/
/****************************************************************/
flag=prime(n);
/****************************************************************/
/*请在两条星线之间填入相应的代码,判定n是否是素数*/
/*****************************************************/
if(n==1)flag=0;elseflag=1;
for(i=2;i<=n/2;i++)
if(n%i==0){flag=0;break;}
/*****************************************************/
【调试、运行程序】:
运行结果:
输入一个正整数:
6NO
输入一个正整数:
29YES
【源程序代码截屏】:
【运行结果截屏】:
6、【程序模仿】程序功能:
输入两个正整数m和n(1<=m<=n<=500),统计并输出m到n之间的素数个数以及这些素数和(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。
要求定义并调用函数prime(n)判断n是否为素数。
【打开“第6题”文件夹中名为proj5_6.c文件,阅读完善程序并保存】:
【解题提示】:
认真阅读并理解第5题的解题思路和程序清单,思考以下几个问题,寻找本题的解题方法。
A.子函数prime的设计:
算法提示请参考第5题,与第5题有何不同?
。
B.主函数设计:
如何实现求计数与累加?
flag、count、sum几个变量的含义。
【源程序代码截屏】:
【运行结果截屏】:
7、【程序示例】程序功能:
输入一个长整数m和一个数字d,统计并输出m中包含数字d的个数。
要求定义并调用函数countdigit(m,d),统计整数m中包含数字d的个数。
例如:
调用函数countdigit(10090,0),返回10090中数字0的个数,返回值是3。
【打开“第7题”文件夹中名为proj5_7.c文件,阅读完善程序并保存】:
【解题思路】:
A.本题要求采用主函数调用子函数的程序结构。
主函数调用子函数返回结果。
子函数统计长整型m中包含数字d的个数。
B.从主函数输出结果程序段可知,in是长整数,d是某数字,count是in中包括d的个数。
C.函数设计:
●子函数countdigit:
统计长整数m中包含数字d的个数。
✧函数返回值类型:
int型。
✧函数参数:
两个参数,一个long型,一个int型。
✧函数体:
统计长整数m中包含数字d的个数。
算法步骤如下:
c)设置计数变量count初始值为0。
d)假定长整数m,循环分离出m的末位数,若末位数等于数字d,则计数变量count加1,再去掉m的末位数,直到m等于0为止。
由于循环次数未知,选用while或do-while语句。
用类while语句表示如下:
count=0;/*计数器变量初始化*/
while(m!
=0){/*当m!
=0时,执行循环*/
gw=m%10;/*取m的末位数*/
if(gw==d)count++;/*计数*/
m=m/10;/*去掉m的末位数*/
}
c)返回count。
●主函数main():
输入长整数in和数字d,调用子函数countdigit(in,d)函数返回结果,最后根据返回值输出结果。
【调试、运行程序】:
运行结果:
输入一个长整数m和一个数字d:
101034011
10103401中包含数字1的个数3
【源程序代码截屏】:
【运行结果截屏】:
8、【程序模仿】程序功能:
输入两个正整数m和n(1<=m<=n<=1000),输出m到n间所有满足各位数字的立