求助一个有关C语言的问题

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void sum(char a[],char b[])
{
int i,n,k;
for(i=strlen(b)-1,k=0;i>=0;k++,i--)
{
a[k]=a[k]+b[i]-'0';
n=k;
while(a[n]>'9')
{
a[n+1]+=(a[n]-'0')/10;
a[n]=(a[n]-'0')%10+'0';
n++;
}
}
}
int main()
{
char fib[300][201]={0},ch;
int i,j,k,n;
FILE *fp;
printf("Please enter a number:\n");
scanf("%d",&n);
if(n<=0)
{
printf("sorry you enter a wrong number!\n");
}
fp=fopen("Fibonacci.txt", "w");
if(fp==NULL)
{
printf("can not open \'Fibonacci.txt\' !\n");
exit(0);
}
fib[0][0]='0';
fib[1][0]='1';
for(i=2;i<300;i++)
{
for(j=0;j<201;j++)
fib[i][j]='0';
}
for(i=2;i<300;i++)
{
sum(fib[i],fib[i-1]);
sum(fib[i],fib[i-2]);
for(j=300;fib[i][j]=='0';j--);
fib[i][j+1]='\0';
for(k=0;k<=j;k++,j--)
{
ch=fib[i][k];
fib[i][k]=fib[i][j];
fib[i][j]=ch;
}
}
for(i=0;i<n;i++)
{
printf("fib[%d]=%s\t\t",i,fib[i]);
fprintf(fp,"fib[%d]=%s\t\t",i,fib[i]);
if((i+1)%3==0)
{
printf("\n");
fprintf(fp,"\n");
}
}
fclose(fp);
return 0;
}

a[k]=a[k]+b[i]-'0';
a[n+1]+=(a[n]-'0')/10;
a[n]=(a[n]-'0')%10+'0' 这三句话中为什么要 -'0' 呢?有什么作用呢?

把字符0-9变为数字0-9。因为字符在计算机中以ascii码存的。'9'并不是数字9,而是57.只有'9'-'0'之后才可以得到真正的数字9
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-08
字符‘0’对应的码值好像是48,就相当于减去48了。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网