devc++编译正确点enter输出一直出数字不输出结果怎么办?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了devc++编译正确点enter输出一直出数字不输出结果怎么办?相关的知识,希望对你有一定的参考价值。
#include<stdio.h>#include<stdlib.h>#define LEN sizeof(struct number)struct number int num; struct number *next;;int n;void in(struct number *) struct number *head,*p; p=(struct number *)malloc(LEN); scanf("%d",&p->num); while(p->num!=-1&&p->num !=0) n++; p->next=head; head=p; p=(struct number *)malloc(LEN); scanf("%d",&p->num); free(p);void out(struct number *) struct number *p,*head; p=head; while(p->num!=NULL) printf("%d",p->num); p=(struct number *)malloc(LEN); head=p->next ; free(p); int main()struct number *head;head=(struct number *)malloc(LEN);head->next =NULL;in(head);out(head);free(head);return 0;
#include "stdio.h"
#include<stdlib.h>
#define LEN sizeof(struct number)
struct number
int num;
struct number *next;
;
int n;
void in(struct number *h)
struct number *head,*p;
p=(struct number *)malloc(LEN);
h->next=head=p;
scanf("%d",&p->num);
while(p->num!=-1&&p->num !=0)
n++;
head->next=p;
head=p;
p=(struct number *)malloc(LEN);
scanf("%d",&p->num);
head->next=NULL;
free(p);
void out(struct number *h)
struct number *p,*head;
p=h->next;
while(p!=NULL)
printf("%d ",p->num);
// p=(struct number *)malloc(LEN);
head=p;
p=p->next ;
free(head);
int main()
struct number *head;
head=(struct number *)malloc(LEN);
head->next =NULL;
in(head);
out(head);
free(head);
return 0;
参考技术A t.c: In function ‘in’:t.c:6:16: error: parameter name omitted
void in(struct number *)
^
t.c: In function ‘out’:
t.c:19:17: error: parameter name omitted
void out(struct number *)
^
编译出错,而且in 传入的指针也不能赋值,必须要传入指针地址
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct number)
struct number int num; struct number *next;;
int n;
void in(struct number **head)
struct number *p;
p=(struct number *)malloc(LEN);
scanf("%d",&p->num);
while(p->num!=-1&&p->num !=0)
n++;
p->next=*head;
*head=p;
p=(struct number *)malloc(LEN);
scanf("%d",&p->num);
free(p);
void out(struct number *head)
struct number *p;
p=head;
while(p!=NULL)
printf("%d ",p->num);
head=p->next ;
free(p);
p=head;
int main()
struct number *head=NULL;
in(&head);
out(head);
return 0;
程序编译、运行,但不以 DevC++ 结束
【中文标题】程序编译、运行,但不以 DevC++ 结束【英文标题】:Program Compiles, Runs, but doesn't end in DevC++ 【发布时间】:2014-12-14 23:32:41 【问题描述】:我编写了一个程序来对所有小于或等于 N 的奇数求和。它不是最有效或最有说服力的程序,但它在 Codepad.org 上的编译器中工作,在 DevC++ 中不起作用。通常,当我编写的程序陷入某种无限循环时,程序会在 DevC++ 中崩溃,Windows 会停止它并让我知道。
在这里,程序编译并运行,但只是停留在光标闪烁的状态下,什么也不做。 Windows 不会停止它,没有任何反应,程序没有完成,无论我让它坐多久。我猜这是 DevC++ 的问题,除非它是我的 Codepad 忽略的代码的问题。有人会向我解释这里发生了什么吗?
这是我的代码:
#include <iostream>
using namespace std;
int odd(int N)
int i;
int sum = 0;
for(i = 0; i <= N; ++i)
while((i % 2) != 0)
sum = sum + i;
return sum;
int main()
int N;
cout << "Pick a value: ";
cin >> N;
cout << "The sum of all numbers <= to " << N << " is: " << odd(N);
return 0;
我已对 if 语句进行了建议的更改,但出现了同样的问题:
#include <iostream>
using namespace std;
int odd(int N)
int i;
int sum = 0;
for(i = 0; i <= N; ++i)
if ((i % 2) != 0)
sum = sum + i;
return sum;
int main()
int N;
cout << "Pick a value: ";
cin >> N;
cout << "The sum of all odd numbers <= to " << N << " is: " << odd(N);
return 0;
【问题讨论】:
仅供参考:它真的无法在 codepad.org 上正确运行;您不能输入N
,而是使用0
。例如,如果您添加N=5
,codepad.org 会在一段时间后发出超时。
我知道,这就是为什么我发表评论说它可能是键盘忽略的东西,因为它使用 0 而不是其他值。
【参考方案1】:
while((i % 2) != 0)
sum = sum + i;
这是一个无限循环。因为如果 (i % 2 != 0)
为真,那么程序将一次又一次地递增 sum。您可能想要做的是使用 if
语句而不是 while
【讨论】:
好的,我明白你的意思了,我把它改成了一个 if 语句,但是同样的事情一直在发生。即使我注释掉除 main 之外的所有内容,并在用户输入“N”后要求它打印出“N”,同样的事情也会发生。 好的,我已经意识到问题所在。无论我做了什么更改和编译,或者即使我尝试保存文件,当我点击“运行”时,它不会随着这些更改或保存而运行,只是我第一次运行和编译时的原始代码。因为当我将您的代码复制并粘贴到 main 并注释掉我最初放置的所有内容时,它仍然会在注释掉时打印“选择一个数字”。 @Sarah 你想要做的是点击 Compile & Run 而不是 Run。 Run 只是运行最新构建的可执行文件,而 Compile & Run 将在运行之前将您的最新代码编译成新的可执行文件。 我知道,我一直在点击编译和运行。 我不知道这是否有帮助,但这里有一个文档,其中包含正在发生的事情的屏幕截图。 docs.google.com/document/d/…【参考方案2】:似乎编辑工作正常,请尝试删除旧的输出文件并重建并重新编译整个程序。 输出似乎如下:
选择一个值:52
所有奇数
进程在 1.034 秒后退出,返回值为 0 按任意键继续 。 . .
【讨论】:
添加您的代码并更清楚地解释问题。【参考方案3】:确保上次运行的窗口已关闭,否则编译器将不会重新编译,而只会运行您更改之前的先前版本。您可能会在调试模式下将此视为底部说明的错误。 while() 是一个无限循环,因为 i 在 while() 或其 内没有更改,因此请使用 if
【讨论】:
更优雅:if(N%2==0) m=N-1;else m=N;总和=0; for(i=1;i以上是关于devc++编译正确点enter输出一直出数字不输出结果怎么办?的主要内容,如果未能解决你的问题,请参考以下文章
C语言链表问题 DEVC++编译出error:too many arguments to function 'int deletNode()'