//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();后面的分号一定不能忘记 }
本文出自 “鹏哥的博客” 博客,谢绝转载!
原文:http://pengge666.blog.51cto.com/11766700/1892122