作业一:
题目:
现有1角 2角 5角
凑出两元
有哪些可能
例如:
0,0,4
0,5,2
0,10,0
作业:
#include<stdio.h>
int main()
{
int i,j,k,sum=0;//定义ijk,用来表示一角,两角,五角要用到的张数
//sum记录一共多少方法
for(i=0;i<=20/1;i++){//i的取值范围为0~20
for(j=0;j<=20/2;j++){//j的取值范围为0~10
for(k=0;k<=20/5;k++){//k的取值范围为0~4
if(i+2*j+5*k==20){//判断循环结果相加是否为20
sum++; //每循环一次,方法就加一
printf("%d %d %d\n",i,j,k);//最后输出可以用到的纸张数
}
}
}
}
printf("共有%d组合方法",sum);
return 0;
}
作业二:
题目:用户输入两个数,程序输出它们的最大公约数
作业:
方法一:
#include<stdio.h>//最大公约数:一个数既能整除A,又能整除B
int main(){ //碾转相除法
int x,y,X,i,I;
printf("请输入两个整数:");
scanf("%d %d",&x,&y);
X=x; //保持x的初始值
if(x<y){//判断x与y的大小
x=y;//如果x<y,将y的值赋给x
y=X;//将X(即x的初始值)赋给y
}
for(i=2;i<=y;i++){ //1是所有整数的公约数;i必须<=两者之中的最小数;
if(x%i==0&&y%i==0){ //i既能整除x,又能整除y,即:x和y对i分别取余=0
I=i; //防止出现3,5之类的数
}
}
printf("最大公约数为:%d",I);
return 0;
}
作业:
方法二:
#include<stdio.h>
int main(){ //相减法
int x,y,X,Y;
printf("请输入两个整数:");
scanf("%d %d",&x,&y);
X=x; //确定x,y的初始值
Y=y;
for(;x!=y;){//判断x与y的值是否相等
if(x>y){//如果x>y,那么将x-y的值赋给x,然后继续比较x与y的值是否相等;
x=x-y;
}else{ //如果x<y,那么将y-x的值赋给y,然后继续比较x与y的值是否相等;
y=y-x;
}//直到减到x与y的值相等后,结束循环,则最后减到相等的x和y就是最大公约数
}
printf("最大公约数为:%d",x);
}
自我拓展:
题目:求两个数的最小公倍数
作业:最小公倍数=两整数的乘积÷最大公约数
#include<stdio.h>//最大公约数:一个数既能整除A,又能整除B
//最小公倍数:一个数既能被A整除,又能被B整除
int main(){ //碾转相除法
int x,y,X,i,I,m;
printf("请输入两个整数:");
scanf("%d %d",&x,&y);
X=x; //保持x的初始值
if(x<y){//判断x与y的大小
x=y;//如果x<y,将y的值赋给x
y=X;//将X(即x的初始值)赋给y
}
for(i=2;i<=y;i++){ //1是所有整数的公约数;i必须<=两者之中的最小数;
if(x%i==0&&y%i==0){ //i既能整除x,又能整除y,即:x和y对i分别取余=0
I=i; //防止出现3,5之类的数
}
}
printf("最大公约数为:%d\n最小公倍数为:%d",I,m=(x*y)/I);
//最小公倍数=两数的乘积除以最大公约数
return 0;
}