代码中没有错误,但程序停止工作

时间:2014-01-05 11:01:19

标签: c codeblocks

我正在使用代码块,它说我的代码没有错误,但是当我运行程序时它停止工作,因为我试图给出一个输入。请记住,我的编程课刚刚开始,我根本不知道。

以下是我的程序的代码:

#include <stdio.h>
int main()
{

int num;
int num1, num2, num3, num4;

printf("Please insert a number here:\n");
scanf("%d\n", num);

printf("When value of variable num is 2,\n");
num1 = num +1;
printf("\nThe value of num after using num + 1 is: %d", num1);
num2 = num +=1;
printf("\nThe value of num after using num +=1 is: %d", num2);
num3 = ++num;
printf("\nThe value of num after using ++num is: %d", num3);
num4 = num++;
printf("\nThe value of num after using num++ is: %d", num4);

return 0;

}

当我运行该程序时,它停止工作。

那么,我该如何解决这个错误呢? 提前谢谢。

3 个答案:

答案 0 :(得分:2)

scanf 电话中有错误。

应该是

scanf("%d", &num);

注意&amp;在数字之前Scanf需要一个指向变量的指针,该变量必须用输入值填充。


关于您的代码和评论中的问题,您应该注意:

num1 = num +1;

num1 num 加一个

printf("\nThe value of num after using num + 1 is: %d", num1);
num2 = num +=1;

num 增加1,然后使用新值 num2 分配

printf("\nThe value of num after using num +=1 is: %d", num2);
num3 = ++num;

num 再次增加1,然后分配到 num3

printf("\nThe value of num after using ++num is: %d", num3);
num4 = num++;

num 的实际值分配给 num4 然后 num 增加1(++运算符在变量之后,因此增量发生在赋值之后

printf("\nThe value of num after using num++ is: %d", num4);

你在 printf 中写的内容并不确切。您没有打印 num 的值,但 num1 num2 ,...

作为

num4 = num++;

num4 num 不同( num 减1)

答案 1 :(得分:0)

是的,我认为你仍然需要使用

scanf("%d", &num);

即使是int,因为它仍在读取数字数据。

我认为你的答案在ans2之后也有所改变,因为你使用了num2 = num +=1;+=就像使用num = num + 1;一样。哪个会修改num的值。所以,ans3和ans4与你的预期不同。例如。如果输入num为2,则ans 3和ans4将等于4而不是3.如果要获得有关此信息的通知,可以在代码中的不同位置放置一些打印语句(如printf("\n Just printing value of num at this moment: %d",num);)以观察更改。

答案 2 :(得分:0)

您接受输入的方式是错误的。您需要添加'&amp;'在除字符串之外的所有变量之前签名。因此,请将语句更改为scanf("%d",&num);

而且,从读取代码开始,如果num = 2的值,则需要启动num1。

printf("When value of variable num is 2,\n")

但是你的代码确实为num的任何值启动它。为避免这种情况,请使用if循环

printf("When value of variable num is 2,\n")
if(num==2)
{num1=num+1;}
else
{num1=0;
//or some other condition you wish
}
//and rest continues...