欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言實(shí)現(xiàn)高精度的加法

 更新時(shí)間:2021年05月03日 11:25:34   作者:奮斗的龍貓  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)高精度的加法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)高精度的加法,供大家參考,具體內(nèi)容如下

由鍵盤(pán)輸入兩個(gè)位數(shù)很長(zhǎng)的整數(shù)(一行一個(gè),最多不超過(guò)80位),試計(jì)算并輸出這兩個(gè)數(shù)的和。

輸入樣例

1234567890123456789353534532453453453434534
987654321098765324534534534534532

輸出樣例

1234567891111111110452299856987987987969066

解題思路:

由于一個(gè)普通的變量不能保存十多位長(zhǎng)的整數(shù),所以通過(guò)數(shù)組表示最后的運(yùn)算結(jié)果,并且每一個(gè)下標(biāo)對(duì)應(yīng)運(yùn)算結(jié)果的一位數(shù)。
1、定義兩個(gè)字符數(shù)組,分別表示要進(jìn)行加法運(yùn)算的兩個(gè)數(shù)字。由于在C語(yǔ)言中,沒(méi)有專門(mén)的字符串變量,沒(méi)有string類(lèi)型,通常就用一個(gè)字符數(shù)組來(lái)存放一個(gè)字符串。此時(shí)需要注意的是,下面進(jìn)行各個(gè)數(shù)位的運(yùn)算的時(shí)候,需要將對(duì)應(yīng)的字符轉(zhuǎn)成對(duì)應(yīng)的數(shù)字。
2、定義一個(gè)整形數(shù)組,用來(lái)存放運(yùn)算結(jié)果的各個(gè)數(shù)字。同時(shí)定義之后,需要將這個(gè)數(shù)組進(jìn)行初始化,將其全部賦值為0。如果沒(méi)有進(jìn)行初始化的話,那么就會(huì)容易出錯(cuò),讀取對(duì)應(yīng)的下標(biāo)的值并不是我們以為的是0。

#include<stdio.h>
int main(){
  int arr[10];//定義一個(gè)長(zhǎng)度為10的數(shù)組,并沒(méi)有進(jìn)行初始化
  int i;
  for(i = 0; i < 10; i++)
    printf("%d ",arr[i]);
  return 0;
}

運(yùn)算結(jié)果如下圖:

很明顯,這里只是定義一個(gè)數(shù)組,讀取元素的值都是垃圾值,并不是我們以為,數(shù)組自己會(huì)初始化為0.所以我們需要對(duì)數(shù)組進(jìn)行初始化,從而使得各個(gè)數(shù)組的值為0。這里可以通過(guò)不完全初始化,即int arr[10] = {0,0},將前2項(xiàng)初始化為0,后面才會(huì)自動(dòng)為0,從而使得各個(gè)值都是0,當(dāng)然也可以通過(guò)循環(huán)遍歷每一個(gè)值,從而對(duì)每一個(gè)元素賦值為0,從而使得每一個(gè)元素的初始值為0。

#include<stdio.h>
int main(){
  int arr[10] = {0};//不完全初始化,將第一項(xiàng)初始化為0,后面的自動(dòng)初始化為0
  int i;
  for(i = 0; i < 10; i++)
    printf("%d ",arr[i]);
  return 0;
}

對(duì)應(yīng)的結(jié)果:

3、將上面的兩個(gè)字符數(shù)組進(jìn)行倒序,從而獲得它的逆序。因?yàn)槲覀冞M(jìn)行運(yùn)算的時(shí)候首先是計(jì)算個(gè)位上的,然后才是十位、百位…(獲取對(duì)應(yīng)的逆序,類(lèi)似于證明回文串的用法)

void reverse(char num[],int len){
  int i;
  char ch;
  for(i = 0; i < len/2; i++){
    ch = num[i];
    num[i] = num[len - 1 -i];
    num[len - i - 1] = ch;
  }
}

4、從左到右分別遍歷兩個(gè)字符數(shù)組,然后進(jìn)行加法運(yùn)算。此時(shí)需要注意的是將遍歷得到的字符都轉(zhuǎn)成對(duì)應(yīng)的整形數(shù)字,然后才可以進(jìn)行加法運(yùn)算。同時(shí)考慮到他們進(jìn)行運(yùn)算之后的和大于等于10的情況,如果大與等于10,那么當(dāng)前的下標(biāo)對(duì)應(yīng)的值應(yīng)該是原來(lái)的值%10,同時(shí)需要進(jìn)1。
5、遍歷完之后,還需要考慮最高位是否為0的情況,如果高位是0,那么就將這個(gè)高位去掉,否則不用去掉。

完整的代碼:

