为什么我的这些C代码会显示这些结果?

来源:百度知道 编辑:UC知道 时间:2024/05/21 15:47:15
看了一天的书还是想不出我下面这两条C语言代码为什么运行得不到另我满意思的结果,真希望能得到各位学长学姐的帮助……
#include "stdio.h"
main()
{ k3:
int x,*c; scanf("%d",&x);
c=&x;
printf("%d\n",c); goto k3;}
这个代码不管输入任何的整数即使是输入的数超过了Int的取值范围了都会得到37814108,(小数的话是死循环),想不通这个代码是怎样执行的、为什么定义变量时要在C的左上角放一个*号呢,整个代码倒底是如何工作的呢?为什么总是得到上面这个数而这个数是如何得来的呢?
还有下面这段代码:
#include "stdio.h"
main()
{k3:
int sum=0,y=1,n=1,x;
printf("输入一个数");
scanf("%d",&x);
while(n<=x)
{sum=y*(2n-1)+sum;
n=n++;y=-y}
printf("结果是:%d",sum); goto k3;
}
问题是求:1-3+5-7+9……-99+101这种类型的值,x的值可以自定义。
不过上面的代码我运行不得,(C-Free3.5和TURBO C 2.0)
不知道有谁能知道我上面的代码错在哪里了,怎样改过来,代码的执行过程是怎样的,找了好久自己都找不出来?
这道题目我已经用其它的算法得到了结果,第一段代码我已经理解了,谢谢!
第二段代码的这一句代码:n=n++;y=-y;} /*你的少个;*/ 应该是n++就够了,不过我改过来了还是得不到预期的结果,随便输入一个数比如是:m结果总都是-或+m,我不知道这道题目逻辑上错在了那里,看来看去还是看不出来错误从哪里开始,您可不可以把它的执行步骤详细的说一说啊,谢谢你了!

#include "stdio.h"
main()
{
int x,*c;
k3:
scanf("%d",&x);
c=&x;
printf("%d\n",*c); /*你的C是指针地址~~~*C就是值*/
goto k3;}

#include "stdio.h"
main()
{
int sum=0,y=1,n=1,x;
k3:
printf("输入一个数");
scanf("%d",&x);
while(n<=x)
{ sum=y*(2*n-1)+sum;
n=n++;y=-y;} /*你的少个;*/

printf("结果是:%d\n",sum);
goto k3;
}
以后最好少用goto这东西~~~