Ⅰ c語言怎麼定義無窮數組啊
內存有限,不可能無窮。最好限制在一定范圍內,否則會浪費大量空間。考慮好在執行時最多需要多少,好的程序是不會浪費資源的,要合理利用空間。盡量不要不定義數組元素個數。從開始學編程就應該養成注重程序效率及資源問題,這樣才能編個好程序。
Ⅱ c語言中怎麼存儲一個很大很大的數
C語言的系統類型,均有大小的限制。超出這個存儲范圍,就無法用該類型進行存儲。所以需要根據數據規模,來選擇存儲類型。
當需要存儲的數很大很大,超出所有可以類型可以表示的范圍時,比如一個100位的10進制數,就需要用字元串的方式進行存儲。這種存儲方式,在演算法中稱為大數存儲,對這種大數的計算,稱為大數計算。
(2)c語言如何存儲一個無窮位的數擴展閱讀:
順序結構:
順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執行順序是自上而下,依次執行。
例如:a = 3,b = 5,現交換a,b的值,這個問題就好像交換兩個杯子裡面的水,這當然要用到第三個杯子,假如第三個杯子是c,那麼正確的程序為:c = a; a = b; b = c;執行結果是a = 5,b = c = 3如果改變其順序。
寫成:a = b; c = a; b =c;則執行結果就變成a = b = c = 5,不能達到預期的目的,初學者最容易犯這種錯誤。順序結構可以獨立使用構成一個簡單的完整程序,常見的輸入、計算、輸出三步曲的程序就是順序結構。
例如計算圓的面積,其程序的語句順序就是輸入圓的半徑r,計算s = 3.14159*r*r,輸出圓的面積s。不過大多數情況下順序結構都是作為程序的一部分,與其它結構一起構成一個復雜的程序,例如分支結構中的復合語句、循環結構中的循環體等。
Ⅲ C語言如何存放大數(超過500位的) 越詳細越好
超過500位的話,就必須用到高精度!
比如輸入 一個數字 123
那麼我們就用一個數組 a[501]={1,2,3};
如果是鍵盤輸入:
scanf("%d",&n);//大數的位數
for(i=1;i<=n;i++) scanf("%1d",&a[i]);//讀入每一位
這樣就可以了!
Ⅳ c語言中怎麼存儲一個很大很大的數
C語言的系統類型,均有大小的限制。超出這個存儲范圍,就無法用該類型進行存儲。
所以需要根據數據規模,來選擇存儲類型。
當需要存儲的數很大很大,超出所有可以類型可以表示的范圍時,比如一個100位的10進制數,就需要用字元串的方式進行存儲。這種存儲方式,在演算法中稱為大數存儲,對這種大數的計算,稱為大數計算。
以下是一個輸入最多不超過1000位的10進制數,並將其輸出的代碼:
#include <stdio.h>
int main()
{
char s[1001];
scanf("%s",s);//輸入數據
printf("%s\n",s);//輸出讀取到的大數。
return 0;
}
Ⅳ 怎麼用C語言定義一個無限長的數組
C語言支持定義一個不顯式定義長度的數組,即通過初始化數據來分配數組長度。
比如int a[] = {1,2,3,4,5}; 數組a的長度沒有顯式給出,由於有5個初始化數據,所以分配空間長度為5個int型。
但是無論如何定義,數組的長度都是固定的,在定義的時候就已經分配好空間,從這個角度上C語言無法定義無限長的數組。但很多實際應用中又事先無法確定數組的長度,對於這類情況,一般有兩種方法可以使用。
1 由malloc和realloc兩個函數,分配動態空間,隨時按需改變數組的最大長度。
通過下面例子來理解該方法:
#include<stdio.h>
#include<stdlib.h>
intmain()
{
intsize=100;//最初為100個元素空間。
int*a=NULL;
inti=0;
a=malloc(sizeof(int)*size);
if(a==NULL)return-1;
while(scanf("%d",a+i)==1)//循環向a中輸入數據,直到輸入非數值字元為止
{
i++;
if(i==size)//數組空間不足
{
size*=2;//將數組空間擴大二倍,也可以改用size+=100;之類的操作,使size每次增加固定值。
a=realloc(a,size);//分配新的空間
if(a==NULL)
{
return-1;//這種情況下運行載體(如PC)內存不足以提供,中斷程序。
}
}
}
if(a)free(a);//對申請的內存進行釋放。
return0;
}
從以上程序可以看到,這種方式的原理就是每當數組空間不足時,利用函數realloc分配一段新的內存空間以增大數組長度。 直到占滿所有剩餘空間。
如果到占滿所有空間還是無法存下數據,那麼是硬體無法支持了。
所以這種方法可以做到軟體意義上的無限大數組空間。
但是這種方法代碼量比較大,而且需要頻繁的進行內存的分配,如果實現知道數據的最大可能規模,那麼可以用另一個方法。
2 事先知道數據的最大規模,比如統計一個班的分數時,一個班最多不超過百人,那麼可以直接定義一個長度為100的數組,或者保險起見,定義一個長度為1000的數組,並對其操作。這樣在操作范圍內,這個就是一個「無限長」的數組了。
Ⅵ 在C語言中INT怎麼表示無窮大(小)
int不能表達真正的無窮大或者無窮小。
在C語言中,int為整型類型,根據不同平台不同,有16位(2位元組)和32位(4位元組)兩種,其中32位int為目前主流。
無論哪種int類型都有其表達范圍,其中
16位int能表示的范圍為-32768~+32767
32位int能表示的范圍為-2147483648~+2147483647
從這個可以看出,int是無法表達真正的無窮大和無窮小的。
但數學中的無窮大和無窮小是指一種概念上存在實際上永遠無法達到的數值,這樣在編程中,就可以根據程序要求使用一些值來替代無窮大和無窮小的概念。
一般有如下兩種情況:
1 程序中對處理的數據規模有限制,比如程序中輸入的數值只在0~100之間,那麼可以設定無窮大為101,而無窮小為-1。因為它們也是在使用中無法達到的值。
2 程序中對數據規模沒有明確的規定。但是既然應用的int類型,就必須是int類型可以容納的,否則出現溢出就可能導致錯誤。 這樣,可以用int所能表示的最大值和最小值用做無窮大和無窮小。
比如在32位情況下,無窮小可以是-2147483648,無窮大是2147483647。
如此長的一段數據是很難記憶的,由計算機對整型數據的存儲原理可以得知,這兩個數值的二進制值分別為0x80000000和0x7FFFFFFF。
類似的在16位下,無窮大為0x7FFF,無窮小為0x8000。
Ⅶ 請問在C 語言中無限個整數怎麼表示
用動態數組就可以
給你一個例子吧:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *a;//動態數組聲明時,先定義一個指針
int N,i,j,temp;
printf("請輸入N值: ");
scanf("%d",&N);
a=(int *)malloc(N*sizeof(int));//給動態數組申請空間
printf("請輸入%d個數: \n",N);
for(i=0;i<N;i++)
{
printf("%d : ",i+1);
fflush(stdin);
scanf("%d",&a[i]);//這里就和通常的數組一樣使用了
}
//下面進行排序
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(a[i]<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
printf("排序後的結果為: \n");
for(i=0;i<N;i++) printf("%d ",a[i]);
free(a);//動態數組使用完畢後要釋放
getch();
return 1;
}
Ⅷ 如何用c語言顯示小數點後無窮多位
沒有哪門語言是可以的,c語言的雙精度浮點型也是有位數限制的,你想計算機中的數據存儲始終是一個固定值,所已無論存放的二進制數以何種編碼方式存在都是一個固定值,而小數點後無窮多位這樣的無理數只存在於邏輯層面,實際還是只能用浮點數去逼近的。
Ⅸ c語言中超大數如何存儲
用數組,比如魔方的排列狀態可以用個 unsigned long a[4]來存起來。