我使用 Frama-C 工具来生成这个程序(main.c)的依赖图。
#include<stdio.h>
int main()
{
int n,i,m,j;
while(scanf("%d",&n)!=EOF)
{
m=n;
for(i=n-1;i>=1;i--)
{
m=m*i;
while(m%10==0)
{
m=m/10;
}
m=m%10000;
}
m=m%10;
printf("%5d -> %d\n",n,m);
}
return 0;
}
命令是:
frama-c -pdg -dot-pdg main main.c
dot -Tpdf main.main.dot -o main.pdf
结果是 我的问题是为什么语句“m=m*i;”,“m=m%10000”不映射到节点。结果似乎不对,因为代码中有三个循环。