#include
#include
int main()
{
int data[7000]={1,1,0},num,digit=1,i,j,k;
FILE *fp;
char fname[50];
printf("\t阶乘计算器\n\t请输入:");
scanf("%d",&num);
for(i=1;i9)
{
for(k=1;k9)
{
digit++;
}
data[k+1]+=data[k]/10;
data[k]%=10;
}
}
}
}
printf("\n\n\n\t%d!=\n",num);
for(j=digit;j>0;j--)
{
printf("%d",data[j]);
}
printf("\n\n\t%d!共有%d位......\n\n\n",num,digit);
printf("是否保存文件?(y\\n)");
if(tolower(getchar())=='y')
{
printf("请输入文件名:");
gets(fname);
if((fp=fopen(fname,"w"))==NULL)
{
printf("打开文件%s失败",fname);
exit(0);
}
fprintf(fp,"\t%d!=\n",num);
for(j=digit;j>0;j--)
{
fprintf(fp,"%d",data[j]);
}
fprintf(fp,"\n%d!有%d位......\n\n\n",num,digit);
fclose(fp);
}
return 0;
}
这个程序是个算大数阶乘的程序,后面一部分是要把结果保存到文件,但是其中的if(tolower(getchar())=='y'){.....}中,经过调试这一句结束后直接就return了,后来我把程序改了一下,变成
char t;
printf("是否保存文件?");
t=getchar();
if((t=='y')||(t=='Y')){......}
后调试发现getchar那句貌似根本就没有执行
我又把if那句改成
if(1){....}
发现if语句中可以正常执行
后来我怀疑是编译器的问题,但我在dos下的tc,linux下的gcc,windows下的vc环境中编译,结果还是一样,轻微这个程序里面有什么错???
|