为什么 C 程序会出现乱码?

发布于 科技 2024-08-22
5个回答
  1. 匿名用户2024-02-01

    楼上的2个人不完整,完整的**如下:

    #include

    #include

    using namespace std;

    main()

    cout<<"---"cout<<"你想进入多少个年级? :";

    cin>>num;显然,这个数字必须是整数,对吧? 因此,无需输入小数点进行测试。

    double code[num],touble;Touble 是等级的总和,因此必须初始化为 0

    touble = 0;

    for(f=0;fprintf("请输入 %d 结果,还有 %d 未输入! ",f+1,num-f);

    scanf("%lf",&code[f]);

    touble+=code[f];

    for(f=0;fif(code[f]>touble/num)if(code[f]==touble/num)// ==if(code[f]

  2. 匿名用户2024-01-31

    if(code[f]=touble num) 首先,这句话的逻辑解释是错误的,应该是==

    if(code[f]==touble num){更改并重试。

  3. 匿名用户2024-01-30

    原程序**没有任何啊,所有要求都实现了,没有乱码:

  4. 匿名用户2024-01-29

    这是因为编译器不支持它。 以下是一些常用的编译器。

    C++ 编译器是一个与标准化 C++ 标准高度兼容的编译环境。 这对于编译可移植 ** 很重要。 编译器将对不同的 CPU 进行不同的优化。

    常见的C++编译器如下:

    gnu c++

    G++ 是一个开源 C++ 编译器,支持标准化 C++。

    值得一提的是,GCC是GNU C的编译器,G++是GNU C++的编译器,EGC(增强型GNU编译器套件)可以被认为是GCC的改进版本。 目前,GCC 的名称已从原来的 GNU C 编译器更改为 GNU 编译器集合。 另一方面,Mingw 或 CGYWIN 是 Windows 平台上的 GNU C C++ 编译器、库和运行时环境的集合。

    borland c++

    该编译以快速和节省空间而闻名。 其版本支持标准化C++,并正式100%符合ANSI ISO的C++和C99标准。

    它由Borland公司开发,是两个IDE,Borland C++ Builder和Borland C++ Builder X的后端编译器。

    visual c++

    VC++ 仅与标准化 C++ 兼容。

    它是 Visual Studio、Visual 2002、Visual 2003 和 Visual 2005 的后台 C++ 编译器。 随着斯坦利·李普曼(Stanley Lippman)等编译器设计师的加入,它变得非常成熟和可靠。 visual c++

  5. 匿名用户2024-01-28

    这与源(文本)中的字符、编译的二进制文件和编码的最终控制台输出之间的差异有关。

    首先,让我们明确一点:C(语言程序)不理解 ANSI、UTF-8 和任何其他编码。 它只知道如何处理你给它的角色的二进制表示。

    在简体中文 Windows 中,默认的文本保存编码是 ANSI(即 GBK); 在linux下,根据系统语言环境设置,一般应该是(zh以下基于简体中文Windows)。

    1)对于保存在源文件中的那些"中文"这个字符串就是VS2008所看到的"0xd6d0"跟"0xcec4"(默认 ANSI 编码获取)。但是编译器不在乎它是否是 gbk 神,它只在乎一串数字。

    mingw所看到的区别是"0xe4b8ad"跟"0xe69687"(GCC 默认为 UTF-8)。请注意,使用 mingw 编译的源文件中的中文宽字符必须保存为 UTF-8 编码。

    2)然后,以二进制文件存储的形式,将传统的字符串(char str =。"中文";编译器不做任何事情,只是把一串数字(例如"0xd6d0","0xcec4"移动并把它塞进二进制文件中。

    但是对于宽字符串(wchar t wstr = l"中文";),编译器会将其转换为 Unicode 编码格式(Windows 为 UTF-16,Linux 为 UTF-32)。如:"中文"16 位 unicode 是"0x4e2d"跟"0x6587",然后取转换后的数字 ("0x4e2d","0x6587") 转换为二进制文件。(VS 和 Mingw 在这里没有区别)。

    这里需要注意的是,编译器必须知道你保存的源文件的编码! 如果 VS 默认为 ANSI 编码,则使用 UTF-8 保存它。 C 源文件要用 VS 打开,以查看它是否必须是乱码。

    同理,如果用mingw编译ANSI编码的源文件,也会得到错误! (但是,您可以修改编译选项来解决问题,请参阅文章末尾) 这个原因在本文中其实是可以理解的,因为如果编译器想要将保存在文件中的字符转换为宽字符,它需要知道从什么编码到 unicode(可以看出,上面的VS是GBK->Unicode,而Minwh是UTF-8->Unicode)。

相关回答
3个回答2024-08-22

#include

#include >>>More

22个回答2024-08-22

程序员是当今社会非常流行的职业,如果工作不顺利,很多人会学习编程并转行成为程序员。 但是程序员并不像我们想象的那么高薪和体面,程序员在工作时也面临着很多困难。 据了解,程序员换工作非常频繁,很多程序员因为一些原则性问题而选择换工作。 >>>More

10个回答2024-08-22

思路:要求一个正整数n的位数,可以先定义一个变量num,并初始化为0,将整数n依次除以10,直到为0,每除以10,变量num的个数就会加1,最后一个num的值就是整数n的位数。 >>>More

10个回答2024-08-22

static void main(string args) 上边。

for (int i = 0; i <= 20; i++)"*"); >>>More