这个程序应该是我在2004年写的
当时还只是一个读化工专业的大四学生
基本上对什么编程规范、什么算法,什么性能优化没什么了解
只是简单地用字符串模拟实现了
任意大整数的四则运算
现在看来当然很幼稚了
不过为保持原来面目,一直没改,留做纪念。
供有需要的朋友参考
敬请指教
  1 //long integer operation , inclue addition,substracttion,multiplicaton
//long integer operation , inclue addition,substracttion,multiplicaton
  2 //and division
//and division
  3 #include <stdio.h>
#include <stdio.h>
  4 #include <conio.h>
#include <conio.h>
  5 #include <ctype.h>
#include <ctype.h>
  6 #include <string.h>
#include <string.h>
  7 #define MAX 1000
#define MAX 1000
  8 #define MARK  ('0'-1)
#define MARK  ('0'-1)
  9
 10 //The Prototypes of the functions
//The Prototypes of the functions
 11 char* Initialiaze(char [],int);
char* Initialiaze(char [],int);
 12 int  Read(char [],char [],char * );
int  Read(char [],char [],char * );
 13 int  Print(char [],char [],char [],char []);
int  Print(char [],char [],char [],char []);
 14 int  Calculate(char[],char[],char[],char []);
int  Calculate(char[],char[],char[],char []);
 15 char* Addition(char[],char[]);
char* Addition(char[],char[]);
 16 char* Substraction(char[],char[]);
char* Substraction(char[],char[]);
 17 char* Multiplication(char[],char[]);
char* Multiplication(char[],char[]);
 18 char* Division(char[],char[]);
char* Division(char[],char[]);
 19 char Div_per_bit(char [],int , char []);
char Div_per_bit(char [],int , char []);
 20 int Sub_per_bit(char [],char [],int *);
int Sub_per_bit(char [],char [],int *);
 21 int Copy(char [],int ,char []);
int Copy(char [],int ,char []);
 22 int Compare(char [],char []);
int Compare(char [],char []);
 23 int  Data_Process(char []);
int  Data_Process(char []);
 24 int  Value(char);
int  Value(char);
 25 int  Check(char []);
int  Check(char []);
 26 int  Compare(char [],char []);
int  Compare(char [],char []);
 27 int Judge(int);
int Judge(int);
 28 int Convert(char [],char [],int);
int Convert(char [],char [],int);
 29
 30 //The main function,calling  Read , Calculate  and Print function
//The main function,calling  Read , Calculate  and Print function
 31 int  main(void)
int  main(void)
 32

 {    char a[MAX],b[MAX],c[2*MAX],action[MAX],ch='\t';
{    char a[MAX],b[MAX],c[2*MAX],action[MAX],ch='\t';
 33 while   (ch!=EOF)
     while   (ch!=EOF)
 34
 
      {
{
 35 clrscr();
       clrscr();
 36 Read(a,b,action);
       Read(a,b,action);
 37 if (Calculate(a,b,c,action))
       if (Calculate(a,b,c,action))
 38 Print(a,b,c,action);
         Print(a,b,c,action);
 39 ch=getchar();
       ch=getchar();
 40 }
     }
 41 return 0;
     return 0;
 42 }
}
 43 //The check function check if the input number is legal
//The check function check if the input number is legal
 44 int  Check(char s[])
int  Check(char s[])
 45

 {    int i;
{    int i;
 46 if (strlen(s)==0)
     if (strlen(s)==0)
 47 return 0;
         return 0;
 48 if (strlen(s)>=MAX)
     if (strlen(s)>=MAX)
 49 return 0;
         return 0;
 50
 51 for (i=0; s[i]; i++)
     for (i=0; s[i]; i++)
 52 if (!isdigit(s[i]))
       if (!isdigit(s[i]))
 53 return 0;
      return 0;
 54 return 1;
     return 1;
 55 }
}
 56 //The Iniatilize function ,initialize the result number before calculation
//The Iniatilize function ,initialize the result number before calculation
 57 char* Initialize(char s[],int length)
char* Initialize(char s[],int length)
 58

 {    int i;
{    int i;
 59 for (i=0; i<length; i++)
     for (i=0; i<length; i++)
 60 s[i]=MARK;
       s[i]=MARK;
 61 return s;
     return s;
 62
 63 }
}
 64 //The Read function,Read the operands and the operation
//The Read function,Read the operands and the operation
 65 int  Read(char a[],char b[],char action[])
