重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
0.12345的小数点后第一位就是tab[0]=(int)(0.12345*10)
成都一家集口碑和实力的网站建设服务商,拥有专业的企业建站团队和靠谱的建站技术,十年企业及个人网站建设经验 ,为成都数千家客户提供网页设计制作,网站开发,企业网站制作建设等服务,包括成都营销型网站建设,成都品牌网站建设,同时也为不同行业的客户提供成都网站建设、网站设计的服务,包括成都电商型网站制作建设,装修行业网站制作建设,传统机械行业网站建设,传统农业行业网站制作建设。在成都做网站,选网站制作建设服务商就选创新互联。
第二位就是tab[1]=((int)(0.12345*100)%10
第三位就是tab[2]=((int)(0.12345*1000)%10
以此类推
if中可以赋值给head的理由很简单。
因为 if(PTScount(head) == 0)
if判断的就是看它是不是 第一个元素。
如果是第一个元素,自然直接将ins赋值给head。
head所代表的就是第一个元素。
如果到了else这里,那么很明显就不是第一个元素了。
那这个时候肯定就不可以直接复制给head了呀,因为head可是代表第一个元素呀。
所以,你这是肯定改不了的。
写了个,你试试。
#include stdio.h
#define is_digit(ch) ((ch) = '0' (ch) = '9')
char pri[7][7] =
{
{'','','','','','',''},
{'','','','','','',''},
{'','','','','','',''},
{'','','','','','',''},
{'','','','','','=','$'},
{'','','','','$','',''},
{'','','','','','$','='},
};
int get_cal_index(char c)
{
switch(c)
{
case '+': return 0;
case '-': return 1;
case '*': return 2;
case '/': return 3;
case '(': return 4;
case ')': return 5;
case '#': return 6;
}
return -1;
}
int main(void)
{
char infix[200];
char suffix[200];
char cal[200];
char *np,*ip,*sp,*cp;
int nci, oci;
gets(infix);
infix[strlen(infix) +1] = '\0';
infix[strlen(infix)] = '#';
cal[0] = '#';
ip = infix;
sp = suffix;
cp = cal;
while(*ip)
{
if(is_digit(*ip))
{
int has_dot = 0;
while(is_digit(*ip) || *ip == '.')
{
*sp++ = *ip;
*sp++ = ' ';
if(*ip == '.')
{
if(has_dot)
{
printf("错误的计算数");
exit(-1);
}
has_dot = 1;
}
ip++;
}
ip--;
}
else
{
nci = get_cal_index(*ip);
if(nci == -1)
{
printf("错误的运算符");
exit(-1);
}
oci = get_cal_index(*cp);
while(pri[oci][nci] == '')
{
*sp++ = *cp--;
*sp++ = ' ';
oci = get_cal_index(*cp);
}
if(pri[oci][nci] == '')
{
*++cp = *ip;
}
else if(pri[oci][nci] == '=')
{
if(*ip == ')')
cp--;
else if(*ip == '#')
break;
}
else if(pri[oci][nci] == '$')
{
printf("错误的表达式");
exit(-1);
}
}
ip++;
}
*sp = '\0';
puts(suffix);
return 0;
}