當前位置:首頁 » 編程語言 » 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語言「翻譯」一下

另外提供一個思路,直接計算結果,然後從無限循環小數轉化成分數形式