當前位置:首頁 » 存儲配置 » c數組存儲數據

c數組存儲數據

發布時間: 2022-12-22 17:31:50

Ⅰ C語言如何定義一個數組存放字元和數字

1、首先,編寫頭文件以及main函數主框架。

注意事項:

盡管C語言提供了許多低級處理的功能,但仍然保持著跨平台的特性,以一個標准規格寫出的C語言程序可在包括類似嵌入式處理器以及超級計算機等作業平台的許多計算機平台上進行編譯

Ⅱ C語言數組儲存量

c[3]是可以存儲3個字元的,c[n]就是存儲n個字元,n是int
整形常量.
對於,以上你提出的問題,定義一個字元數組
c[3],的確,他只可以儲存三個字元,分別儲存在c[0],c[1],c[2],但是,在c/c++中並沒有檢查數組是否越界或者是超界的功能,所以,在scanf(),語句中,我們輸入的字元,c/c++是沒有檢查,所以,理論上我們只能輸入兩個字元,最後一個留給系統自動添加的\0,
但是,實際上,我們輸入的字元.qwe是可以正確運行的,最後,系統也會自動添加\0,但是,添加的\0,就可能在數組定義之外了,可能就是系統在定義數組的之後,對於我們輸入的其他字元也相應在數組定義之後的一連串空間中繼續添加,所以,可以輸入大於3的字元都可以正常輸出,但是,會報錯!錯誤是數組的訪問越界了吧!以上純屬個人理解,僅供參考!希望對你有幫助!^_^.

Ⅲ C語言 數組用來表示什麼樣的數據

數組能表示很多東西,而且用來做存儲很方便
他跟單一變數的定義很相似
如int
a[20],就是整型數組
他能存儲20組數據
每組的的大小為
該數組里的數字多少乘2
float
a[20],就是單精底數組
大小計算和上述相同
char
a[20],就是字元數組
需要注意的是
他們的地址是從a[0]到a[19]而不是a[1]~a[20]
在計算機里
如果你存儲超過了a[19],有時候計算機不會提示有錯誤
但是這樣做很危險!
你找本書看看建議
希望對你有幫助

Ⅳ C語言中,如何把幾個數組的值保存到一個數組里

這個問題不難!這個很簡單嘛。不過建議不要用數組,數組的話,太大浪費,太小會越界。可以用vector容器。
你首先自己寫個判斷水仙花數的函數先,這里我假設就是boolhanshu(int);
再定義一個足夠大的數組.例如inta[1000];intn=0;//這個n用來表示數組下標的
for(inti=1;i<100000;i++)//這個范圍你自己定義。
{
if(hanshu(i))
{
a[n++]=i;//將水仙花數保存在數組中
}
}
這樣就ok了,然後水仙花數就保存在a數組中了

Ⅳ C語言用數組存儲大型數據的演算法

/*
size_a,pa——指向數組a的有效末端
ma——a的最大容量,必須大於na

n=12——求n的階
p——求階乘時的當前乘數
*/
#include<stdio.h>
#define Ma 10000
int pa;/*指向數組a的有效末端*/
int p=2;
int memory_over=0;
union data
{ unsigned long int b;
struct
{unsigned l:16;
unsigned h:16;
}m;
}a[Ma];
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
演算法說明1:考慮到result比較長,我用a[Ma].b來存儲n!的result,每一位a[pa].b能存儲4位10進制數字。
因為我定義的數組是靜態的,所以Ma應該足夠大。
ps:其實只用定義一個unsigned long int b[Ma];就可以了(直接用b[pa]代替a[pa].b),但是我考慮到可能會訪問每一結點b[pa]的高16位(a[pa].m.h)和低16位(a[pa].m.l),但是的我考慮是多餘的!!不用像我這樣定義這么復雜的共用體!!
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
unsigned int cashe;
unsigned int carry;

