c语言实验2总结

scanf函数的用法

在c语言中,scanf函数用于从标准输入(通常是键盘)读取数据。当使用scanf读取变量时,需要在变量名前加上&符号。这是因为scanf需要知道变量的地址!,以便将输入的数据存储到正确的内存位置。

例如,如果你有一个整数变量num,你可以使用一下代码读取一个整数:

int num;
scanf("%d",&num);

在这个例子中,&sum是一个指向num的指针,它告诉scanf应该将数据存储在哪里!

同样地,对于其他类型的变量(如浮点数、字符等),也需要使用&符号。

需要注意的是,如果你在scanf中不使用&符号,那么你实际上是在告诉scanf直接读取数据,而不是将其存储在某个变量中。这可能会导致不可预知的行为,因为你不知道scnaf会读取到哪里。因此,在使用scanf时,要始终在变量名前加上&符号。

在c语言中如果float用%lf使用会导致什么后果?double用%f使用又会导致什么后果?

如果float类型使用%lf进行格式化输出,会导致输出结果不准确或出现错误。因为%lf是用于double类型的占位符,而float类型的数据可能无法包含与double类型相同的精度与范围,因此使用%lf可能会导致输出结果出现截断或不精准的情况;

double与上面同理!

总之:在使用printf函数进行浮点数格式化输出时,需要根据浮点数的类型选择正确的占位符,以确保输出的准确性与正确性!

%f用于输出float类型的浮点数,而%lf用于输出double类型的浮点数。在printf函数中,%f只能接受float类型的参数,而%lf只能接受double类型的参数!

因此,在使用printf函数进行浮点数格式化输出时,需要根据浮点数的类型选择正确的占位符!

printf参数有何不同? 

printf("s=%f\n",s,"v=%f\n",v);
printf("s=%lf\n v=%lf\n",s,v);

这两行代码的主要区别在于格式化字符串和参数的匹配方式,以及输出的格式。

第一行代码printf(”s=%f\n",s,"v=%f\n",v);是存在错误的,它试图将四个参数传递给printf函数,但格式化字符串只包含了一个占位符%f,这会导致参数与占位符的不匹配。编译器会报错,因为参数的数量与格式化的字符串中的占位符数量不匹配。

第二行代码printf("s=%lf\n v=%lf\n",s,v);是正确的。它使用了两个占位符%lf,与传递的两个double类型参数s和v匹配。这将按照指定的格式输出两个double类型的变量的值,每个值占一行,并在值后面添加一个换行符。

总结来说:第一行代码存在错误,无法正确编译和运行,而第二行代码是正确的,可以按照预期输出double类型的变量的值!

实验题:

下面程序的功能是计算球体的表面积和球体的体积,程序中有多处错误,并且指定必须按下面的形式输入、输出数据。请对程序做相应的修改。

#include

main

{

double r,s,v;

int pi=3.14;

printf(input r:\n);

scanf("%d",r);

S=4*pi*r*r;                            /*计算球体的表面积*/

V=4.0*pi*r*r*r/3.0;                      /*计算球体的体积*/

printf("%d",r);

printf("s=%f\n",s,"v=%d\n",v);

}

正确的

#include 

int main() {
	double r, s, v;
	double pi = 3.14;
	printf("input r: \n");
	scanf("%lf", &r);
	s = 4 * pi * r * r;
	v = 4.0 * pi * r * r * r / 3.0;
	printf("r=%lf\n", r);
	printf("s=%lf v=%lf\n", s, v);
}

你可能感兴趣的:(c语言,开发语言)