回 帖 发 新 帖 刷新版面

主题:一个字符串的和整形的问题

NODE *inputint(void) /*输入超长正整数*/
{
NODE *s,*ps,*qs;
struct number {int num;
struct number *np;
}*p,*q;
int i,j,k;
long sum;
char c;
p=NULL; /*指向输入的整数,链道为整数的最低的个位,链尾为整数的最高位*/
while((c=getchar())!='\n') /*输入整数,按字符接收数字*/
if(c>='0'&&c<='9') /*若为数字则存入*/
{
q=(struct number *)malloc(sizeof(struct number)); /*申请空间*/
[color=FF0000]q->num=c-'0'; /*存入一位整数*/[/color]
q->np=p; /*建立指针*/
p=q;
}
s=(NODE *)malloc(sizeof(NODE));
s->data=-1; /*建立表求超长正整数的链头*/
ps=s;
while(p!=NULL) /*将接收的临时数据链中的数据转换为所要求的标准形式*/
{
sum=0;i=0;k=1;
while(i<4&&p!=NULL) /*取出低四位*/
{
sum=sum+k*(p->num); 
i++; p=p->np; k=k*10;
}
qs=(NODE *)malloc(sizeof(NODE)); /*申请空间*/
qs->data=sum; /*赋值,建立链表*/
ps->next=qs;
ps=qs;
}
ps->next=s;
return s;
}
为什么上面那个一要用c-‘0’knx

回复列表 (共2个回复)

沙发

高手们指点一下,麻烦大家了

板凳

打个比方,'1'在ASCII码里表示是31H,'0'表示是30H,'1'-'0'=1H

我来回复

您尚未登录,请登录后再回复。点此登录或注册