为什么C语言程序编译正确但不能执行?

2024-05-14

1. 为什么C语言程序编译正确但不能执行?

因为你的c没有初值,while循环无法进行。另外你的算法也有问题,while循环可改为while (m % n != 0),循环结束后最小公约数时n。
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。

为什么C语言程序编译正确但不能执行?

2. 为什么C语言程序编译正确但不能执行?

因为你的c没有初值,while循环无法进行。另外你的算法也有问题,while循环可改为while(m%n!=0),循环结束后最小公约数时n。
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。

3. C语言程序对,但是编译不出来是怎么回事?

编译出来只说明程序没有语法错误,不说明没有逻辑错误,有错误一般会有屏幕输出,此其一。第二,可以在程序中设定一些输出语句或断点观察。第三如果程序不输入、输出内容,程序执行是当然看不见东西(不直观)。第三如果程序一值运行无法退出,说明存在“死循环”。
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

C语言程序对,但是编译不出来是怎么回事?

4. C语言程序对,但是编译不出来是怎么回事?

编译出来只说明程序没有语法错误,不说明没有逻辑错误,有错误一般会有屏幕输出,此其一。第二,可以在程序中设定一些输出语句或断点观察。第三如果程序不输入、输出内容,程序执行是当然看不见东西(不直观)。第三如果程序一值运行无法退出,说明存在“死循环”。
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

5. 这个c程序为什么不能正常输出?

这个程序未输出主要有两个小问题:
主要问题是图片语句11写入文件后,文件指针在末尾是没有内容可以读取的,所以也就没有输出;解决方法是在写入语句后把文件指针返回到文件开头,使用rewind(pFile); 这个是主要问题;关于rewind函数的用法也可以查查百度百科,另外还有一个类似的函数fseek,这个函数主要用于写入结构体有固定大小的数据时使用;
次要问题,文件是r+模式打开,如果没有文件也是错误的,当然你自己也加了判断,也不算是个问题。

这个c程序为什么不能正常输出?

6. C语言程序对,但是编译不出来是怎么回事?

编译出来只说明程序没有语法错误,不说明没有逻辑错误,有错误一般会有屏幕输出,此其一。第二,可以在程序中设定一些输出语句或断点观察。第三如果程序不输入、输出内容,程序执行是当然看不见东西(不直观)。第三如果程序一值运行无法退出,说明存在“死循环”。
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

7. 这个C语言 为什么c无法输出?

在 VS 2017 下开发程序首先要创建项目,不同类型的程序对应不同类型的项目,初学者应该从控制台程序学起。
 
打开 VS 2017,在菜单栏中依次选择 “文件 --> 新建 --> 项目”:

或者直接按下 Ctrl+Shift+N 组合键,都会弹出下面的对话框:

选择 “空项目”,填写好项目名称,选择好存储路径,同时对于初学者来说,可取消勾选 “为解决方案创建目录”,点击 “确定” 按钮即可。
注意:这里一定要选择 “空项目” 而不是 “Windows控制台应用程序”,因为后者会导致项目中自带有很多莫名其妙的文件,不利于初学者对项目的理解。另外,项目名称和存储路径中最好不要包含中文。
点击 “确定” 按钮后,会直接进入项目可操作界面,我们将在这个界面完成所有的编程工作。

有兴趣的同学可以打开项目的存储路径(本文的项目存储路径为 D:\Demo\),会发现多了一个 Demo 文件夹,这就是存储整个项目的文件夹。
添加源文件
在 “源文件” 处右击鼠标,在弹出菜单中选择 “添加 --> 新建项” ,如下图所示:

或者直接按下 Ctrl + shift + A 组合键,都会弹出添加源文件的对话框,如下图所示:

在此分类中,我们选择 “C++文件(.cpp)”,编写 C 语言程序时,注意源文件后缀名为 .c ,点击 “添加” 按钮,就添加上了一个新的源文件。

注意:C++ 是在 C 语言的基础上进行的扩展,所有在本质上,C++ 已经包含了 C 语言的所有内容,所以大部分 IDE 会默认创建后缀名为 .cpp 的C++ 源文件。为了大家养成良好的规范,写 C 语言代码,就创建后缀名为 .c 的源文件。
编写代码并生成程序
打开 hello.c ,将本节开头的代码输入到该源文件中,如下图所示:

注意:虽然可以将整段代码复制到编辑器,但是我还是强烈建议你手动输入,我敢保证你第一次输入代码会有各种各样的错误,只有把这些错误都纠正了,你才会进步。
编译(Complie)
在上方菜单栏中选择 “生成 --> 编译”,就完成了 hello.c 源文件的编译工作,如下图所示:

或者直接按下 Ctrl + F7 组合键,也能够完成编译工作,这样更加便捷。如果代码没有任何错误,会在下方的 “输出窗口” 中看到编译成功的提示:

编译完成后,打开项目目录下(本教程中是 D:\Demo\ )的 Debug 文件夹,会看到一个名为 hello.obj 的文件,此文件就是经过编译产生的中间文件,这种中间文件的专业称呼是目标文件(Object File),在 VS 和 VC 下,目标文件的后缀都是 .obj 。
链接(Link)
在菜单栏中选择 “项目 --> 仅用于项目 --> 仅连接 Demo” , 就完成了 hello.obj 链接工作,如下图所示:

如果代码没有错误,会在下方的 “输入窗口” 中看到链接成功的提示:

本项目中只有一个目标文件,链接的作用是将 hello.obj 和系统组件(专业讲是静态链接库)结合起来,形成可执行文件。如果有多个目标文件,这些文件之间还要相互结合。
当你再次打开项目目录下(本教程中是 D:\Demo\ )的 Debug 文件夹,会看到一个名为 Demo.exe 的文件,这就是最终生成的可执行文件,就是我们想要的结果。双击 Demo.exe 运行,并没有输出“C语言中文网”几个字,而是会看到一个黑色窗口一闪而过。这是因为,程序输出“C语言中文网”后就运行结束了,窗口会自动关闭,时间非常短暂,所以看不到输出结果,只能看到一个“黑影”。对上面的代码稍作修改,让程序输出 “C语言中文网” 后暂停下来:#include #include int main(){puts("C语言中文网");system("pause");return 0;}system("pause"); 的作用就是让程序暂停一下。注意代码开头部分还添加了 #include  语句,否则 system("pause"); 无效。再次编译并链接,运行生成的 Demo.exe,终于如愿以偿,看到输出结果了,如下图所示:

按下键盘上的任意一个键,程序就会关闭。
更加快捷的办法
我们把上面的步骤总结一下,可以发现一个完整的编程过程是:
编写源文件:这是编程的主要工作,我们要保证代码的语法 100% 正确,不能有任何差错;
编译:将源文件转换为目标文件;
链接:将目标文件和系统库组合在一起,转换为可执行文件;
运行:可以检验代码的正确性。
不过 VS 提供了一种更加快捷的方式,可以一键完成编译、链接、运行三个动作,点击菜单栏中的 “本地 Windows 调试器” 按钮,或者按下 F5 键也能做到这一点。
请点击输入图片描述

这个C语言 为什么c无法输出?

8. C程序错误,编译没问题,点执行就这样了

一.由于编码错误导致的LNK2001。 
二.由于编译和链接的设置而造成的LNK2001 
1.如果编译时使用的是/NOD(/NODEFAULTLIB)选项,程序所需要的运行库和MFC库在连接时由编译器写入目标文件模块, 但除非在文件中明确包含这些库名,否则这些库不会被链接进工程文件。在这种情况下使用/NOD将导致错误LNK2001。 
2.如果没有为wWinMainCRTStartup设定程序入口,在使用Unicode和MFC时将得到“unresolved external on _WinMain”的LNK2001错误信息。 
3.使用/MD选项编译时,既然所有的运行库都被保留在动态链接库之内,源文件中对“func”的引用,在目标文件里即对“__imp__func” 的引用。如果试图使用静态库LIBC.LIB或LIBCMT.LIB进行连接,将在__imp__func上发生LNK2001;如果不使用/MD选项编译,在使用MSVCxx.LIB连接时也会发生LNK2001。 
4.使用/ML选项编译时,如用LIBCMT.LIB链接会在_errno上发生LNK2001。 
5.还有其他可能。