c语言编程求找错误!

2024-04-27

1. c语言编程求找错误!

按照你的问题:(6种砝码组合,列出所有不同的组合结果)
从编程角度看你的代码,不单纯是错误修改,还有编程思路改进:
一、有5个砝码重量和5个砝码数量,那么重量应定义成数组(写程序要考虑需求的修改,比如其它重量组合),而数量也定义成数组(单独写成abcdef可以,但是数量多了不方便阅读维护程序,而且数组可以循环遍历)。
二、逻辑上,可将组合结果放在一个数组中,每次组合将结果和数组对比,存在就跳过,不存在就保存到数组,最后这个结果数组就是题目要的n种质量。
三、扩展讲,这里重量和数量都是砝码对象的属性,所以实际开发,这种情况把砝码定义成结构体更好,数量和重量都是其属性。(考虑你学习范围,这里暂用数组解决)
四、结果数组可以定义一个非常大的数组(但是输入的数字太大可能会超出范围),也可以用动态数组。下面是代码(我演示代码所有个数都输入1,这样每种刚好有0和1两种选择,这样刚好就是6位二进制数(对应10进制就是63),和截图一致。打印输出是给你看的,可以注释掉):



#include
#define N 6//砝码种类的数量,定义常量,方便修改
#define M 1000//组合的最大数量
int main()
{
    int sums[M]={0},len=0,flag,sTemp;//结果数组,按你写法用大数组,但注意不要输入太大数量,否则使用动态数组
    int i,wets[N]={1,2,5,10,15,20},nums[N]={0};
    int a[N],cnt=0,n=0;
    for(i=0,printf("请分别输入%d种砝码数量(1,2,5,10,15,20g):\n",N);i<N;scanf("%d",&nums[i++]));
    for(a[0]=0;a[0]<=nums[0];a[0]++)//按照你的写法,嵌套循环穷举所有组合
        for(a[1]=0;a[1]<=nums[1];a[1]++)//这样写,如需扩展,比如100种砝码,要复制99遍,还要改下标(实际代码太长,所以最好还是用递归函数单独实现,这里不深究)
            for(a[2]=0;a[2]<=nums[2];a[2]++)
                for(a[3]=0;a[3]<=nums[3];a[3]++)
                    for(a[4]=0;a[4]<=nums[4];a[4]++)
                        for(a[5]=0;a[5]<=nums[5];a[5]++)
                        {
                            cnt++;
                            printf("个数的组合%d:%d,%d,%d,%d,%d,%d",n++,a[0],a[1],a[2],a[3],a[4],a[5]);//测试用,打印给你看,可注释掉
                            for(i=0,sTemp=0;i<N;sTemp+=a[i]*wets[i],i++);
                            printf("(总重量%d)\n",sTemp);//测试用,打印给你看,可注释掉
                            for(i=0,flag=0;i<len;i++)// 与结果数组对比
                                if(sums[i]==sTemp)
                                {
                                    flag=1;//发现有重复记录,标识置1
                                    break;
                                }
                            if(flag)cnt--;//用重复,当前组合结果放弃,不记录
                            else
                            {
                                sums[len]=sTemp;//不重复,记录当前组合结果
                                len++;
                            }
                        }
    printf("其中共有%d种不同组合\n",cnt);
    for(i=0,printf("总重量分别为:");i<cnt;printf("%d ",sums[i]),i++);//测试用,打印给你看,可注释掉
    return 0;
}

c语言编程求找错误!

2. 求助,C++编译出错

