l1323060
l1323060
2016-03-16 15:16
采纳率: 100%
浏览 1.4k
已采纳

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
    好儿郎-志在四方 2016-03-16 15:17
    已采纳

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

    点赞 评论
  • rl529014
    好儿郎-志在四方 2016-03-16 15:19

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

    点赞 评论
  • zhang6xin6yu
    驴爱吃山楂 2016-03-16 18:08

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

    点赞 评论
  • Longyu_wlz
    longyu_wlz 2016-03-16 23:17

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

    点赞 评论
  • qq_30408111
    二三三 2016-03-17 02:10

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

    点赞 评论

相关推荐