菜鸟求助:一道很简单的C编程题

来源:百度知道 编辑:UC知道 时间:2024/06/08 03:25:32
C语言还没自学完,先做题目试试···

求实数的绝对值。
题目如下:
Input
输入数据有多组,每组占一行,每行包含一个实数。

Output
对于每组输入数据,输出它的绝对值,要求每组数据输出一行,结果保留两位小数。

★就是“输入数据有多组”不懂,我直接用两组数来写,可以运行,但告诉我是错的,我的代码:
#include <stdio.h>
main()
{float a,b,c,d ;
scanf("%f\n%f",&a,&b);
if (a>0)
c=a;else c=-a;
if (b>0)
d=b;else d=-b;
printf("%.2f\n%.2f\n",c,d);}

貌似没那么简单-_-!

各位高手务必讲下该怎么写,为什么要这样写,小弟在此拜谢啦!
★答案知道了具体如下:
#include <stdio.h>
#include <math.h>
void main()
{
double n;
while( scanf("%lf",&n)!=EOF )
printf("%.2lf\n",fabs(n));
}

原来就是输入一行回车给出答案,然后再次输入这样的
★求高手讲一下为什么要这样

这样是可以的,形式是输入一个数跟着输出绝对值
EOF指的是end of file。是一个特定的标记
#include <stdio.h>
main()
{
float a;
while(scanf("%f",&a)!=EOF)
//这个语句的意思就是用a来接收输入的数
//并以Ctrl+z结束整个程序
{
if (a<0)
a=-a;
printf("%.2f\n",a);
}
return 0;
}

还有一种是利用数组,这样所有输入的在一块,所有输出的在一块,不过输入的最多的组数是MAX的值
输完数字之后,同样是以Ctrl+z结束,再Enter就会输出绝对值了
#include <stdio.h>
#define MAX 81
main()
{
int i=0,b;
float a[MAX];
while(scanf("%f",&a[i])!=EOF)
{
if (a[i]<0)
a[i]=-a[i];
i++;
}
printf("=========\n");
for(b=0;b<i;b++)
printf("%.2f\n",a[b]);
return 0;
}

看来你这道题要求的是第二种形式,但是我觉得第一种更好,方便,不用一一对照去找值;没有组数限制;占用内存较少。 当然求实数的绝对值也可以fabs(),不过这样得调用数学函数库,稍有点麻烦
也是刚学,程序很简单,希望对你有帮助

如果你说的是oj上面的题目,这样

int a;
while(cin>>a)
{
cout