/*
由鍵盤(pán)輸入兩個(gè)位數(shù)很長(zhǎng)的整數(shù)(一行一個(gè),最多不超過(guò)80位),試計(jì)算并輸出這兩個(gè)數(shù)的和。
輸入樣例
1234567890123456789353534532453453453434534
987654321098765324534534534534532

輸出樣例
1234567891111111110452299856987987987969066
*/
#include<stdio.h>
#include<string.h>
#define N 81
void reverse(char num[],int len);//函數(shù)原型聲明
int main(){
  char num1[N],num2[N],ch;
  int num3[100],n1,n2;
  int len1,len2,max,i;
  gets(num1);
  gets(num2);//輸入兩個(gè)數(shù)字
  //分別統(tǒng)計(jì)兩個(gè)數(shù)字的長(zhǎng)度
  len1 = strlen(num1);
  len2 = strlen(num2);
  //通過(guò)循環(huán)遍歷完全初始化num3,當(dāng)然也可以不完全初始化,后面的值才會(huì)自動(dòng)初始化為0
  for(i = 0; i < N * 2; i++){
    num3[i] = 0;
  }
  max = len1 > len2? len1 : len2;//獲取兩個(gè)字符串中最大長(zhǎng)度
  //獲取字符串的倒序
  reverse(num1,len1);
  reverse(num2,len2);
  //進(jìn)行高精度的運(yùn)算
  for(i = 0; i < max; i++){
  /*
  如果這個(gè)字符數(shù)組已經(jīng)遍歷完了,那么對(duì)應(yīng)的值'\0',自動(dòng)結(jié)束標(biāo)志,
  所以需要將它對(duì)應(yīng)的字符賦值為'0',這樣下面減去'0'是得到的數(shù)字才是0,否則
  就會(huì)出現(xiàn)錯(cuò)誤
  */
    if(i >= len2)
        num2[i] = '0';
    if(i >= len1)
        num1[i] = '0';
    n1 = num1[i] - '0';//獲取對(duì)應(yīng)的字符的數(shù)字
    n2 = num2[i] - '0';
    num3[i] += n1 + n2;
    num3[i + 1] = num3[i] / 10;//表示進(jìn)位
    num3[i] = num3[i] % 10;//考慮到進(jìn)行加法運(yùn)算后他們的和大于10的情況,所以這里是%10
  }
  if(num3[i] == 0)//去除高位
    i--;
  for(; i>=0;i--)//從左往右遍歷,從而得到運(yùn)算結(jié)果
    printf("%d",num3[i]);
  return 0;
}
//獲得字符的逆序
void reverse(char num[],int len){
  int i;
  char ch;
  for(i = 0; i < len/2; i++){
    ch = num[i];
    num[i] = num[len - 1 -i];
    num[len - i - 1] = ch;
  }
}

對(duì)應(yīng)的結(jié)果:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 常用的C語(yǔ)言排序算法(兩種)

    常用的C語(yǔ)言排序算法(兩種)

    本文給大家分享兩種常用的C語(yǔ)言排序算法,代碼非常簡(jiǎn)單,感興趣的朋友可以參考下
    2016-09-09
  • C語(yǔ)言的字符函數(shù)和字符串函數(shù)詳解

    C語(yǔ)言的字符函數(shù)和字符串函數(shù)詳解

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言的字符函數(shù)和字符串函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • C++游戲編程之模擬實(shí)現(xiàn)鍵盤(pán)打字程序

    C++游戲編程之模擬實(shí)現(xiàn)鍵盤(pán)打字程序

    這篇文章主要介紹了通過(guò)C++模擬實(shí)現(xiàn)鍵盤(pán)打字的功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C++有一定的幫助,感興趣的小伙伴可以學(xué)習(xí)一下
    2021-12-12
  • C++中int類(lèi)型按字節(jié)打印輸出的方法

    C++中int類(lèi)型按字節(jié)打印輸出的方法

    這篇文章主要給大家介紹了關(guān)于C++中int類(lèi)型按字節(jié)打印輸出的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • opencv2實(shí)現(xiàn)10張圖像上下左右拼接融合

    opencv2實(shí)現(xiàn)10張圖像上下左右拼接融合

    這篇文章主要為大家詳細(xì)介紹了opencv2實(shí)現(xiàn)10張圖像上下左右拼接融合,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C++實(shí)現(xiàn)教務(wù)管理系統(tǒng)

    C++實(shí)現(xiàn)教務(wù)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)教務(wù)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 使用C語(yǔ)言繪制統(tǒng)計(jì)圖中的餅圖

    使用C語(yǔ)言繪制統(tǒng)計(jì)圖中的餅圖

    常用的統(tǒng)計(jì)圖有條形圖、柱形圖、折線圖、曲線圖、餅圖、環(huán)形圖、扇形圖,本文主要為大家詳細(xì)介紹了如何使用使用C語(yǔ)言繪制統(tǒng)計(jì)圖中的餅圖,希望對(duì)大家有所幫助
    2024-02-02
  • C語(yǔ)言實(shí)現(xiàn)煙花表白程序代碼

    C語(yǔ)言實(shí)現(xiàn)煙花表白程序代碼

    大家好,本篇文章主要講的是C語(yǔ)言實(shí)現(xiàn)煙花表白程序代碼,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • 詳解C++中構(gòu)造函數(shù),拷貝構(gòu)造函數(shù)和賦值函數(shù)的區(qū)別和實(shí)現(xiàn)

    詳解C++中構(gòu)造函數(shù),拷貝構(gòu)造函數(shù)和賦值函數(shù)的區(qū)別和實(shí)現(xiàn)

    這篇文章主要介紹了C++中構(gòu)造函數(shù),拷貝構(gòu)造函數(shù)和賦值函數(shù)的區(qū)別和實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • C語(yǔ)言實(shí)現(xiàn)順序表基本操作匯總

    C語(yǔ)言實(shí)現(xiàn)順序表基本操作匯總

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)順序表基本操作匯總,對(duì)學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的朋友有一定的借鑒價(jià)值,需要的朋友可以參考下
    2014-07-07

最新評(píng)論