当前位置:首页 » 编程语言 » c语言中分母运算怎么写
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中分母运算怎么写

发布时间: 2022-10-16 19:28:01

‘壹’ 分母为(2*n-1)!如何用c语言表示

迭代时的一项而已
(2*n-1)! 是 阶乘 吧

比如 t *= (2*n-1); 就是某个时刻 t的一项!

‘贰’ 我是C语言初学者,请问关于除法分母的问题

不一定分母为实数。C语言中int是整型数,所以你计算a/b也是整型数。但是当计算中有任何一个元素是浮点数,则结果也计算为浮点数。

满意请采纳

‘叁’ C语言编程问题:分数计算器

所有数据都可以用分数来表示,比如整数可以认为分母为1,这样,所有数据可以这样保存(数据结构为:)

struct
{
intz;//分子
intm;//分母
};

我没写过具体的可以计算分数的计算器,下面是加减乘除和括号的计算器源代码,你参考一下,如果看懂了应该不难改,应该是数据结构课程里堆栈这一块的内容。

测试样例:

输入:

2*(3+6*(8/2+1))

输出:

66

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedefstructpriority
{
charsymb;
intpri;
}priority;

prioritykuPriority[7]={{'+',1},{'-',1},{'*',2},{'/',2},{'(',3},{')',3},{'',0}};
charco[100];
charsymbol[100];
intnumb[100];
intsPoint,nPoint;
intsHead,nHead;

intfindPri(charsymb)
{
for(inti=0;i<7;i++)
{
if(kuPriority[i].symb==symb)
returnkuPriority[i].pri;
}
return-1;
}
intcalc(inta,intb,charsymb)
{
switch(symb)
{
case'+':returna+b;
case'-':returna-b;
case'*':returna*b;
case'/':
if(b==0)
{
printf("除数为0 ");
system("pause");
exit(0);
}
else
{
returna/b;
}
}
}
voidf()
{
intlen;
inti,a;
intflag,negative;
scanf("%s",co);//scanf能解决行末空格问题,gets不行
len=strlen(co);
sPoint=nPoint=0;
//栈的准备
intsum=0;
flag=-1;
negative=1;

for(i=0;i<len;i++)
{
if(i==0&&co[0]=='-')
{
negative=-1;
continue;
}
if(co[i]<='9'&&co[i]>='0')
{
if(i!=0)
{
if(co[i-1]==')')
{
printf("不合法:右括号后面不能是数字 ");
system("pause");
return;
}
}
flag=0;
sum=sum*10+co[i]-'0';
if(i==len-1)
{
numb[nPoint++]=sum*negative;
sum=0;
negative=1;
}
elseif(!(co[i+1]<='9'&&co[i+1]>='0'))
{
numb[nPoint++]=sum*negative;
sum=0;
negative=1;
}
}
else//是运算符
{
if(co[i]=='('||co[i]==')')
{
if(co[i]=='('&&flag==0)
{
printf("不合法:左括号前面不能是数字 ");
system("pause");
return;

}
elseif(co[i]==')'&&flag!=0&&co[i-1]!=')')
{
printf("不合法:右括号前面不能是非右括号运算符 ");
system("pause");
return;
}
flag=2;
}
else//不是括号
{

if(sPoint!=0)
{
if(co[i-1]=='('&&co[i]!='(')//非左括号运算符前面不能是左括号
{
if(co[i]=='-')//负号
{
negative=-1;
continue;
}
elseif(co[i]=='+')
{
continue;
}
if(co[i]!='(')
{
printf("不合法:左括号后面不能有非括号运算符 ");
system("pause");
return;
}
}
}
if(flag==1)
{
printf("不合法:运算符前后不能有除括号以外的运算符 ");
system("pause");
return;
}
flag=1;
}

symbol[sPoint++]=co[i];
}
}
//栈准备完毕
a=0;
for(i=0;i<=sPoint;i++)
{
if(symbol[i]=='(')
{
a++;
}
elseif(symbol[i]==')')
{
a--;
}
if(a==-1)
{
printf("括号符不匹配 ");
system("pause");
return;
}
}
if(a!=0)
{
printf("括号符不匹配 ");
system("pause");
return;
}
//检查匹配括号完毕
if(sPoint!=0)
{
sPoint--;
}
if(nPoint!=0)
{
nPoint--;
}

//开始计算
intformal,current;

sHead=-1;
nHead=0;
if(symbol[0]=='(')
{
nHead--;
}
while(1)
{
sHead++;

if(nPoint==0)
{
printf("%d",numb[0]);
break;
}
if(sHead==0)
{
continue;
}
formal=findPri(symbol[sHead-1]);
current=findPri(symbol[sHead]);

if(formal==-1||current==-1)
{
printf("非法字符 ");
system("pause");
return;
}


if(symbol[sHead]!='(')//非左括号
{
nHead++;
}
if(current==3)//括号
{
if(symbol[sHead]=='(')
{
continue;
}
else
{
//消掉括号
if(symbol[sHead-1]!='(')
{
numb[nHead-1]=calc(numb[nHead-1],numb[nHead],symbol[sHead-1]);
for(a=nHead;a<nPoint;a++)
{
numb[a]=numb[a+1];
}
numb[a]=0;
nPoint--;

for(a=sHead-1;a<sPoint;a++)
{
symbol[a]=symbol[a+1];
}
symbol[sPoint]='';
sPoint--;
nHead=0;
sHead=-1;
if(symbol[0]=='(')
{
nHead--;
}
continue;//重新开始
}
else
{
for(a=sHead-1;a<=sPoint-2;a++)
{
symbol[a]=symbol[a+2];
}
symbol[sPoint-1]=symbol[sPoint]='';
sPoint-=2;
sHead=-1;
nHead=0;
if(symbol[0]=='(')
{
nHead--;
}
continue;//重新开始
}

}
}
if(formal<current)
{
continue;
}
elseif(formal>=current&&formal!=3)//且不是括号
{
numb[nHead-1]=calc(numb[nHead-1],numb[nHead],symbol[sHead-1]);
for(a=nHead;a<nPoint;a++)
{
numb[a]=numb[a+1];
}
numb[nPoint]=0;
nPoint--;

for(a=sHead-1;a<sPoint;a++)
{
symbol[a]=symbol[a+1];
}
symbol[sPoint]='';
sPoint--;
sHead=-1;
nHead=0;
if(symbol[0]=='(')
{
nHead--;
}
continue;
}
}
}
intmain()
{
while(1)
{
f();
printf(" ");
}
}

