回覆列表
  • 1 # 王小佳的慧慧

    #include <stdio.h>#include <string.h>#include <conio.h>int main() { int i,j,k,T,carry; int lena,lenb,num; char ch,c[1000] = {0}; char a[1000],b[1000]; scanf("%d",&T); while(T > 0) { i = 0; printf("\na[] = "); while(1) { // 讀取a[],"\n"結束讀入過程 fflush(stdin); ch = _getch(); if(ch == "\r") break; if(ch >= "0" && ch <= "9") { a[i++] = ch; printf("%c",ch); } } a[i] = "\0"; printf("\nb[] = "); i = 0; while(1) { // 讀取b[],"\n"結束讀入過程 fflush(stdin); ch = _getch(); if(ch == "\r") break; if(ch >= "0" && ch <= "9") { b[i++] = ch; printf("%c",ch); } } b[i] = "\0"; lena = strlen(a); lenb = strlen(b); carry = 0; // 進位 k = 0; // 從個位開始加,逆向儲存相加結果 for(i = lena - 1,j = lenb - 1; i >= 0 && j >= 0; --i,--j) { num = a[i] + b[j] - "0" - "0" + carry; // 求得該位的和 c[k++] = num % 10 + "0"; // 獲取該位數字 carry = num / 10; // 獲取進位 } while(i >= 0) { // 處理更長的數 num = a[i--] + carry - "0"; c[k++] = num % 10 + "0"; carry = num / 10; } while(j >= 0) { // 處理更長的數 num = a[j--] + carry - "0"; c[k++] = num % 10 + "0"; carry = num / 10; } if(carry) c[k++] = carry + "0"; c[k] = "\0"; for(i = 0;i < k / 2;i++) { // 把計算結果改作慣用順序 ch = c[i]; c[i] = c[k - 1 - i]; c[k - 1 - i] = ch; } printf("\n%s + %s = %s\n",a,b,c); --T; } return 0;}

  • 2 # 滴逃逃

    宣告兩個能容納1000位十進位制數的char型陣列儲存輸入數字字串,以長的做被加數和結果,短的長度控制加法迴圈次數。在加法過程中判斷和處理進位。舉例程式碼如下:

    //#include "stdafx.h"//If the vc++6.0, with this line.

    #include "stdio.h"

    #include "string.h"

    int main(void){

    char a[1002]={"0"},b[1002]={"0"},*pl=a,*ps=b;

    int i,j,la,lb;

    while(1){//保證輸入是正確的

    printf("Input a & b(length

    scanf("%[1234567890] %[1234567890]",a+1,b+1);//最前面留1位做進位

    if((la=strlen(a))

    break;

    printf("Error, redo: ");

    }

    if(la

  • 中秋節和大豐收的關聯?
  • 狗抽搐吐白沫怎麼辦?