新手刚学C语言,想修改一段代码可以帮下忙吗

qq_40582554 2017-12-02 12:45:30
代码如下:
#include<stdio.h>
#include<math.h>
#include<windows.h>
int main()
{
float x,y,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;
putchar(f<=0.0f?".:-=*#%@"[(int)(f*-8.0f)]:3);
}
putchar('\n');
}
getchar();
return 0;
}
想在图形中间的字符换成中文可以吗?
...全文
237 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Intel0011 2017-12-02
  • 打赏
  • 举报
回复
可以是可以,但显示中文会影响位置 另putchar(f<=0.0f?".:-=*#%@"[(int)(f*-8.0f)]:3);是不是改为 putchar(f<=0.0f?".:-=*#%@"[(int)(f*-8.0f)]:‘3’);
#include <stdio.h>
#include <math.h>
#include <locale.h>

int main(void)
{
   float x, y, z, f;
   setlocale(LC_ALL, "chs");

   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;
         //putwchar(f <= 0.0f ? L".:-=*#%@"[(int)(f * -8.0f)] : L'8'); //有些平台上不显示
         f <= 0.0f ? wprintf(L"%c", L".:-=*#%中"[(int)(f * -8.0f)]) : wprintf(L"%c", L'8');
      }
      putchar('\n');
   }

   //getchar();
   return 0;
}
开心秋水 2017-12-02
  • 打赏
  • 举报
回复
putchar只能输出单个字符,而你试图输出一大串字符串,请改用printf
战在春秋 2017-12-02
  • 打赏
  • 举报
回复
要输出非Ascii字符,需要用到另外一些函数。
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <wchar.h>

void main()
    {
    setlocale(LC_ALL, "");

    wprintf(L"Why? 为什么?\n");
    }
给一个简单范例,这块深入学习需要了解Unicode,Encoding等概念,还是比较麻烦的。
自信男孩 2017-12-02
  • 打赏
  • 举报
回复
换成中文可以,但是一个中文字符不能用一个字符表示;建议看一下查一下putwchar; 不过直接用putwchar也是不行的,还得熟悉这个算法;

70,022

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