‘肆’ C语言编程题(分数的四则运算)

//呵呵!写的有些麻烦,但输入的格式你要求的是那样,
//只好这样了,应该还符合你的要求!你可以测试一下,
//但输入时不必输入括号。如果有兴趣的话,
//可以加我qq,大家共同交流!qq:237263394
#include<string.h>
main()
{char mo1,op,mo2;
int a,b,c,d,e,f;
scanf("%d%c%d%c%d%c%d",&a,&mo1,&b,&op,&c,&mo2,&d);
if(b==0||d==0)
{printf("分母不能为零!\n");
exit(0);
}
switch(op)
{
case'+':
{
f=b*d;
e=(a*d+c*b);
break;
}
case'-':
{
f=b*d;
e=(a*d-c*b);
break;
}
case'*':
{
e=a*c;
f=b*d;
break;
}
case'/':
{
e=a*d;
f=b*c;
break;
}

}
while(e%2==0&&f%2==0)
{
e=e/2;
f=f/2;
}
while(e%3==0&&f%3==0)
{
e=e/3;
f=f/3;
}
if(e==f||e==0)
printf("%d%c%d%c%d%c%d=%d\n",a,mo1,b,op,c,mo2,d,e);
else printf("%d%c%d%c%d%c%d=%d/%d\n",a,mo1,b,op,c,mo2,d,e,f);
}

‘伍’ C语言中的分数四则运算

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void operation()
{
int a,b,c,d;
int x,y;
int i,j,t;
char ch; 
printf("-------欢迎进入分数四则运算的操作界面-------\n\n");
printf("请输入第一个分数的分子:"); 
scanf("%d",&b);
printf("请输入第一个分数的分母: ");
scanf("%d",&a);
if(!a)
{
printf("Error,分母不能为0!\n");
exit(0);
}
printf("请输入第二个分数的分子:");
scanf("%d",&d);
printf("请输入第二个分数的分母:");
scanf("%d",&c);
if(!c)
{
printf("Error,分母不能为0!\n");
exit(0);
}

getchar();
printf("请输入运算符号[ + - * / ]: ");
scanf("%c",&ch);
switch(ch)
{
case'+': x=a*c; y=b*c+a*d; break;
case'-': x=a*c; y=b*c-a*d; break;
case'*': x=a*c; y=b*d; break;
case'/': x=a*d; y=b*c; break;
default: printf("Error,不存在该运算符号!\n"); exit(0);
}
printf("通分后的分母是%d,分子是%d\n",x,y);

x>=y?(i=x,j=y):(i=y,j=x);
/*辗转相除法(欧几里德算法)*/
    t=i%j;
    while(t)  
{
i=j;
j=t;
t=i%j;
}
/*更相减损术 */
    /*t=i-j;
while(t)
{
i=j;
j=t;
t=abs(i-j);
if(t==j)
break;
}*/

       if(y/x>=0)
{
x/=j;
     y/=j;
}
else
{
x=abs(x/j);
y=-abs(y/j);
}
        printf("运算结果如下:\n");
if(y%x==0)
printf("%d/%d %c %d/%d = %d\n",b,a,ch,d,c,y/x);
else
printf("%d/%d %c %d/%d =%d/%d\n",b,a,ch,d,c,y,x);
}

