新手刚学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;
}
想在图形中间的字符换成中文可以吗?
...全文
173 4 点赞 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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;
}
  • 打赏
  • 举报
回复
baidu_37097818 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也是不行的,还得熟悉这个算法;
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.5w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2017-12-02 12:45
社区公告
暂无公告