关于字符型,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怎么办?
代码写得丑,求轻拍,求指点









