首页 > 编程语言 > 详细

C语言例题系列-------第三天

时间:2017-01-16 01:24:02      阅读:202      评论:0      收藏:0      [点我收藏+]
//5.输入两个正整数m和n,求m和n的最大公约数和最小公倍数
//这是用到了辗转相除法,不知道什么是辗转相除法,请问度娘
/*#include<stdio.h>
int max(int a,int b)
{
int t;
do            //此处需要用到do-while,我原本是想就用while循环的,是这样写的 while(t!=0) 
{             //但我发现,如果这样写的话,t一开始没有值, 所以也就错了,   {t=a%b;
t=a%b;        // 所以我用do-while,让程序先执行一次,这样,t便有值了。        a=b;
a=b;          // 记住,while语句先判断,后执行,而do-while是先执行一次,     b=t;  
b=t;          //  然后再判断条件,所以,while语句有可能一次也不执行,       }          
}while(t!=0); //  但do-while语句最少要执行一次。                             return a;  
return a;
}
int min(int c,int d)
{
int t;
t=c*d/max(c,d);//两个数相乘再除以最大公约数,就是两个数的最小公倍数,
return t;      //此处用到了一个嵌套调用,也就是t=c*d/max(c,d),max(c,d)便是嵌套调用,
}              //注意,在主函数中传过来的值是用形参c,d接收的,所以max(c,d)中必须写c,d,
int main()     //而不能写成max(m,n)或max(a,b),切记!
{
int m,n,x,y;
scanf("%d%d",&m,&n);
x=max(m,n);
y=min(m,n);
printf("最大公约数是%d\n最小公倍数是%d\n",x,y);
return 0;
}
*/
//当然,辗转相除法的确好,但如果不知道这个方法的话,是不是就写不出这个程序了呢,
//非也,在期末考试的时候,我就忘了什么是辗转相除法,但我知道什么是最小公约数啊
//(如果不知道什么是最小公约数,请撞墙!)
//所以,下面这个程序就是我在期末考试中写的程序,只是在求最大公约数上和上面的程序有所不同,
//其他地方大致一样
/*#include<stdio.h>
int max(int a,int b)
{
int i,t;
for(i=2;i<=a/2;i++)//首先,用for循环,i从2开始就行了。因为从0,1开始没意义,
if(a%i==0&&b%i==0) //一直循环到较小的一个数的一半就行了,当然,此处我不知道哪个数大哪个数小,
t=i;               //没事,就算是循环到较大的数的一半也行,因为我是除嘛,如果a和b除以i之后,
return t;          //余数为0,就表示可以除尽,然后就把这个i赋给t,因为i是不断增大的,所以肯
}                  //定有比原来的i更大的数,也就是现在的i能被除尽,同样,将现在的i的值赋给t,
int min(int c,int d)//那么,原来的t的值也就是原来i的值不就被现在的i的值给取代了嘛,所以,
{                   //最后的t的值就是能被a,b整除的最大的一个数,也就是最大公约数
int t;
t=c*d/max(c,d);
return t;
}
int main(void)
{
int m,n,x,y;
scanf("%d%d",&m,&n);
x=max(m,n);
y=min(m,n);
printf("最大公约数是%d\n最小公倍数是%d\n",x,y);
return 0;
}
*/
//6.输入一个年份,判断是否为闰年(是闰年的条件:1能被4整除但不能被100整数。2能被100整除,
//又能被400整除)
//这是我认为最简单的写法,使用的是逻辑运算符
/*#include<stdio.h>
int main()
{
int x;
scanf("%d",&x);
if(x%4==0&&x%100!=0)   //注意:if只管后面“一个”语句,也就是说,if语句只对紧跟其后的一个
printf("%d是闰年\n",x);//语句起作用
else if(x%100==0&&x%400==0)//注意:else总是与它上面的最近的未配对的if配对
printf("%d是闰年\n",x);
else printf("%d不是闰年\n",x);
return 0;
}
*/
//这是书上的写法,比较麻烦,不过也有比较好的地方,输入一个数,判断结束后,可以继续输入
//其他数,直到你想退出,不想再输入数了
#include<stdio.h>
int main(void)
{
char ch;
int year;
do
{
printf("please enter year\n");
scanf("%d",&year);
if(year%4==0)
if(year%100!=0)
printf("%d is leap!\n",year);
else if(year%400==0)
printf("%d is leap!\n",year);
else 
printf("%d is NOT leap!\n",year);
else
printf("%d is NOT leap!\n",year);
printf("if continued,press Y,otherwise press any key abort\n ");
scanf("%1s",&ch);
}while(ch==‘Y‘||ch==‘y‘);//此处用到了一个do-while循环,目的是使程序可以连续输入,注意,
return 0;                //while();后面的分号一定不能忘记
}


本文出自 “鹏哥的博客” 博客,谢绝转载!

C语言例题系列-------第三天

原文:http://pengge666.blog.51cto.com/11766700/1892122

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!