可以直接枚举分子和分母。可以看出分子分母的枚举范围都是拦唯1到L,之后可以写一个最大公约数,判断分子分母的最大公约数是否为1(可以用辗转相除法,如代码中的橘老gcd()函数)。分子分母的比值要大于A和B的比值。根据交叉相乘法,就可以将这个式子写成:现分子×B≤现分母×A。到了最后一个条件了,使分子分母的比值要尽可能地接近A和B的比值,可以把所有符合上面两个条件的分子分母在一起比较,选出最优圆衡升解。
#include<stdio.h>int gcd(int u,int v){
int r=1
while(v!=0){
r=u%v
u=v
v=r
}
return u
}
int main(void){
int A,B,L
scanf("%d",&A)
scanf("%d",&B)
scanf("%d",&L)
int num=gcd(A,B)
A/=num,
B/=num
int A1,B1
double num1=A*1.0/B,num2,num3=L*1.0
for(double i=1i<=Li+=1)
for(int j=1j<=Lj+=1)
if(gcd(i,j)==1){
num2=i/j
if(num2>=num1&&num2-num1<num3)
A1=i,
B1=j,
num3=num2-num1
}
printf("%d %d",A1,B1)
return 0
}
#include<stdio.h>int main(){double x,yprintf("请输入x的迅信世值坦衡:\n"亩肢)scanf("%lf",&x)y=2*xprintf("y的值是%lf\n",y)getch()return 0}按照百分比的定义,要求a占b的百分比时,只需要a/b*100即可。
需要注意的是,百分比的结果为实数,需要用浮点数类型(float或double)来储册闭存,当 *** 作数a,b均为整型时州粗裂,需要先转为浮点型再进行 *** 作,否则会出错。
以输入两个整型数a,b,求a占b的百分比并输出为例,给出参考代码如下:
int a,bfloat r
scanf("%d%d",&a,&b)//输入a和b。
r = (float)a/b*100//转为浮点数并计算百分比。
printf("a占b的百分比为%.2f%%\n", r)//输出结果,保留两位小数。需要凳纳注意的是,要输出%需要写成%%的形式。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)