void main()
{
operation();
 } 
//转载于微信公众号:会说话的青鸟,这上面有详细的讲解,没看懂可以去那参考一下哦

‘陆’ C语言:分数的计算

代码如下 供参考

#include<stdio.h>

structFraction
{
inta,b,s;
};

structFractionAdd(structFractionx,structFractiony);
structFractionSub(structFractionx,structFractiony);

intgcd(inta,intb)
{
while(a!=b)
{
if(a>b)
{
a-=b;
}
else
{
b-=a;
}
}

returna;
}

voidmini(structFraction*a)
{
intg;

if(a->a==0)
{
a->b=1;
return;
}
g=gcd(a->a,a->b);
a->a/=g;
a->b/=g;
}

structFractionAdd(structFractionx,structFractiony)
{
structFractionr;
if(x.s!=y.s)
{
if(x.s==1)
{
y.s=1;
returnSub(x,y);
}
else
{
x.s=1;
returnSub(y,x);
}
}
r.s=x.s;
r.b=x.b*y.b;
r.a=x.a*y.b+x.b*y.a;
mini(&r);

returnr;
}

structFractionSub(structFractionx,structFractiony)
{
structFractionr;
if(x.s!=y.s)
{
if(x.s==1)
{
y.s=1;
returnAdd(x,y);
}
else
{
x.s=1;
r=Add(x,y);
r.s=-1;
returnr;
}
}

r.s=x.s;
r.b=x.b*y.b;
r.a=x.a*y.b-x.b*y.a;
if(r.a<0)
{
r.s*=-1;
r.a*=-1;
}
mini(&r);

returnr;
}

voidDisplay(structFractiona)
{
if(a.s==1)printf("+");
elseprintf("-");
printf("%d/%d ",a.a,a.b);
}

intmain()
{
structFractionAdd(structFractionx,structFractiony);
structFractionSub(structFractionx,structFractiony);
structFractionf1={1,2,1},f2={3,4,1},f3;
f3=Add(f1,f2);
printf(" 两个分数相加的结果为:");Display(f3);
f3=Sub(f1,f2);
printf(" 两个分数相减的结果为:");Display(f3);
return0;
}

‘柒’ c语言中分子和分母用什么表示

c语言中分子和分母用基数和序数表示。

在C预言的环境中,分子用基数词,分母用序数词。分子如果是1以上,分母用复数。同时分数可以表示为“分子/分母”的形式。编写一个程序,要求用户输入一个分数,然后将其约分为最简分式。

简介:

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

‘捌’ 怎样用c语言的 类 实现分数的加减乘除

用结构弄一个分数结构,有分子、分母

按平常的分数运算法则进行运算

每次运算后都化简一下

‘玖’ c语言分子分母怎么表示

c语言分子分母表示:float只有6位有效数字。

原因是计算机中数据是2进制存储的,而且浮点数还有单独的存储格式,44.5474转成二进制时不可能恰好转成一个有限位数的二进制数,就算能,位数可能也超过了浮点数存储格式中允许的位数。因此44.54。

简介

C语言是一门面向过程的计算机编程语言,与C++、C#、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。

‘拾’ c语言,怎么实现对分数<就是几分之几>的加减乘除等等的运算

  1. 定义一个数据结构,可以是一个长度2的数组,也可以是一个struct,下面以数组为例

  2. 定义两个长度2的数组 a[2],b[2],分子分别保存在a[0],b[0],分母分别保存在a[1],b[1](负数的话,符号同分子一起)

  3. 乘:分母,分子分别相乘;除:乘以倒数(调换乘数的分子分母);然后约分(涉及最大公约数算法,可网络)

  4. 加减:分母需要相同,涉及最小公倍数算法(可网络)


以上思路和人工计算的方式相同,只是用c语言“翻译”一下

另外提供一个思路,直接计算结果,然后从无限循环小数转化成分数形式