求高手赐教,为什么C语言程序编译时没问题,而在运行时显示文件已停止工作,要关闭该程序啊???急急

如题所述

int a,b;
scanf("%d%d",&a,&b);//参数必须是指针(地址)才可以。
scanf()函数要求参数必须是指针类型,即将地址传输到其内,才可以让a , b变量中获取到数据。
如果你学过指针,你就会理解了。

C语言中函数的调用中,参数传递,只能传递数值。如果只是将数值传递过去(接收者是形参),在子函数中变化,形参的变化,不会影响到实参数据的内容。
C中,每定义一个变量,系统都会在内存中给其分配一个空间用来存储数据。而这个空间的编号就是这个变量的地址。当我们将这个地址传递到子函数中,子函数在操作数据时,就会改变这个地址中的数据,这样,实参的数据是会发生变化。
而你程序中,传递的是a b本身的值(可能是0,可能是1,可能是任意的数),scanf()将这两个值当作地址去操作,因此会产生系统错误,导致程序运行停止。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-10
楼主,你的scanf语句对变量赋值时没有写& ,这是常见错误!追问

嗯 谢谢哦

第2个回答  2012-03-10
是运行错误,原因可能是数组越界,递归没有结束条件。等等追问

很简单的一个程序都运行不了,那我该怎么办呢?

追答

是什么程序啊,发出来看看

追问

#include "stdio.h"
int main( )
{int a,b,c,d,e,f,g;
printf("请输入两个两位整数:");
scanf("%d%d",a,b);
c=a/10;
d=a%10;
e=b/10;
f=b%10;
g=c*1000+f*100+d*10+e;
return 0;
}

追答

#include "stdio.h"
int main( )
{int a,b,c,d,e,f,g;
printf("请输入两个两位整数:");
scanf("%d%d",&a,&b);//这里输入要取地址的
c=a/10;
d=a%10;
e=b/10;
f=b%10;
g=c*1000+f*100+d*10+e;
return 0;
}

追问

额 我不会弄耶 请仔细地讲下

追答

这个是输入的语法,一定取地址的.

第3个回答  2012-03-10
你的程序也没有输出什么的。。。
相似回答