int mul(int a[],int k)
{int i,t=0
for(i=1i<=a[0]i++)
{a[i]=k*a[i]+t
t=a[i]/10
a[i]%=10
}
for(i=a[0]t)
{a[++a[0]]=t%10
t/=10
}
}
int main()
{int i,n,a[102]={1,1}
scanf("%d",&n)
printf("%d!=",n)
for(i=2i<=ni++)
mul(a,i)
for(i=a[0]i>0i--)
printf("%d",a[i])
return 0
}
可以利用字符数组来存放整数的各位数值,即将整数当成一串字符来输入。
如果要输入12345678901234567890,则定义一个char型数组a[20],将用户输入的整数当成一串字符存入字符数组a中。
具体实现方法可以参考如下程序段:
char a[20]scanf("%s", a) // 输入12345678901234567890,即可将该整数输入到字符数组a当中
// 则数组a中各元素值为a[0]='1', a[1]='2', a[2]='3', ....... , a[19]='0'
// 在进行运算的时候将字符转换为数字即可(即a[i]-'0')
C语言中最大的无符号整型常数为65535,最小的无符号整型常数为0。最大的有符号整型常数为32767,最小的有符号整型常数为-32768。
在C编译系统中,基本整型的长度也为16位,因此表示的数的范围也是有限定的。十进制无符号整常数的范围为0~65535,有符号数为-32768~+32767。如果使用的数超过了上述范围,就必须用长整型数来表示。长整型数是用后缀“L”或“l”来表示的。
扩展资料:
无符号整型常数的类型说明符为unsigned。可以单独使用代表unsigned int,也可以作为前缀,表示无符号整数,即永远为非负的整型变量,大于0的数据范围约扩大为原来的2倍。各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同。但由于省去了符号位,故不能表示负数。
长整数158L和基本整常数158在数值上并无区别。但对158L,因为是长整型量,C编译系统将为它分配4个字节存储空间。而对158,因为是基本整型,根据计算机的内部字长和编译器的版本分配2或4个字节的存储空间。因此在运算和输出格式上要予以注意,避免出错。