同船爱歌太大尺度:C语言不错的朋友来帮下忙

来源:百度文库 编辑:高校问答 时间:2024/04/29 16:25:30
初学这个 希望大家改的同时能告诉我错在哪谢谢了 写的好的我还另+分
改错
要求程序执行时,屏幕的显示和要求输入形式如下:
input a,b,c:2.0 2.0 3.0
a=2.000000,b=2.000000,c=3.000000
s=4.000000,v=12.000000
这下面是程序
main()
{
double a,b,c,s,v;
a=2.0;
b=2.0;
c=3.0;
printf("input a,b,c,:");
sacnf("%d%d%d\n",a,b,c);
s=a*b;
v=a*b*c;
printf("a=%le,b=%le,c=%le\n",a,b,c);
printf("s=%le,v=%le",v,s);
}
大家可能没看清楚题 要求的是那段程序运行后
屏幕的显示和要求输入形式如下:
input a,b,c:2.0 2.0 3.0
a=2.000000,b=2.000000,c=3.000000
s=4.000000,v=12.000000

我来说一下哪错了:

1:sacnf("%d%d%d\n",a,b,c); 这句语句要改为scanf();语法错误;

2:printf("s=%le,v=%le",v,s); le 要改为f.....

试下吧.... 下面为可用代码:

main()
{
  double a,b,c,s,v;
  a=2.0;
  b=2.0;
  c=3.0;
  printf("input a,b,c,:");
  scanf("%d%d%d\n",&a,&b,&c);

  s=a*b;
  v=a*b*c;

  printf("a=%f,b=%f,c=%f\n",a,b,c);
  printf("s=%f,v=%f",v,s);
}

程序如下:
#include <stdio.h>

void main(void)
{
double a,b,c,s,v;

printf("input a,b,c,:");
scanf("%lf%lf%lf",&a,&b,&c);

s=a*b;
v=a*b*c;

printf("a=%lf,b=%lf,c=%lf\n",a,b,c);
printf("s=%lf,v=%lf\n",s,v);
}

1,scanf打错了 使用方法错了
此时要用&因为函数要得是变量的地址(为什么:是因为c是传值的只有使用指针那才可以修改函数外的变量 你可以看看《c专家编程》这本书 是很有趣的啦)
还有是用%lf 还有不用加/n了
不能用%d会丢失小数的
2,printf使用有误
3,#include <stdio.h> 少了
4,void main(void) 函数定义不严格
5,可以看看 http://www.sozz.cn/00050/15177.htm
6,看看c primer 很详细

printf("s=%lf,v=%lf\n",s,v);
默认为6位小数
scanf("<格式化字符串>",<地址表>);
%d
从键盘输入十进制整数
%x
从键盘输入十六进制整数
%f
从键盘输入一个实数

%e是以指数形式显示,%f才是以浮点数表示.

定义时:double a,b,c,s,v,应该会报错.
应改为:double a,b,c,s,v; //C语言的语句结束标志是";"(分号)

sacnf("%d%d%d\n",a,b,c); 应改为:scanf("%d%d%d",&a,&b,&c);
scnaf();语句中最好不要使用例如"\n"等非格式化字符,另外对于基本变量要使用取地址符"&".

按你的要求,结果中应该现实小数点后6位小数,所以最后的printf();语句应为:
printf("a=%.6f,b=%.6f,c=%.6f\n",a,b,c);
printf("s=%.6f,v=%.6f\n",s,v);

楼上正解。。。。

建议你用C++输入输出流
#include<iostream>
using namespace std ;
int main()
{
double a,b,c,s,v
cout << " input a,b,c:" ;
cin >> a >> b >> c ;
s = a * b;
v = s * c;
cout << "a=" << a << " b=" << b << " c=" << c
<< endl << "s=" << s << " v=" << v << endl;
}