int  Read(char a[],char b[],char action[])
 66

 {
{
 67 printf("************This Program calculats two long integer action!************\n");
     printf("************This Program calculats two long integer action!************\n");
 68 printf("Input long integer A,max length is %d:\n",MAX);
     printf("Input long integer A,max length is %d:\n",MAX);
 69 gets(a);
     gets(a);
 70 while (!Check(a))
     while (!Check(a))
 71
 
      {   printf("Input error , Please input a correct value :\n");
{   printf("Input error , Please input a correct value :\n");
 72 gets(a);
     gets(a);
 73 }
     }
 74 printf("Iuput the operation over a & b \n");
     printf("Iuput the operation over a & b \n");
 75 printf("addition is '+' ,substraction is '-',multiplication is '*',division is '/'\n");
     printf("addition is '+' ,substraction is '-',multiplication is '*',division is '/'\n");
 76 printf("                            Warning:\n");
     printf("                            Warning:\n");
 77 printf("If you do the division,A must bigger than B ,and B must not equal to zero !\n");
     printf("If you do the division,A must bigger than B ,and B must not equal to zero !\n");
 78 gets(action);
     gets(action);
 79 while ((Compare(action,"+")!=0) && (Compare(action,"-")!=0) && (Compare(action,"*")!=0) && (Compare(action,"/")!=0))
     while ((Compare(action,"+")!=0) && (Compare(action,"-")!=0) && (Compare(action,"*")!=0) && (Compare(action,"/")!=0))
 80
 
      {   printf("Input error , Please input a correct action :\n");
{   printf("Input error , Please input a correct action :\n");
 81 gets(action);
         gets(action);
 82 }
     }
 83 printf("Input long integer b,max length is %d:\n",MAX);
     printf("Input long integer b,max length is %d:\n",MAX);
 84 gets(b);
     gets(b);
 85 while (!Check(b))
     while (!Check(b))
 86
 
      {   printf("Input error , Please input a correct value :\n");
{   printf("Input error , Please input a correct value :\n");
 87 gets(b);
     gets(b);
 88 }
     }
 89 return 1;
     return 1;
 90 }
}
 91 //The Calculate function,calling Addition,Substraction,Multiplication or Division function  in accordance with the action
//The Calculate function,calling Addition,Substraction,Multiplication or Division function  in accordance with the action
 92 int  Calculate(char a[],char b[],char c[],char action[])
