在知道里帮别人答题写写小程序的时候发现了个小东西,不知道是不是TC自身的问题。
下面是代码:
主要是实现对输入的数,计数其数字中0的个数,以及其阶乘。输出。
#include<stdio.h>
void main(){
long int i,k,l,m=1;
int j,count=0;
printf("PLEASE INPUT THE NUM:/n");
scanf("%ld",&i);/*输入要操作的数*/
k=i;
for(l=i;l>=1;--l){
m*=l;
}
while(i>0){
j=i%10;
if(j==0) count+=1;/*count进行计数*/
i=i/10;
}
printf("THERE ARE %d ZERO IN %ld/n%d!=%ld/n",count,k,k,m);/*输出结果*/
}
我在TC环境下进行编译以及跟踪结果的时候,用例子i=3,跟踪,得到count=0,m=6,F7单步执行是这样,但是到了输出的那屏时,出现的m值却不是6,几次都是这样,不知道为什么。
后面我试了下在VC6.0下编译运行,同样用i=3进行,得到了正确的结果。哎!~~,谁能告诉下我这是怎么回事。
哦,找到问题了,全是自己的粗心所致,哎~~~,最后第二个k打印格式出了问题
再次领会题目意思后,改了如下:
#include<stdio.h>
void main(){
long int i,k,l,m=1,n;
int j,count=0;
printf("PLEASE INPUT THE NUM:/n");
scanf("%ld",&i);/*输入要操作的数*/
k=i;
for(l=i;l>=1;--l){
m*=l;
}
n=m;
while(m>0){
j=m%10;
if(j==0) count+=1;/*count进行计数*/
m=m/10;
}
printf("THERE ARE %d ZERO IN %ld!/n%ld!=%ld/n",count,k,k,n);/*输出结果*/
getch();
}