Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 代码中没有错误,但程序停止工作_C_Codeblocks - Fatal编程技术网

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

C 代码中没有错误,但程序停止工作,c,codeblocks,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

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

以下是我的程序代码:

#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;

}
#包括
int main()
{
int-num;
整数num1、num2、num3、num4;
printf(“请在此处插入数字:\n”);
scanf(“%d\n”,num);
printf(“当变量num的值为2时,\n”);
num1=num+1;
printf(“\n使用num+1后num的值为:%d”,num1);
num2=num+=1;
printf(“\n使用num+=1后num的值为:%d”,num2);
num3=++num;
printf(“\n使用++num后num的值为:%d”,num3);
num4=num++;
printf(“\n使用num++后num的值为:%d”,num4);
返回0;
}
当我运行程序时,它停止了工作

那么,如何修复此错误?
提前感谢。

您在scanf通话中出错

应该是

scanf("%d", &num);
注意&before num.Scanf需要一个指向必须用输入值填充的变量的指针


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

num1 = num +1;
num1num加一

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(++运算符位于变量之后,因此增量发生在赋值之后)

您在打印文件中所写的内容并不准确。打印的不是num的值,而是num1num2

作为


num4num不同(它是num负一)

是的,我想你仍然需要使用

scanf("%d", &num);
即使是int,因为它仍在读取数字数据


我认为你的答案在ans2之后也改变了一半,因为你使用了
num2=num+=1
+=
类似于使用
num=num+1。这将修改num的值。因此,ans3和ans4与您预期的不同。例如,如果输入num为2,ans 3和ans4将等于4而不是3。如果您想得到通知,可以放置一些打印语句,例如
printf(“\n此时仅打印num的值:%d”,num)在代码中的不同位置观察更改

您接受输入的方式是错误的。您需要在除字符串之外的所有变量之前添加一个“&”符号。因此,将语句更改为
scanf(“%d”和&num)

同时,通过读取代码,如果num的值=2,则需要启动num1

printf(“当变量num的值为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...

请在此处以文本形式发布代码(错误是scanf中缺少a&。遗憾的是,编译器不会向您显示所有错误;但这是一个错误),非常感谢。很快就要交了,所以我很高兴你回答了。还有,我能知道为什么ans3和ans4变为4而不是3吗?num的值是否改变了一半?如何防止这种情况发生?这个问题似乎离题了,因为用户链接到短代码的屏幕截图(<20行),而不是将代码作为文本发布。实际上根本不需要使用
浮点值
。我使用的是2等整数。那么是否需要浮点值?我唯一剩下的问题是ans3和ans4的答案是4,而不是3,因为我输入的num是2。价值变化了一半吗?我该怎么防止呢?不,只要所有的值都是整数,就不需要浮点。关于num3和num4打印值的问题,您应该在原始问题中提出这个问题
scanf("%d", &num);
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...