题目地址http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1435
前面一个是大数需要字符串来存 后面一个定义long型就够了 计算的时候就是边做边把字符转换为数字
取余比较简单一点 可以边转边取余 转完输出结果就行了
除法 模拟手算 从头找 找第一个能被它整除的那一位 找到之后 就依次除就行了 除的结果存在一个整型数组里
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
long x, i, j, k ,s;
int y,flag,r[1001];
char c[1001],p;
while(scanf("%s %c %ld", c, &p, &x)!=EOF)
{
s = 0;
y = 1;
j = 0;
k = strlen(c);
if(p == '/')
{
flag = 0;//标记一个变量 找到第一个之后 依次除下去
for(i = 0 ; i < k ; i++)
{
s= s*10+c[i]-'0';
if(s>=x&&flag == 0)
{
r[j++] = s/x;
s = s%x;
flag = 1;
}
else
if(flag)
{
r[j++] = s/x;
s = s%x;
}
}
flag = 0;
for(i = 0 ; i < j ; i++)
{
printf("%d",r[i]);
flag = 1;
}
if(flag == 0)
printf("0");
puts("");
}
else
{
s = 0;
for(i = 0 ; i < k; i++)
{
s = s*10+c[i]-'0';
s = s%x;
}
printf("%ld\n", s);
}


1 #include <stdio.h> 2 #include <stdlib.h> 3 #include<string.h> 4 int main() 5 { 6 long x, i, j, k ,s; 7 int y,flag,r[1001]; 8 char c[1001],p; 9 while(scanf("%s %c %ld", c, &p, &x)!=EOF) 10 { 11 s = 0; 12 y = 1; 13 j = 0; 14 k = strlen(c); 15 if(p == '/') 16 { 17 flag = 0;//标记一个变量 找到第一个之后 依次除下去 18 for(i = 0 ; i < k ; i++) 19 { 20 s= s*10+c[i]-'0'; 21 if(s>=x&&flag == 0) 22 { 23 r[j++] = s/x; 24 s = s%x; 25 flag = 1; 26 } 27 else 28 if(flag) 29 { 30 r[j++] = s/x; 31 s = s%x; 32 } 33 } 34 flag = 0; 35 for(i = 0 ; i < j ; i++) 36 { 37 printf("%d",r[i]); 38 flag = 1; 39 } 40 if(flag == 0) 41 printf("0"); 42 puts(""); 43 } 44 else 45 { 46 s = 0; 47 for(i = 0 ; i < k; i++) 48 { 49 s = s*10+c[i]-'0'; 50 s = s%x; 51 } 52 printf("%ld\n", s); 53 } 54 } 55 return 0; 56 }