发布于2025-02-02 阅读(0)
扫一扫,手机访问
#include
main()
{
char n[100];
int i;
gets(n);
for(i=0;n[i]!='\0';i++)
{
if((i+1)%3==0)
printf(",");
printf("%c",n[i]);
}
}
不太理解千分位的意思 你自己调试吧。。
刚刚我漏看一个1
#include
#include
main()
{
char n[100];
int i,k,j,b;
gets(n);
k=strlen(n);
while(k>=3)
k-=3;
for(j=0;jprintf("%c",n[j]);
if(k)
printf(",");
for(i=k,j=0;n[i]!='\0';i++,j++)
{
if(j%3==0&j!=0)
printf(",");
printf("%c",n[i]);
}
}新程序
首先说明原理:
1)逗号运算符也称顺序值运算符,即从左至右顺序执行,最后一个值会覆盖前面的值,所以使用逗号将几个表达式连接起来的带括号的表达式,最终整个逗号表达式的值为最后一个表达式的值。
2)自增和自减运算符有前置和后置之分,在混合运算中,前置是先自增或者自减,再进行取值;而后置恰好相反,即先取值进行运算,然后再自增或者自减。
在r=func((x--,y--,x+y),z--)这个函数调用中,第一个参数使用了原理1)和2),第二个参数使用了原理2)。
首先对于第一个参数(x--,y--,x+y),这是一个逗号运算符,从左至右运算:x--(先取x的值,然后x自减,其值变为x=5),同理(先取y的值,然后y自减,其值变为y=6),但由于这是一个逗号运算符,因此x+y的值为x+y=5+6=11,最终r=func((x--,y--,x+y),z--)=func(11,z--);
其次,z--同理,先取值z=8进行传参数,进行函数调用r=func((x--,y--,x+y),z--),然后z才执行自减(从而z=7)
补充:如果x--,y--换成r=func((--x,--y,x+y),z--)结果也是一样的,这是因为逗号运算符是从左至右进行运算的,先算完第一个逗号之前的表达式,在计算第二个逗号之前的表达式,依此类推,故,无论是前置还是后置,x的值都是在计算第二个逗号之前已经改变;但是逗号运算符中最后一个逗号除外(即前置才起作用,后置对逗号表达式的结果没影响)。。。
书写不易,人艰不拆,不喜勿喷,谢谢点赞!!!
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店