解析:菱形的高效率代码输出菱形的高效率代码如下:#include int main(int _){ while(_!=10) { printf("%*s\n",_<=5?4+_:14-_,"*********"+(_<=5?10-2*_:2*_-10)); _++; } return 0;}运行结果如下: * *** **************************** ***** *** *(注:第4、6行显示有误。应为一个菱形。下同)解析:1.printf("%*s", int, char*);%*表示右对齐方式显示,int为从左起到右对齐处的字符数例如:printf("%*d", 4, 345);输出结果如下:3452._<=5?4+_:14-_该表达式即是计算菱形右边界3."*********"+(_<=5?10-2*_:2*_-10)该表达式是计算显示*的个数,事实上是地址运算。printf("%p\n", "*********"+(_<=5?10-2*_:2*_-10));注:%p为输出16进制32位地址。则输出:00420FA000420F9E00420F9C00420F9A00420F9800420F9A00420F9C00420F9E00420FA0若改为printf("%*s\n",_<=5?4+_:14-_,"123456789"+(_<=5?10-2*_:2*_-10));则输出结果如下: 9 789 5678934567891234567893456789 56789 789 94._是命令行参数个数,直接运行其初值为1,若代参数运行,结果有误。可通过对其赋值解决,即 while语句前添加 _ = 1;

评论