2 l1323060 l1323060 于 2016.03.16 23:16 提问

c入门问题,请求各位大神帮助

#include
int main()
{
float a, r = 0;
printf("please enter the radius of a circle:");
scanf ("%f", r);
a = 2 * 3.1416 * r;
printf("The radius of the circle is:");
printf("%f", a);
return 0;
}
不知道为什么,编译没有问题,但是一运行就有错误,显示停止运行

5个回答

rl529014
rl529014   2016.03.16 23:17
已采纳

输入要加取地址符号图片说明

l1323060
l1323060 谢谢,刚开始写,给忘了
一年多之前 回复
rl529014
rl529014   2016.03.16 23:19

木事,助人为乐嘛(⊙o⊙)

zhang6xin6yu
zhang6xin6yu   2016.03.17 02:08

输入语句少了&,语法错误

Longyu_wlz
Longyu_wlz   2016.03.17 07:17

scanf ("%f", r);
这个语句在调用scanf函数时没有传递正确的参数。
在这里你没有家取地址符,这样可能在某些情况下是正确的,但对float与int类型的变量来说,就是错误的。
这里的错误之处其实并不是你忘了加&,这里的错误是scanf将r的值——0作为地址来消引用——即将输入的值存储到 首地址 为0 处的连续4个字节(一般)内存空间中。
而地址的编码只能是无符号数,那么这里就会发生访问失败,即scanf无法将获得的值存储到以0为起始地址的内存空间中。

qq_30408111
qq_30408111   2016.03.17 10:10

你scanf里的变量没有写&取地址符

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!