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 而不是 RunRun 只是运行最新构建的可执行文件,而 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输出一直出数字不输出结果怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

devc++为啥代码改变编译运行却没变 ?

C语言链表问题 DEVC++编译出error:too many arguments to function 'int deletNode()'

dev c++无法编译

win10是否dev c++不能编译

域名无法访问怎么办?是啥原因?

DevC++ 中的 Allegro 错误