int  Calculate(char a[],char b[],char c[],char action[])
 93

 {
{
 94 if (Compare(action,"+")==0)
    if (Compare(action,"+")==0)
 95
 
     {     strcpy(c,Addition(a,b));
{     strcpy(c,Addition(a,b));
 96 return 1;
         return 1;
 97 }
    }
 98 if (Compare(action,"-")==0)
    if (Compare(action,"-")==0)
 99
 
     {      if  ((Substraction(a,b))!=NULL)
{      if  ((Substraction(a,b))!=NULL)
100 strcpy(c,Substraction(a,b));
              strcpy(c,Substraction(a,b));
101 else
          else
102
 
           {      strcpy(c,"-");
{      strcpy(c,"-");
103 strcat(c,Substraction(b,a));
              strcat(c,Substraction(b,a));
104 }
          }
105 return 1;
          return 1;
106 }
    }
107 if (Compare(action,"*")==0)
    if (Compare(action,"*")==0)
108
 
     {    strcpy(c,Multiplication(a,b));
{    strcpy(c,Multiplication(a,b));
109 return 1;
         return 1;
110 }
    }
111
112 if (Compare(action,"/")==0)
    if (Compare(action,"/")==0)
113
 
     {     if ((Division(a,b))!=NULL)
{     if ((Division(a,b))!=NULL)
114 strcpy(c,Division(a,b));
            strcpy(c,Division(a,b));
115 else
     else
116
 
      {   printf("Press Ctrl-Z to end, Press Enter to recalculate!\n");
{   printf("Press Ctrl-Z to end, Press Enter to recalculate!\n");
117 return 0;
         return 0;
118 }
     }
119 return 1;
         return 1;
120 }
     }
121
122 }
}
123 //The Print function , print the result
//The Print function , print the result
124 int  Print(char a[],char b[],char c[],char action[])
int  Print(char a[],char b[],char c[],char action[])
125

 {    printf("The result of \n%s \n%s \n%s \nis :\n",a,action,b);
{    printf("The result of \n%s \n%s \n%s \nis :\n",a,action,b);
126 puts(c);
     puts(c);
127 printf("Press Ctrl-Z to end , Press Enter  to recalculate
     printf("Press Ctrl-Z to end , Press Enter  to recalculate ..\n");
..\n");
128 return 1;
     return 1;
129 }
}
130 //The Addition function , add two operands and return the result
//The Addition function , add two operands and return the result
131 char* Addition(char a[],char b[])
char* Addition(char a[],char b[])
132

 {    char c[2*MAX],d[2*MAX];
{    char c[2*MAX],d[2*MAX];
133 int i,j,k,a_length,b_length;
     int i,j,k,a_length,b_length;
134 Initialize(c,2*MAX);
     Initialize(c,2*MAX);
135 a_length=strlen(a);
     a_length=strlen(a);
136 b_length=strlen(b);
     b_length=strlen(b);
137 for (i=a_length-1,j=b_length-1,k=2*MAX-1; ( i>=0 || j>=0 ) ; i--,j--,k--)
     for (i=a_length-1,j=b_length-1,k=2*MAX-1; ( i>=0 || j>=0 ) ; i--,j--,k--)
138
 
      {  if ( i>=0 && j>=0 )
{  if ( i>=0 && j>=0 )
139 c[k]=Value(a[i])+Value(b[j])+'0';
      c[k]=Value(a[i])+Value(b[j])+'0';
140 else
    else
141 if (i>=0 && j<0 )
      if (i>=0 && j<0 )
142 c[k]=Value(a[i])+'0';
         c[k]=Value(a[i])+'0';
143 else
      else
144 if ( i<0 && j>=0 )
        if ( i<0 && j>=0 )
145 c[k]=Value(b[j])+'0';
           c[k]=Value(b[j])+'0';
146 }
     }
147 Data_Process(c);
     Data_Process(c);
148 Convert(c,d,2*MAX);
     Convert(c,d,2*MAX);
149 return d;
     return d;
150 }
}
151 //The Substraction function , substract one operand from another operand , and return the result
//The Substraction function , substract one operand from another operand , and return the result
152 char* Substraction(char a[],char b[])
char* Substraction(char a[],char b[])
153

 {    char c[2*MAX],d[2*MAX];
{    char c[2*MAX],d[2*MAX];
154
 int i,j,k,a_length,b_length,sub_result,symbol,flag[2*MAX]=
     int i,j,k,a_length,b_length,sub_result,symbol,flag[2*MAX]= {0};
{0};
155 Initialize(c,2*MAX);
     Initialize(c,2*MAX);
156 a_length=strlen(a);
     a_length=strlen(a);
157 b_length=strlen(b);
     b_length=strlen(b);
158 if (strcmp(a,b)==0)
     if (strcmp(a,b)==0)
159 return ("0");
    return ("0");
160 for (i=a_length-1,j=b_length-1,k=2*MAX-1; ( i>=0 || j>=0 ) ; i--,j--,k--)
     for (i=a_length-1,j=b_length-1,k=2*MAX-1; ( i>=0 || j>=0 ) ; i--,j--,k--)
161
 
      {   sub_result=a[i]-b[j];
{   sub_result=a[i]-b[j];
162 symbol=Judge(sub_result);
     symbol=Judge(sub_result);
163 if (i>=1 && j>=0)
     if (i>=1 && j>=0)
164
 
      {      if (flag[k]==0)
{      if (flag[k]==0)
165
 
         {   if  (a[i]>=b[j])
{   if  (a[i]>=b[j])
166 c[k]=sub_result+'0';
               c[k]=sub_result+'0';
167 else
            else
168
 
             {       c[k]=sub_result+10+'0';
{       c[k]=sub_result+10+'0';
169 flag[k-1]=1;
               flag[k-1]=1;
170 }
            }
171 }
        }
172 else
        else
173
 
         {   if (a[i]-b[j]>=1)
{   if (a[i]-b[j]>=1)
174 c[k]=sub_result-1+'0';
              c[k]=sub_result-1+'0';
175 else
            else
176
 
             {     c[k]=sub_result+9+'0';
{     c[k]=sub_result+9+'0';
177 flag[k-1]=1;
              flag[k-1]=1;
178 }
            }
179 }
        }
180 }
     }
181 else
     else
182 if  (i==0 && j<0)
     if  (i==0 && j<0)
183
 
         {
{
184 if (flag[k]==0)
             if (flag[k]==0)
185 c[k]=a[i];
              c[k]=a[i];
186 else
             else
187
 
              {   if (a[i]==1)
{   if (a[i]==1)
188 ;
                ;
189 else
             else
190 c[k]=a[i]-1;
                 c[k]=a[i]-1;
191 }
             }
192 }
        }
193 else
     else
194
 
      {  if ((i==0) && (j==0))
{  if ((i==0) && (j==0))
195
 
            {   if (flag[k]==0)
{   if (flag[k]==0)
196
 
                {  switch (symbol)
{  switch (symbol)
197
 
               {  case 0:   ;
{  case 0:   ;
198 break;
                       break;
199 case 1:   c[k]=sub_result+'0';
                 case 1:   c[k]=sub_result+'0';
200 break;
                       break;
201 case -1:  return NULL;
                 case -1:  return NULL;
202 break;
                       break;
203 }
               }
204 }
               }
205 else
               else
206
 
                {   switch (Judge(sub_result-1))
{   switch (Judge(sub_result-1))
207
 
                {  case 0:   ;
{  case 0:   ;
208 break;
                        break;
209 case 1:   c[k]=sub_result-1+'0';
                  case 1:   c[k]=sub_result-1+'0';
210 break;
                        break;
211 case -1:  return NULL;
                  case -1:  return NULL;
212 break;
                        break;
213 }
               }
214 }
               }
215 }
           }
216 else
         else
217 if ((i<0) && (j>=0))
         if ((i<0) && (j>=0))
218 return NULL;
            return NULL;
219 else
         else
220 if ((i>0) && (j<0))
         if ((i>0) && (j<0))
221
 
          {  if (flag[k]==0)
{  if (flag[k]==0)
222 c[k]=a[i];
              c[k]=a[i];
223 else
            else
224
 
             {   if (a[i]>'0')
{   if (a[i]>'0')
225 c[k]=a[i]-1;
               c[k]=a[i]-1;
226 else
            else
227
 
             {  c[k]='9';
{  c[k]='9';
228 flag[k-1]=1;
               flag[k-1]=1;
229 }
            }
230 }
            }
231 }
         }
232 }
     }
233 }
     }
234 Convert(c,d,2*MAX);
     Convert(c,d,2*MAX);
235 return d;
     return d;
236 }
}
237 //The Multiplication function,multipy two operands and return the result
//The Multiplication function,multipy two operands and return the result
238 char* Multiplication(char a[],char b[])
char* Multiplication(char a[],char b[])
239

 {    char c[2*MAX],d[2*MAX];
{    char c[2*MAX],d[2*MAX];
240 int i,j,k,p,a_length,b_length;
     int i,j,k,p,a_length,b_length;
241 Initialize(c,2*MAX);
     Initialize(c,2*MAX);
242 a_length=strlen(a);
     a_length=strlen(a);
243 b_length=strlen(b);
     b_length=strlen(b);
244 for (j=b_length-1;  j>=0 ; j--)
     for (j=b_length-1;  j>=0 ; j--)
245
 
      {  k=2*MAX-(b_length-j);
{  k=2*MAX-(b_length-j);
246 for (i=a_length-1,p=k; i>=0; i--,p--)
    for (i=a_length-1,p=k; i>=0; i--,p--)
247 if (c[p]==MARK)
       if (c[p]==MARK)
248
 
        {    c[p]=(Value(a[i]))*(Value(b[j]))%10+'0';
{    c[p]=(Value(a[i]))*(Value(b[j]))%10+'0';
249 if (c[p-1]==MARK)
            if (c[p-1]==MARK)
250 c[p-1]=(Value(a[i]))*(Value(b[j]))/10+'0';
                     c[p-1]=(Value(a[i]))*(Value(b[j]))/10+'0';
251 else
                 else
252 c[p-1]+=(Value(a[i]))*(Value(b[j]))/10;
                     c[p-1]+=(Value(a[i]))*(Value(b[j]))/10;
253 }
       }
254 else
       else
255
 
        {    c[p]+=(Value(a[i]))*(Value(b[j]))%10;
{    c[p]+=(Value(a[i]))*(Value(b[j]))%10;
256 if (c[p-1]==MARK)
            if (c[p-1]==MARK)
257 c[p-1]=(Value(a[i]))*(Value(b[j]))/10+'0';
                 c[p-1]=(Value(a[i]))*(Value(b[j]))/10+'0';
258 else
            else
259 c[p-1]+=(Value(a[i]))*(Value(b[j]))/10;
                 c[p-1]+=(Value(a[i]))*(Value(b[j]))/10;
260 }
       }
261 Data_Process(c);
    Data_Process(c);
262 }
     }
263 Convert(c,d,2*MAX);
     Convert(c,d,2*MAX);
264 return d;
     return d;
265
266 }
}
267 //The Division function,divise one operand from another operand, and return the result
//The Division function,divise one operand from another operand, and return the result
268 char* Division(char a[],char b[])
char* Division(char a[],char b[])
269

 {   char a1[MAX],c[MAX],d[MAX];
{   char a1[MAX],c[MAX],d[MAX];
270 strcpy(a1,a);
    strcpy(a1,a);
271 int i,k,a_length=strlen(a1),b_length=strlen(b);
    int i,k,a_length=strlen(a1),b_length=strlen(b);
272 for (i=0; b[i]; i++)
    for (i=0; b[i]; i++)
273 if (b[i]!='0')
       if (b[i]!='0')
274 break;
      break;
275 if (i==strlen(b))
    if (i==strlen(b))
276
277
 
     {    printf("Error!\nIf you do division,the dividend must not equal to zero!\n");
{    printf("Error!\nIf you do division,the dividend must not equal to zero!\n");
278 return 0;
        return 0;
279 }
    }
280 if (Compare(a,b)==-1)
    if (Compare(a,b)==-1)
281
 
     {    printf("Error!\nIf you do division, A must bigger than B!\n");
{    printf("Error!\nIf you do division, A must bigger than B!\n");
282 return 0;
    return 0;
283 }
    }
284 for ( i=0,k=0; k<a_length-b_length+1; i++,k++)
    for ( i=0,k=0; k<a_length-b_length+1; i++,k++)
285 c[k]=Div_per_bit(a1,b_length+i,b);
      c[k]=Div_per_bit(a1,b_length+i,b);
286 c[k]='\0';
    c[k]='\0';
287 Convert(c,d,MAX);
    Convert(c,d,MAX);
288 return d;
    return d;
289
290 }
}
291 //The Div_per_bit function , calculate quotient per digit ,and return the result to Division function
//The Div_per_bit function , calculate quotient per digit ,and return the result to Division function
292 char Div_per_bit(char a[],int a_l,char b[])
char Div_per_bit(char a[],int a_l,char b[])
293

 {   int i,j;
{   int i,j;
294 char c[MAX];
    char c[MAX];
295 for (i=0,j=0; i<a_l; i++)
    for (i=0,j=0; i<a_l; i++)
296 if ( a[i]!=MARK)
      if ( a[i]!=MARK)
297
 
       {   c[j]=a[i];
{   c[j]=a[i];
298 j++;
      j++;
299 }
      }
300 c[j]='\0';
    c[j]='\0';
301 for (i=0; c[i]; i++)
    for (i=0; c[i]; i++)
302 if (c[i]!='0')
       if (c[i]!='0')
303 break;
      break;
304 if (i==strlen(c))
    if (i==strlen(c))
305 return '0';
       return '0';
306 if (Compare(c,b)<0)
    if (Compare(c,b)<0)
307 return '0';
       return '0';
308 if (Compare(c,b)==0)
    if (Compare(c,b)==0)
309
 
     {  for ( i=0; i<a_l; i++)
{  for ( i=0; i<a_l; i++)
310 a[i]=MARK;
      a[i]=MARK;
311 return '1';
       return '1';
312 }
    }
313 i=0;
    i=0;
314 while (Compare(c,b)>=0)
    while (Compare(c,b)>=0)
315 Sub_per_bit(c,b,&i);
       Sub_per_bit(c,b,&i);
316 Copy(a,a_l,c);
    Copy(a,a_l,c);
317 return ('0'+i);
    return ('0'+i);
318
319 }
}
320 //The Sub_per_bit function, do the division by using substraction time after time
//The Sub_per_bit function, do the division by using substraction time after time
321 int  Sub_per_bit(char a[],char b[],int *count)
int  Sub_per_bit(char a[],char b[],int *count)
322

 {    char c[MAX],d[MAX];
{    char c[MAX],d[MAX];
323
 int i,j,k,a_length,b_length,sub_result,symbol,flag[MAX]=
     int i,j,k,a_length,b_length,sub_result,symbol,flag[MAX]= {0};
{0};
324 Initialize(c,MAX);
     Initialize(c,MAX);
325 a_length=strlen(a);
     a_length=strlen(a);
326 b_length=strlen(b);
     b_length=strlen(b);
327 if (strcmp(a,b)==0)
     if (strcmp(a,b)==0)
328 strcpy(c,"0");
    strcpy(c,"0");
329 for (i=a_length-1,j=b_length-1,k=MAX-1; ( i>=0 || j>=0 ) ; i--,j--,k--)
     for (i=a_length-1,j=b_length-1,k=MAX-1; ( i>=0 || j>=0 ) ; i--,j--,k--)
330
 
      {   sub_result=a[i]-b[j];
{   sub_result=a[i]-b[j];
331 symbol=Judge(sub_result);
     symbol=Judge(sub_result);
332 if (i>=1 && j>=0)
     if (i>=1 && j>=0)
333
 
      {      if (flag[k]==0)
{      if (flag[k]==0)
334
 
         {   if  (a[i]>=b[j])
{   if  (a[i]>=b[j])
335 c[k]=sub_result+'0';
               c[k]=sub_result+'0';
336 else
            else
337
 
             {       c[k]=sub_result+10+'0';
{       c[k]=sub_result+10+'0';
338 flag[k-1]=1;
               flag[k-1]=1;
339 }
            }
340 }
        }
341 else
        else
342
 
         {   if (a[i]-b[j]>=1)
{   if (a[i]-b[j]>=1)
343 c[k]=sub_result-1+'0';
              c[k]=sub_result-1+'0';
344 else
            else
345
 
             {     c[k]=sub_result+9+'0';
{     c[k]=sub_result+9+'0';
346 flag[k-1]=1;
              flag[k-1]=1;
347 }
            }
348 }
        }
349 }
     }
350 else
     else
351 if  (i==0 && j<0)
     if  (i==0 && j<0)
352
 
         {
{
353 if (flag[k]==0)
             if (flag[k]==0)
354 c[k]=a[i];
              c[k]=a[i];
355 else
             else
356
 
              {   if (a[i]==1)
{   if (a[i]==1)
357 ;
                ;
358 else
             else
359 c[k]=a[i]-1;
                 c[k]=a[i]-1;
360 }
             }
361 }
        }
362 else
     else
363
 
      {  if ((i==0) && (j==0))
{  if ((i==0) && (j==0))
364
 
            {   if (flag[k]==0)
{   if (flag[k]==0)
365
 
                {  switch (symbol)
{  switch (symbol)
366
 
               {  case 0:   ;
{  case 0:   ;
367 break;
                       break;
368 case 1:   c[k]=sub_result+'0';
                 case 1:   c[k]=sub_result+'0';
369 break;
                       break;
370 case -1:  return 0;
                 case -1:  return 0;
371 break;
                       break;
372 }
               }
373 }
               }
374 else
               else
375
 
                {   switch (Judge(sub_result-1))
{   switch (Judge(sub_result-1))
376
 
                {  case 0:   ;
{  case 0:   ;
377 break;
                    break;
378 case 1:   c[k]=sub_result-1+'0';
                  case 1:   c[k]=sub_result-1+'0';
379 break;
                    break;
380 case -1:  return 0;
                  case -1:  return 0;
381 break;
                    break;
382 }
               }
383 }
               }
384 }
           }
385 else
         else
386 if ((i<0) && (j>=0))
         if ((i<0) && (j>=0))
387
 
          {  return 0;
{  return 0;
388 }
         }
389 else
         else
390 if ((i>0) && (j<0))
         if ((i>0) && (j<0))
391
 
          {  if (flag[k]==0)
{  if (flag[k]==0)
392 c[k]=a[i];
              c[k]=a[i];
393 else
            else
394
 
             {   if (a[i]>'0')
{   if (a[i]>'0')
395 c[k]=a[i]-1;
               c[k]=a[i]-1;
396 else
            else
397
 
             {  c[k]='9';
{  c[k]='9';
398 flag[k-1]=1;
               flag[k-1]=1;
399 }
            }
400 }
            }
401 }
         }
402 }
     }
403 }
     }
404 Convert(c,d,MAX);
     Convert(c,d,MAX);
405 strcpy(a,d);
     strcpy(a,d);
406 (*count)++;
     (*count)++;
407 return 1;
     return 1;
408 }
}
409 //The Copy function , copy  a number_string  to another , wipe off the inutility symbol
//The Copy function , copy  a number_string  to another , wipe off the inutility symbol
410 int Copy(char a[],int a_l,char c[])
int Copy(char a[],int a_l,char c[])
411

 {   int i,j,c_l=strlen(c);
{   int i,j,c_l=strlen(c);
412 for (i=0; i<a_l-c_l; i++)
    for (i=0; i<a_l-c_l; i++)
413 a[i]=MARK;
      a[i]=MARK;
414 for (i,j=0; j<c_l; i++,j++)
    for (i,j=0; j<c_l; i++,j++)
415 a[i]=c[j];
      a[i]=c[j];
416 return 1;
    return 1;
417 }
}
418 //The Compare function ,compare two numbers and return the result
//The Compare function ,compare two numbers and return the result
419 int Compare(char a[],char b[])
int Compare(char a[],char b[])
420

 {   char c[MAX];
{   char c[MAX];
421 if ((strlen(a))>(strlen(b)))
    if ((strlen(a))>(strlen(b)))
422 return 1;
       return 1;
423 if ((strlen(a))==(strlen(b)))
    if ((strlen(a))==(strlen(b)))
424 return (strcmp(a,b));
       return (strcmp(a,b));
425 if ((strlen(a))<(strlen(b)))
    if ((strlen(a))<(strlen(b)))
426 return -1;
       return -1;
427 }
}
428
429 //The Value function , receiver a digit_char, and return the number
//The Value function , receiver a digit_char, and return the number
430 int Value(char c)
int Value(char c)
431

 {   if (isdigit(c))
{   if (isdigit(c))
432 return (c-'0');
       return (c-'0');
433 else return 0;
    else return 0;
434 }
}
435 //The Data_Process function,
//The Data_Process function,
436 int Data_Process(char s[])
int Data_Process(char s[])
437

 {   int p,head,tail=2*MAX-1;
{   int p,head,tail=2*MAX-1;
438 for (head=0; s[head]==MARK ; head++)
    for (head=0; s[head]==MARK ; head++)
439 ;
      ;
440 for (p=tail; p>=head  ; p--)
    for (p=tail; p>=head  ; p--)
441 if (!isdigit(s[p]))
      if (!isdigit(s[p]))
442 if (s[p-1]!=MARK)
     if (s[p-1]!=MARK)
443
 
      {  s[p-1]+=(s[p]-'0')/10;
{  s[p-1]+=(s[p]-'0')/10;
444 s[p]=(s[p]-'0')%10+'0';
        s[p]=(s[p]-'0')%10+'0';
445 }
     }
446 else
     else
447
 
      {  s[p-1]=(s[p]-'0')/10+'0';
{  s[p-1]=(s[p]-'0')/10+'0';
448 s[p]=(s[p]-'0')%10+'0';
        s[p]=(s[p]-'0')%10+'0';
449 }
     }
450 return 1;
     return 1;
451 }
}
452 //The Judeg function , judge the symbol of the number
//The Judeg function , judge the symbol of the number
453 int Judge(int i)
int Judge(int i)
454

 {   if (i==0)
{   if (i==0)
455 return 0;
       return 0;
456 else
    else
457 if (i>0)
       if (i>0)
458 return 1;
      return 1;
459 else
       else
460 return  -1;
      return  -1;
461 }
}
462 //The Convert function , convert the original result to the final result ,wipe off the inuility symbol and number
//The Convert function , convert the original result to the final result ,wipe off the inuility symbol and number
463 int Convert(char c[],char d[],int length)
int Convert(char c[],char d[],int length)
464

 {   int i,j;
{   int i,j;
465 for (i=0; i<length; i++)
    for (i=0; i<length; i++)
466 if (c[i]==MARK || c[i]=='0')
      if (c[i]==MARK || c[i]=='0')
467 ;
      ;
468 else
      else
469 break;
     break;
470 for (i,j=0; i<length; i++,j++)
    for (i,j=0; i<length; i++,j++)
471 d[j]=c[i];
      d[j]=c[i];
472 d[j]='\0';
    d[j]='\0';
473 return 1;
    return 1;
474 }
}
475
 
	posted on 2005-12-04 22:33 
乖狗狗 阅读(6882) 
评论(11)  编辑 收藏 引用