C语言程序的问题!赶作业中!!!比如厕急啊。。。

来源:百度知道 编辑:UC知道 时间:2024/07/05 08:17:46
#include "stdio.h"
#define Pi 3.1415926
main()
{
int r;
float l,s;
scanf("%d",&r);
l=2*Pi*r;
s=Pi*r*r;
printf("l=%f\ns=%f\n",l,s);
}
我想问下这个程序 我第一次把scanf("%d",&r);放在s=Pi*r*r;后面
虽然编译都对 可是最后输入数字后 结果不对
为什么要把scanf("%d",&r);放在float l,s;后面 才会是正确的???
兄弟姐妹们都帮帮哈
诚等。。。。。。。。。

程序时按行执行的,你r没初始化,把scanf("%d",&r)放s=Pi*r*r;后面。程序执行到 l=2*Pi*r;
s=Pi*r*r;时r的值不确定,出来的结果当然不对。

如果你把scanf("%d",&r)放在s = Pi*r*r后面就是&r是默认值,并没有值,int值估计就是0,但是放在float l,s后面的话在就在使用r的之前已经在控制台接收了,所以里面有值,所以结果是一样的,这样说不知道你能不能明白

如果先乘,不知道使用什么数去做啊,要告诉机器具体的数啊~

在定义l,s之后要先赋值给它 才可以使用 不然就是电脑存储里的垃圾数

即使你把scanf("%d",&r);去掉,编译也是可以通过的。

int r;float l,s;你没有显式的初始化他们。编译器会编译器会自动生成初始化所以就会随机的给他们赋值。

所以在定义之后,要scanf("%d",&r);来初始化,

c语言的规格就是先声明在使用,只有把你要用的数据全声明之后,才能用的。不然就会出错。具体为什么我也不是很清楚,嘿嘿……