关于字符型,int型与ASCII码的相互转换
先上代码程序代码:
#include<stdio.h> #include<string.h> #include<stdlib.h> void main(){ char N[20]={0}; int *N1; int count=0; int i=0; char temp; while((temp=getchar())!='\n'){ N[i++]=temp; } for(i=0;i<20;i++){ if(N[i]!=' '&& N[i]!=0){ N[count]=N[i]; count++;} } N1=(int *)malloc(count*sizeof(int)); for(i=0;i<count;i++){ N1[i]=step((int)N[i]-48); } for(i=0;i<count;i++){ printf("%d ",N1[i]); } getchar(); } int step(int s) { if( s <= 0 ) return 0; if( s <= 2 ) return s; return step( s - 1 ) + step( s - 2 ); }
做的是一个网上的经典的题目:上台阶,每次可以走一步或者两步,要求根据输入的总台阶数算出一共有多少种走法?
要求输入(总台阶数): 1 2 3 4 5
要求输出(可能的走法数):1 2 3 5 8
题目很简单,斐波那契数列就行,但具体实现中,发现了很多问题。
(1)
if(N[i]!=' '&& N[i]!=0);,这里的第二个条件是写N[i]!=0还是!='0',实践中发现calloc生成的0和字符0并不一样,这里的控制应该怎么写?
(2)
N1[i]=step((int)N[i]-48);,step函数是int输入int输出,那如何将char型数字转换成int型?10以内可以用(int)N[i]-48来做,大于10怎么办?
代码写得丑,求轻拍,求指点