注册 登录
编程论坛 C# 论坛

Console.Write(f <= 0.0f ? ".:-=+*#%@"[(int)(f* -8.0f)] : ' ');

永不败的心 发布于 2020-03-20 16:44, 2368 次点击
初学者,麻烦大神看看下面这段c#程序啥意思啊

float y, x, z, f;
            for (y =1.5f; y > -1.5f; y -= 0.1f)
            {
                for (x = -1.5f; x < 1.5f;x += 0.05f)
                {
                    z = x * x + y * y - 1;//不懂
                    f = z * z * z - x * x * y * y * y;//不懂
                    Console.Write(f <= 0.0f ? ".:-=+*#%@"[(int)(f* -8.0f)] : ' ');//不懂
                }
                Console.WriteLine();
            }
        }
    }
}

2 回复
#2
xianfajushi2020-03-20 16:54
虾米题目?最后输出采用三目运算符.
#3
zj8912182020-03-20 22:53
两重循环形成一个二维平面空间,具体的算法不好猜测了,只能说语法了,Console.Write(f <= 0.0f ? ".:-=+*#%@"[(int)(f* -8.0f)] : ' ')是一个三目运算符,在f<0.0f时,计算(int)(f* -8.0f),将".:-=+*#%@"作为一个字符串理解
字符串通过索引的方式提取字符(string[index]返回单个字符)
1