void main()
{
unsigned int n;/*求n的階*/
void facto(unsigned int n);
printf("Input n:");
scanf("%u",&n);
/*=================開始求階乘!=============*/
a[0].b=1;/*初始化*/
facto(n);
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
演算法說明2:上面這句直接調用facto(n)來求n!
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*========================以下是顯示最後結果====================================*/
if(memory_over==0)
{printf("the result include %dNO:\n",pa+1);
printf("%u",a[pa--].m.l);
for(;pa>=0;pa--)
printf("%04u",a[pa].m.l);
printf("\n");
}
getch();
}

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
演算法說明2:求階函數facto(n)說明:
這個函數會不斷地調用multiple(),它的作用是每被調用一次就使得a[pa].b與階數p相乘一次,直到乘完n為止!
{multiple();
p++;/*每一輪乘一個階數p*/
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void facto(unsigned int n)
{void multiple();
pa=0;
while(pa<Ma-1&&p<=n)/*容量限制*/
{multiple();
p++;/*每一輪乘一個階數p*/
}
if(p<=n)
{printf("memory out!\n");memory_over=1;}/*如果當前的存儲結果的數組a[Ma]不夠用!應提高Ma*/

}

/*==============================================================================
演算法說明3:乘法函數multiple()說明:負責a[pa].b與階數p相乘。
a[pa].b有很多結點,a[0].b、a[1].b、a[2].b、a[3].b、a[4].b、。。。
當然是從低結點a[0].b開始不斷與p相乘,產生的「進位」加到高位a[1].b,直到a[pa].b*p為止!

隨著結果數值增大,pa個結點的a[].b可能容納不下結果,所以如果a[pa].b與p相乘後還有「進位」carry,就擴大pa,並把carry放入到新增加的結點:
if(carry>0)
a[++pa].b=carry;
===================================================================================*/
void multiple()
{int i=0;
carry=0;
while(i<=pa)/*i指向當前處理的元素a[i],每一輪用一個位與階數p相乘*/
{a[i].b=a[i].b*p+carry;/*計算結果,要考慮來自低位的進位*/
carry=a[i].b/10000;/*計算進位*/
a[i].b=a[i].b%10000;/*計算余數*/
i++;
}
if(carry>0)
a[++pa].b=carry;
}

Ⅵ C語言數組中如何存放混合數據

還是用字元串去存,只是在判斷數字的時候,做一個轉換,比如將char類型的6,轉成數字6,根據ANSCII編碼,減去或者加上一個固定值就可以了。

Ⅶ C語言用數組存儲大型數據的演算法

/*
size_a,pa——指向數組a的有效末端
ma——a的最大容量,必須大於na
n=12——求n的階
p——求階乘時的當前乘數
*/
#include
#define
Ma
10000
int
pa;/*指向數組a的有效末端*/
int
p=2;
int
memory_over=0;
union
data
{
unsigned
long
int
b;
struct
{unsigned
l:16;
unsigned
h:16;
}m;
}a[Ma];
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
演算法說明1:考慮到result比較長,我用a[Ma].b來存儲n!的result,每一位a[pa].b能存儲4位10進制數字。
因為我定義的數組是靜態的,所以Ma應該足夠大。
ps:其實只用定義一個unsigned
long
int
b[Ma];就可以了(直接用b[pa]代替a[pa].b),但是我考慮到可能會訪問每一結點b[pa]的高16位(a[pa].m.h)和低16位(a[pa].m.l),但是的我考慮是多餘的!!不用像我這樣定義這么復雜的共用體!!
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
unsigned
int
cashe;
unsigned
int
carry;
void
main()
{
unsigned
int
n;/*求n的階*/
void
facto(unsigned
int
n);
printf("Input
n:");
scanf("%u",&n);
/*=================開始求階乘!=============*/
a[0].b=1;/*初始化*/
facto(n);
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
演算法說明2:上面這句直接調用facto(n)來求n!
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*========================以下是顯示最後結果====================================*/
if(memory_over==0)
{printf("the
result
include
%dNO:\n",pa+1);
printf("%u",a[pa--].m.l);
for(;pa>=0;pa--)
printf("%04u",a[pa].m.l);
printf("\n");
}
getch();
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
演算法說明2:求階函數facto(n)說明:
這個函數會不斷地調用multiple(),它的作用是每被調用一次就使得a[pa].b與階數p相乘一次,直到乘完n為止!
{multiple();
p++;/*每一輪乘一個階數p*/
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void
facto(unsigned
int
n)
{void
multiple();
pa=0;
while(pa<Ma-1&&p<=n)/*容量限制*/
{multiple();
p++;/*每一輪乘一個階數p*/
}
if(p<=n)
{printf("memory
out!\n");memory_over=1;}/*如果當前的存儲結果的數組a[Ma]不夠用!應提高Ma*/
}
/*==============================================================================
演算法說明3:乘法函數multiple()說明:負責a[pa].b與階數p相乘。
a[pa].b有很多結點,a[0].b、a[1].b、a[2].b、a[3].b、a[4].b、。。。
當然是從低結點a[0].b開始不斷與p相乘,產生的「進位」加到高位a[1].b,直到a[pa].b*p為止!
隨著結果數值增大,pa個結點的a[].b可能容納不下結果,所以如果a[pa].b與p相乘後還有「進位」carry,就擴大pa,並把carry放入到新增加的結點:
if(carry>0)
a[++pa].b=carry;
===================================================================================*/
void
multiple()
{int
i=0;
carry=0;
while(i<=pa)/*i指向當前處理的元素a[i],每一輪用一個位與階數p相乘*/
{a[i].b=a[i].b*p+carry;/*計算結果,要考慮來自低位的進位*/
carry=a[i].b/10000;/*計算進位*/
a[i].b=a[i].b%10000;/*計算余數*/
i++;
}
if(carry>0)
a[++pa].b=carry;
}

Ⅷ 在C語言中,數組就一組數據,不能用來存放用戶數據。()

顯然是錯的啊,C語言的數據非常靈活
數組就是一塊內存,可以定義成任何形式的數據。
例如malloc分配的內存通常都可以用數組表示

Ⅸ C語言用數組存儲大型數據的演算法

樓主一定懂c++吧?c++標准庫裡面有一個模板類叫
bitset<>
專門用來做位操作的。
你的問題用這個可以高效的解決,建立一個足夠大的空間,比如8000個位
bitset<8000>
然後就簡單了,乘法函數把乘數轉化成bitset<32>類型的對象(用乘數直接初始化代表乘數的bitset<32>對象)然後用位運算符把被乘數(那個bitset<8000>類型的對象)按位右移,(一個10進制數右移一次相當於乘10,一個2進制數右移一次相當於乘2;乘數中,二進制位如果知道它是從右數第n位,那麼就把被乘數向右移動n-1位就完成了乘法,然後再做下一個二進制位的乘法,直到被乘數中所有的2進制位都被使用過為止)。做完了每32位2進制位轉化成一個unsigned
long,存儲在一個鏈表或者數組(懷疑空間不夠,內存里很有可能沒有這么大的連續空間)中,如果按順序逐個輸出就是問題的結果。
我覺得這個方法比2樓的高效。
如果你不想使用c++標准庫……那也可以考慮用c中的位域,也支持位操作。不過遠沒有前面的方便,很多操作都要自己做,比如最基本的你必須有一個適合乘法操作的動態增長的位域組成的鏈表。而且即使這樣還不一定高效。
……寫完了才看的3樓,3樓就做得很好了。

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:600
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:892
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:585
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:769
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:689
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1016
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:261
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:119
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:809
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:718