应该给出具体的错误,才能帮你分析错误的原因。
下满是C++编译时最容易出现的错误:
1、fatal error C1010: unexpected end of file while looking for precompiled header directive. 
 寻找预编译头文件路径时遇到了不该遇到的文件尾。(一般是没有#include "stdafx.h") 
 2、fatal error C1083: Cannot open include file: 'R……。h': No such file or directory 
 不能打开包含文件“R……。h”:没有这样的文件或目录。 3、error C2011: 'C……': 'class' type redefinition  类“C……”重定义。 
 4、error C2018: unknown character '0xa3'  不认识的字符'0xa3'.(一般是汉字或中文标点符号)  5、error C2057: expected constant expression  希望是常量表达式。(一般出现在switch语句的case分支中)  6、error C2065: 'IDD_MYDIALOG' : undeclared identifier  “IDD_MYDIALOG”:未声明过的标识符。 
 7、error C2082: redefinition of formal parameter 'bReset'  函数参数“bReset”在函数体中重定义。 
 8、error C2143: syntax error: missing ':' before '{'  句法错误:“{”前缺少“;”。 
 9、error C2146: syntax error : missing ';' before identifier 'dc' 
 句法错误:在“dc”前丢了“;”。 
 10、error C2196: case value '69' already used  值69已经用过。(一般出现在switch语句的case分支中) 
11、error C2509: 'OnTimer' : member function not declared in 'CHelloView' 
 成员函数“OnTimer”没有在“CHelloView”中声明。 
 12、error C2511: 'reset': overloaded member function 'void (int)' not found in 'B' 
 重载的函数“void reset(int)”在类“B”中找不到。 
 13、error C2555: 'B::f1': overriding virtual function differs from 'A::f1' only by return type or calling convention void function(e,t){for(var n=t.getElementsByTagName("img"),a=+new Date,i=[],o=function(){this.removeEventListener&&this.removeEventListener("load",o,!1),i.push({img:this,time:+new Date})},s=0;s< n.length;s++)!function(){var e=n[s];e.addEventListener?!e.complete&&e.addEventListener("load",o,!1):e.attachEvent&&e.attachEvent("onreadystatechange",function(){"complete"==e.readyState&&o.call(e,o)})}();alog("speed.set",{fsItems:i,fs:a})}(window,document);
 类B对类A中同名函数f1的重载仅根据返回值或调用约定上的区别。 
 14、error C2660: 'SetTimer' : function does not take 2 parameters 

 “SetTimer”函数不传递2个参数。 
 15、warning C4035: 'f……': no return value  “f……”的return语句没有返回值。 
 16、warning C4553: '= =' : operator has no effect; did you intend '='? 
 没有效果的运算符“= =”;是否改为“=”? 
 17、warning C4700: local variable 'bReset' used without having been initialized局部变量“bReset”没有初始化就使用。 
 18、error C4716: 'CMyApp::InitInstance' : must return a value 
 “CMyApp::InitInstance”函数必须返回一个值。 
 19、LINK : fatal error LNK1168: cannot open Debug/P1.exe for writing 
 连接错误:不能打开P1.exe文件,以改写内容。(一般是P1.Exe还在运行,未关闭) 
 20、error LNK2001: unresolved external symbol "public: virtual _ _thiscall C……::~C……(void)" 
 连接时发现没有实现的外部符号(变量、函数等)。 
 function call missing argument list 调用函数的时候没有给参数。  member function definition looks like a ctor, but name does not match enclosing class 成员函数声明了但没有使用 
 unexpected end of file while looking for precompiled header directive 在寻找预编译头文件时文件意外结束,编译不正常终止可能造成这种情况

3. 为什么我每次编译C语言时,都会发生这样的错误?

这个可能是你编程用的软件没有装好,一般是路径安装问题。你用的是不是vc++6.0?是的话,下面有些解决方法你可以试试。
关于vc++6.0软件编程时出现“Error spawning cl.exe”“  cannot open file "Debug/sad.exe"(其中sad是文件名)”和“计算机丢失mspdb60.ll”等类似问题时;
主要可能存在以下问题1.以前安装过vc++6.0,但是卸载不彻底,或者重装系统后,原来安装软件不能正常使用。解决方法:卸载原软件。
2,vc++6.0与windowxpsp3兼容,在window7下计算机会提示软件不兼容,这时不用修改成兼容模式,否者就不能使用了,直接安装就可以了,不用考虑兼容性问题,
还用如果是从网上下载的软件,安装时的注册码一般输入111-111111就行。另外,下载的破解版软件可能被杀毒软件截获,安装前最好先关闭杀毒软件,然后按提示进行安装。
3.在排除前两个问题的前提下,出现上述问题时,很可能的问题是软件中的设置出现错误。可以按下述方法进行调试即可:
打开vc界面 点击VC“TOOLS(工具)”—>“Option(选择)” —>“Directories(目录)”重新设置“Excutable Fils、Include Files、 Library Files、Source Files”
的路径。很多情况可能就一个盘符的不同 (例如你的VC装在C,但是这些路径全部在D),改过来就OK了如果你装在其他盘里,则仿照其路径变通就行(我就是装在D盘)。
 关键是microsoft visual studio\ 后面的东西要相同。 如果你是按照初始路径安装vc6.0的,路径应为: 
executatble files: 
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin 
C:\Program Files\Microsoft Visual Studio\VC98\BIN 
C:\Program Files\Microsoft Visual Studio\Common\TOOLS 
C:\Program Files\Microsoft Visual Studio\Common\TOOLS\WINNT 

include files: 
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE 
C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE 
C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE 

library files: 
C:\Program Files\Microsoft Visual Studio\VC98\LIB 
C:\Program Files\Microsoft Visual Studio\VC98\MFC\LIB 

source files: 
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC 
C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE 
C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE 
C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC 
更改完成后,关闭软件,重新打开,再进行编程。
4,如果按第三步操作后,编程时仍然提示错误,就在建立工程时,将存储路径改为你自己建立的文件夹(随便在那个盘建一个都行,只要自己能找到就行),
以避免编译时文件不能打开的问题。
5,经过以上四步调试,一般情况下就可以使用了,如果还不能使用的话,可以尝试一下三种方法。
一,卸掉现有版本,更换版本重新安装,然后再按以上步骤进行调试。
二,直接将别人计算机中安装好的软件从安装盘中复制的自己的电脑上,(这样做有时也要按第三步和第四步进行调整,),找出文件中的图标即可运行。
三,最后一个办法,重装系统,系统重装后,一定要先装vc++再装补丁,不然的话还可能错误。

为什么我每次编译C语言时,都会发生这样的错误?

4. 为什么会编译出错?用的是c语言

提示已经说明了错误原因,等号是赋值,左边必须是变量不能是结果。
这里应该是判断那是==,表示逻辑等于。




5. 小白求助下,编译出错

如果是在调试自己编写源程序的过程中出现的各种编译错误,那么问题的原因还是比较复杂的。通常关于用户编写的源程序的编译出错问题,这是一个很复杂的问题。因为编译错误有很多种。例如:语法错误、系统库连接错误、语义错误、数组越界、或者内存越界等等。

通常程序的语法错误是最好解决的,因为源程序的语法出错了,连编译这一关都通不过,并且会告诉你在哪一行出错了,这种错误是最容易调试的。最难调试的情况就是:源程序虽然编译、链接都通过了,但是程序的运行结果却是错误的。所以说,你必须要把详细的出错信息写出来,别人们才好帮助你进行具体的分析。

小白求助下,编译出错

6. 编译是有很多警告,帮忙看看什么问题

编译是有很多警告,帮忙看看什么问题
警告是不影响编译的,是编译器认为存在问题的地方。 你在delay函数中声明了一个名为 rec_buf 的临时变量,但是却没有用它。编译器对此有些犯嘀咕,所以会提醒你一声,怕你是写错了。temp也是如此。
我说你的思路还不清晰,编程需要很清晰的思路。
首先,function(a,N)和int function(int N,int a[N][N])参数不一致,这也是报错的原因。因该是function(N,a),这也是运行错误的原因(Segmentation fault (core dumped))。

其次:for(i=0;i<=N;i++) for(j=0;j<=N;j++)scanf("%d",&a[i][j]);,这里有个错误,定义数组a[N][N],如果N=3;那么a的末尾单元是a[2][2]而不是a[3][3]因为数组是从a[0][0]开始,所以应该是for(i=0;i<N;i++) for(j=0;j<N;j++)scanf("%d",&a[i][j]);在function中取值也一样

最后for(j=0;j<=i;j++)不知道你确定是要这样还是for(j=0;j<N;j++)。

7. 编译是有很多警告,帮忙看看什么问题

编译是有很多警告,帮忙看看什么问题
警告是不影响编译的,是编译器认为存在问题的地方。 你在delay函数中声明了一个名为 rec_buf 的临时变量,但是却没有用它。编译器对此有些犯嘀咕,所以会提醒你一声,怕你是写错了。temp也是如此。
我说你的思路还不清晰,编程需要很清晰的思路。
首先,function(a,N)和int function(int N,int a[N][N])参数不一致,这也是报错的原因。因该是function(N,a),这也是运行错误的原因(Segmentation fault (core dumped))。

其次:for(i=0;i<=N;i++) for(j=0;j<=N;j++)scanf("%d",&a[i][j]);,这里有个错误,定义数组a[N][N],如果N=3;那么a的末尾单元是a[2][2]而不是a[3][3]因为数组是从a[0][0]开始,所以应该是for(i=0;i<N;i++) for(j=0;j<N;j++)scanf("%d",&a[i][j]);在function中取值也一样

最后for(j=0;j<=i;j++)不知道你确定是要这样还是for(j=0;j<N;j++)。

编译是有很多警告,帮忙看看什么问题

8. 如何快速查找C语言编译时的错误

1、首先,我们启动编译软件程序,今天我们以VC++6.0为例。

2、然后我们点击编译程序。

3、接下来我们点击链接程序按钮。

4、然后我们点击运行按钮。

5、我们也可以按下快捷键运行。

6、此时,页面之中将会弹出一个命令提示符。

注意事项:
编译语言是一种以编译器来实现的编程语言。它不像直译语言一样,由解释器将代码一句一句运行,而是以编译器,先将代码编译为机器码,再加以运行。理论上,任何编程语言都可以是编译式,或直译式的。它们之间的区别,仅与程序的应用有关。