百練2736 大整數減法

 1,和加法差不多,注意借位就成。

2,怎麼消去前面的0?這個值得注意..其實很簡答的。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define size 200
int main()
{
	int num1[size],num2[size],m;
	char s1[size],s2[size];
	int n,i,k=0,a=0,b=0,len1,len2,maxlen;
	
	scanf("%d", &n);
	
	
	
	while(n--)
	{
		scanf("%s%s", s1, s2);
		
		memset(num1,0,sizeof(num1));
		
		memset(num2,0,sizeof(num2));
		
		len1 = strlen(s1);
		
		len2 = strlen(s2);	
		
		if (len1 < len2)
		{
			break;
		}
		else
		{
			k = 0;
			
			for (i=len1-1; i>=0; i--)
			{
				num1[k++] = s1[i] - '0';
			}
			
			k = 0;
			
			for (i=len2-1; i>=0; i--)
			{
				num2[k++] = s2[i] - '0';
			}
			
			maxlen = len1 > len2 ? len1 : len2;
			
			for (i=0; i<maxlen; i++)                       
			{
				num1[i] -= num2[i];
				
				if (num1[i] < 0)                          //減法借位 
				{
					num1[i] = 10 + num1[i];
					
					num1[i+1] = num1[i+1] - 1;
				}
			}
			
			m = maxlen; 
			
			while (!num1[m])                                 //m消掉0 
			{
				m--;
			}
			for(i=m; i>=0; i--)
			{
				printf("%d",num1[i]);
			}
			m = 0;
				     
           
            if (n)
            {
				printf("\n");
			}
		}
	}
	system("pause");
	return 0;
}


 

發佈了26 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章