當前位置:首頁 » 編程語言 » c語言數組中的數為分數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言數組中的數為分數

發布時間: 2022-08-09 01:22:36

A. 請教,c語言中怎麼輸出數的分數形式

沒有默認的分數形式
只能根據值
自己計算出分子和分母
然後
輸出兩個整型
比如
printf("%d/%d", a,b);

從浮點數轉為分數是不精確的 要計算分數, 最好的方法 就是最初就按照分數計算和存儲

B. c語言 從鍵盤輸入10位同學的數學成績,保存在數組中,輸出最高分、最低分、平均分

#include "stdio.h" // 這里問題不大,不過最好改為 #include<stdio.h>
main() //最好改為 void main() 現在是C99標准,請用 int main(void)
{
float a[10],Min,Max,j,Sum;
int i;
printf("請輸入10位同學的數學成績");
for(i=0;i<10;i++)
scanf("%f",&a[i]);
Sum=0;Max=0;Min=100; // Min=100過於有創意,請改為 Min=a[0] 最好Max=a[0]
for(i=0;i<10;i++)
{
Sum=Sum+a[i];
if (a[i]>Max)
Max=a[i];
if (a[i]<Min)
Min=a[i];
}
j=Sum/10;
printf("10位同學數學成績最高的為%f,最低的為%f,平均值為%f",Max,Min,j);
}

C. c語言,怎麼實現對分數<就是幾分之幾>的加減乘除等等的運算

  1. 定義一個數據結構,可以是一個長度2的數組,也可以是一個struct,下面以數組為例

  2. 定義兩個長度2的數組 a[2],b[2],分子分別保存在a[0],b[0],分母分別保存在a[1],b[1](負數的話,符號同分子一起)

  3. 乘:分母,分子分別相乘;除:乘以倒數(調換乘數的分子分母);然後約分(涉及最大公約數演算法,可網路)

  4. 加減:分母需要相同,涉及最小公倍數演算法(可網路)


以上思路和人工計算的方式相同,只是用c語言「翻譯」一下

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

D. C語言編程中怎樣使數字輸出格式為分數

1、C語言沒有分數,只有實型的float或者double,輸出時是printf("%f",a)。
2、C語言中有float單精度和double雙精度兩類可以有小數部分的實型變數。
一般,單精度型佔4個位元組(32位)內存空間,只能提供七位有效數字;雙精度型佔8
個位元組(64位)內存空間,可提供16位有效數字。

E. C語言中如何定義一個帶有分好的數字數組

數組元素是用下標分隔的,不是用分號分隔的。如果你需要顯示分號,在輸出數組元素時加上便是。

double d[5] = {123.412, 5243.234, 151.61, 146.61, 164.41};
for(int i=0; i<5; i++)
{
printf("%f", d[i]);
if(i != 4)
printf("; ");
}

F. 請問在C語言中分數怎麼表示啊,即10/9

首先10/9是表達式,但是在C語言中沒有表示分數的形式,也就是當要以這種形式給出的時候C已經幫運算出結果了。所以你可以選擇兩種表達方式。

1、使用字元串,在使用使用時在轉化一下。

2、使用小數,就是1.1111...這種,申請一個Double型來儲存。

字元串就是 10/9 這種 char fenshu[]="10/9";當要使用的時候,還要再次轉換成Double型。所以說,想要的分數形式只是一個外表沒實際用處。

(6)c語言數組中的數為分數擴展閱讀:

字元串在存儲上類似字元數組,它每一位單個元素都是能提取的,字元串的零位是它的長度,如s[0]=10,這提供給我們很多方便,例如高精度運算時每一位都能轉化為數字存入數組。

通常以串的整體作為操作對象,如:在串中查找某個子串、求取一個子串、在串的某個位置上插入一個子串以及刪除一個子串等。兩個字元串相等的充要條件是:長度相等,並且各個對應位置上的字元都相等。

G. 怎樣用c語言寫一個將小數轉化成最簡分數的演算法

演算法很簡單,程序中已經說明。重要的是系統對浮點數是有修正的,導致結果出現問題。
如何解決,詳見程序。

//#include "stdafx.h" //VS 默認使用
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#pragma warning(disable: 4996)
//為了最大限度支持(目前)小數,整數定義成:__int64
//支持32位:以下分別為 int(__int32) 1E8
#define ZHENGSHU __int64
#define XIAOSHUDIANZUOYI 1E15 //double 最多隻能確精確到15位有效數字
#define XIUZHENG 1E-16 //用於修正浮點數計算誤差
int _tmain(int argc, _TCHAR* argv[])
{
//怎樣用c語言寫一個將小數轉化成最簡分數的演算法
//開始
double xs = 0.000625; //為了簡便,直接指定。也可以讓用戶輸入
//scanf("%lf", &xs);
ZHENGSHU fz, fm, zs, k, fh;
//數學演算法是:如 0.123456 = 123456/1000000 ,然後約分
//實現第一步轉換
if (xs < 0)
{
fh = -1;
xs = -xs;
}
else
{
fh = 1;
}
zs = (ZHENGSHU)xs; //支持假分數
//計算整數部分的有效數位數
k = 1;
while (zs / k > 0)
k *= 10;
xs -= (double)zs;
fm = XIAOSHUDIANZUOYI / k; //分母
xs = (double)((ZHENGSHU)((xs + XIUZHENG * k) * fm)) / fm; //修正浮點數計算誤差
xs += XIUZHENG; //修正浮點數計算誤差
fz = (ZHENGSHU)(xs * fm); //分子

for (;;) //這樣循環,是因為 C/C++ 中,for 循環效率最高
{ //約去多乘的 10 的倍數
if ((fz % 10 == 0) && (fm % 10 == 0))
{
fz /= 10;
fm /= 10;
}
else
{
break;
}
}
//實現第二步:約分。以下看起來有點麻煩,目的是為了減少演算法的時間復雜的
while ((fz % 2 == 0) && (fm % 2 == 0))
{ //將公約數 2 約盡
fz /= 2;
fm /= 2;
}
k = 3;
for (;;)
{
while ((fz % k == 0) && (fm % k == 0))
{
fz /= k;
fm /= k;
}
k += 2;
if (k > (ZHENGSHU)sqrt(fz))
break;
}

//將整數部分加上,形成假分數。如果原數為不為0整數,則化成分母為 1 的假分數
//如果原數為 0,則化成分子為 0,分母為 1。
if (fz == 0)
{
fz = fh * zs;
fm = 1;
}
else
{
fz = fh * (fz + fm * zs);
}
//結束

//顯示一下結果
printf("%lf = %lld/%lld\n", fh * (zs + xs), fz, fm);
//printf("%lf = %ld/%ld\n", fh * (zs + xs), fz, fm); //32位
system("pause"); //防止窗口一閃而退
return 0;
}