这是代码一,Matlab,出现的问题有:当a>b时,无法计出结果;结果形式为x+结果,如何把x去掉呀
clear;clc;
a=input('请输入电阻值的分子:');
b=input('请输入电阻值的分母:');
syms x c
%syms a b x c
%[a,b]=numden(input('请输入电阻值'))
while a<b
a = a+b;b = a-b;a = a-b;%交换两个数,使其变为假分数
%x+=fix(a./b);
x=x+fix(a./b);
a=rem(a,b);
if a==0
break
end
end
disp(x)
这是代码二,Matlab,问题在它不出结果
clear;clc;
a=input('请输入电阻值的分子:');
b=input('请输入电阻值的分母:');
syms x c
%syms a b x c
%[a,b]=numden(input('请输入电阻值'))
if a<b
a = a+b;b = a-b;a = a-b;
else
a=a;b=b;
end
while a>0
% a<b
%a = a+b;b = a-b;a = a-b;%交换两个数,使其变为假分数
x=x+fix(a./b);
a=rem(a,b);
end
disp(x)
这是代码三,c语言,可行,但看不懂循环体
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;// namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
int main()//整数数据类型
{
long long a,b,x,tmp;//定义长整型变量
scanf("%I64d%I64d",&a,&b);//输入
tmp=0;//赋初值0
if (a<b) swap(a,b);//转换为假分数形式,即分子大于分母 ;两个互为倒数的阻值 在单位电阻的构成上仅最后一步的串并联不同,故其个数相同
while (b!=0) //b不等于0时
{
tmp+=a/b;//对tmp累加每次循环后的a/b值 ,复合赋值运算符
x=a%b; a=b; b=x;//x为a/b的余数 ,此时分数形式用上一次循环的a,b表示即为(b/(a除以b后的余数)),当a/b为整数即无余数时终止循环
}
printf("%I64d\n",tmp);//64位的长整型整数输出,并换行
return 0;//表示该程序运行结束后,正常退出
}
代码四,不知道怎么写了
#include <stdio.h>
int main()
{
float a,b,m,n,mins;
printf("please input a b\n");
scanf("%f,%f",&a,&b);
m=floor(a/b);
x=(a-b*floor(a/b))/b;
y=b;
if x=1
n=m+y;
else
int min(int x,int y);//判断分子与分母之间的大小;
int main()
{
int fz,fm,i=1; // i为分子分母公因数,从1开始;
scanf("%d/%d",&fz,&fm);
do
{ i++;
if(fz%i==0&&fm%i==0) //判断条件是i此时为分子与分母的公因数;
{
fz=fz/i;
fm=fm/i;
i=1; //循环判断时让i恢复初始值重复循环;
}
}while(i<min(fz,fm)); // 截至条件是公因数不能大于其本身;
printf("%d/%d",fz,fm);
return 0;
}
int min(int x,int y)
{ if(x>=y)
return y;
else
return x;
}
if x=1
n=m+y;
else
x=y
y=x;
m=m;
n=n;
mins=m+n;
printf("串联电阻有m=%0.2f\n并联电阻有n=%0.2f\n",m,n);
printf("最少需要mins=%0.2f\n个1欧姆的电阻可以组合出阻值为a/b的欧姆电阻",mins)
return 0;
}
代码一的存在bug的结果如下
请输入电阻值的分子:5
请输入电阻值的分母:3
x
请输入电阻值的分子:3
请输入电阻值的分母:5
x + 4