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

c語言很大的整數

發布時間: 2022-06-09 14:57:48

1. c語言中怎樣輸入一個很大的整數

可以利用字元數組來存放整數的各位數值,即將整數當成一串字元來輸入。

如果要輸入12345678901234567890,則定義一個char型數組a[20],將用戶輸入的整數當成一串字元存入字元數組a中。


具體實現方法可以參考如下程序段:

chara[20];
scanf("%s",a);//輸入12345678901234567890,即可將該整數輸入到字元數組a當中
//則數組a中各元素值為a[0]='1',a[1]='2',a[2]='3',.......,a[19]='0'
//在進行運算的時候將字元轉換為數字即可(即a[i]-'0')

2. 在C語言中將一個很大的正整數賦值給一個int類型變數a,輸出a時有時會顯示負值,為何

在不同的C系統中,int有不同的表示範圍。
32位(4位元組)的int,它可以表示的數字范圍是-2147483648~+ 2147483647,共可表示4294967296個不同的數。
這是因為它有點像我們用(每個檔位上只可以表示0~9)的算盤。假如我們的一個算盤有4個檔位,它能表示從0~9999共10000個不同的數字。當我們要把比9999更大的數字存放到算盤上時,走出的部分就「丟失」了。如果要存的數字是12345,按「老規矩」存放完畢後,讀取算盤上的數字時,由於數據發生了丟失,只能讀到2345。這是由於12345-10000=2345。

再來看計算機里的int,如果我們要把2147483648存入到int變數中時,由於超出了范圍,就發生了丟失。讀取時,就變成了2147483648-4294967296=-2147483648了。
其它更大的數字,所變成的負數大小,也是這樣的規律(都是減去了4294967296或它的倍)。

3. c語言編程:輸入一個很大的整數n(n<100),輸出n各位數字之和 ,利用字元串實現

思路:輸入字元串,從字元串的第一個位置開始依次把每個數字字元轉成整數,並計算其累加和。

參考代碼:

#include"stdio.h"
#include"string.h"
intmain(){
chara[100];
inti,sum=0;
gets(a);
for(i=0;a[i]!='';i++)//遍歷求累加和
sum+=a[i]-'0';
printf("%d ",sum);
return0;
}
/*
運行結果:
12345
15
*/

4. c語言中0x7f為什麼是一個很大的整數

若是變數定義為char數據類型,則它的范圍為-128—127,,所以如果是單位元組的話,他代表最大整數

5. C語言中怎樣表示大整數

long long是最大的,應該可以表示幾十位把
是在不行,就用數組來做,這個可以做相應的加減乘除子函數

6. C語言怎麼計算大整數

在C裡面,最大的整型是unsigned long
在C++裡面,最大的是__int64,也就是LONGLONG,是64位的整型。
atoi函數的返回值是int型的,如果你想要大整數,可以用_atoi64函數,它的返回值是__int64。

如果還想超過LONGLONG,那麼自己定義一個類型,或者用LONGLONG數組來實現吧。不過就沒有直接的類似atoi的函數可以用了。

另外,不要求很精確的話,用double型來代替整數也可以。有atof函數可以用。

7. C語言中怎麼實現兩個超大整數的相加減乘除

#include <string.h>

#include <stdio.h>

#include <stdlib.h>

#define N 100

int main(int argc, char const *argv[])

{

char arr[N] = {};

gets(arr);

char brr[N] = {};

gets(brr);

int len1,len2,i = 0,j = 0;

len1 = strlen(arr);

len2 = strlen(brr);

int len = len1>len2?len1:len2;

/* c99之後數組初始化支持整型表達式,稱為可變長數組,但按照c89的標準是不對的

int num1[len]; //將字元串轉換成翻轉的整型數組

int num2[len];

*/

int* num1 = (int*)malloc(len*sizeof(int));

int* num2 = (int*)malloc(len*sizeof(int));

for (i = 0; i < len; i++)

{

num1[i] = i<len1 ? arr[len1-i-1]-'0':0;

}

for (j = 0; j < len; j++)

{

num2[j] = j<len2 ? brr[len2-j-1]-'0':0;

}

//int sum[len]; //定義和數組

int* sum = (int*)malloc(len*sizeof(int));

int flag=0; //設進位符

for (i = 0; i < len; i++)

{

sum[len-1-i] = (num1[i]+num2[i]+flag)%10;

flag = (num1[i]+num2[i]+flag)/10;

}

if (flag == 1) printf("1"); //如果最高位有進位 則輸出一個1

for (i = 0; i < len; i++)

{

printf("%d",sum[i]);

}

printf(" ");

free(num1);

free(num2);

free(sum);

num1 = NULL;

num2 = NULL;

sum = NULL;

return 0;

}

(7)c語言很大的整數擴展閱讀:

gets()函數用法

gets是從標准輸入設備讀字元串函數。

函數原型:char*gets(char*str);

功能為:從stdin流中讀取字元串,直至接受到換行符或EOF時停止,並將讀取的結果存放在buffer指針所指向的字元數組中。換行符不作為讀取串的內容,讀取的換行符被轉換為『\0』空字元,並由此來結束字元串。

注意:不會判斷上限,以回車結束讀取,所以程序員應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢出。使用時需要包含stdio.h頭文件

參數

str為字元串指針,用來存放讀取到的數據。

返回值

讀入成功,返回與參數buffer相同的指針;讀入過程中遇到EOF(End-of-File)或發生錯誤,返回NULL指針。所以在遇到返回值為NULL的情況,要用ferror或feof函數檢查是發生錯誤還是遇到EOF。

8. 在c語言中,想輸出一個很大的整數,如果用double數據類型都不行,還有什麼方法嗎謝謝!

可以用數組進行大數模擬。
也就是用char數組或者int數組,來模擬超大數值。每個數組元素用來表示大數的一位或者幾位。
需要自行編寫運算函數。
具體可以網路C語言高精度大數運算。

9. c語言中最大整型數

C語言中,一般而言整型數是雙位元組,所以:

有符號型:最大 32767,最小 -32768
無符號型:最大 65535,最小 0
但對於C++,面對32位機時,整型數變成了雙字,所以:
有符號型:最大 2147483647,最小 -2147483648
無符號型:最大 4294967295,最小 0

10. c語言中最大值整數類型什麼

C語言中最大的整型數據類型是long類型,佔4個位元組
C中短整型和整型均佔2個位元組,取值范圍是 -32768 ~~~ 32767
長整型佔4個位元組,取值范圍是 -2147483648 ~~~~ 2147483647
如果是無符號數的話,可以表示的數據就是
短整型和 整型: 0--- 65535
長整型: 0---4294967295
在C語言中如果一個數很大的話,超過最大的長整型,可以使用double來存儲,這樣不會影響運算精度。