1001WA
时间关系只实现了其中一部分的功能 现在的程序可以实现一个大数的平方
1 #include <stdio.h> 2 #include <string.h> 3 void mypower(int num2); 4 int findflag(); 5 int myflag = 0; 6 char num1[200]; 7 int num2; 8 char a[200] = {0}; 9 char b[200] = {0}; 10 int c[200] = {0}; 11 int d[200] = {0}; 12 int main(void) 13 { 14 scanf("%s%d",num1,&num2); 15 myflag = findflag(); 16 mypower(num2); 17 return 0; 18 } 19 20 21 void mypower(int num2) 22 { 23 int i,j,k,s; 24 for(s = 1;s < num2;s++) 25 { 26 memset(c,0,sizeof(c)); 27 if(b[0] == '\0') 28 { 29 for(i = 0;a[i] != '\0';i++) 30 { 31 b[i] = a[i]; 32 } 33 } 34 for(i = 0;a[i] != '\0';i++) 35 for(j =0;b[j] != '\0';j++) 36 { 37 c[i+j] += (a[i] - '0') * (b[j] - '0'); 38 39 } 40 for(k = i+j-1;k > 1;k--) 41 { 42 d[k] = (c[k-1] % 10); 43 c[k-2] += c[k-1] /10; 44 } 45 d[0] = (c[0] / 10); 46 d[1] = (c[0] % 10); 47 if(d[0] != 0) 48 { 49 for(k =0 ;k < i+j;k++) 50 b[k] = d[k]; 51 }else 52 { 53 for(k =1 ;k < i+j;k++) 54 b[k-1] = d[k]; 55 } 56 57 } 58 myflag *= num2; 59 if(d[0] != 0) 60 { 61 for(s =0;s < myflag;s++) 62 { 63 b[i+j-s] = b[i+j-1-s]; 64 b[i+j-1-s] = '.'; 65 } 66 for(i = 0;i<k+1;i++) 67 { 68 if(b[i] == '.') 69 { 70 printf("%c",b[i]); 71 continue; 72 } 73 printf("%d",b[i]); 74 } 75 }else 76 { 77 for(s =0;s < myflag;s++) 78 { 79 b[i+j-1-s] = b[i+j-2-s]; 80 b[i+j-2-s] = '.'; 81 } 82 for(i = 0;i<k;i++) 83 { 84 if(b[i] == '.') 85 { 86 printf("%c",b[i]); 87 continue; 88 } 89 printf("%d",b[i]); 90 } 91 } 92 93 } 94 95 int findflag() 96 { 97 int i,j,flag = 0; 98 for(i = 0;num1[i] != '\0';i++) 99 { 100 if(num1[i] == '.') 101 { 102 flag = i; 103 continue; 104 } 105 a[j++] = num1[i]; 106 } 107 flag = j - flag; 108 return flag; 109 }
========================if i have some wrong, please give me a message, thx.========================