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

2025-04-26 07:46:01
推荐回答(4个)
回答1:

这样是可以的,形式是输入一个数跟着输出绝对值
EOF指的是end of file。是一个特定的标记
#include
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
#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;bprintf("%.2f\n",a[b]);
return 0;
}

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

回答2:

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

int a;
while(cin>>a)
{
cout<<(a>0?a:-a)<}

或者
while(scanf("%d", &a))
当然如果说是实数, 要考虑小数, 用double就行

原因如下:
网上做题online judge系统,输入结束时,cin>>或者scanf的返回值是0,也就是说,while条件不成立, 循环结束。就行拉!

如果要深入解释cin>>,是因为重载的operator>>返回输入流对象的引用,当输入流没有接受到任何东西或者EOF(end of file)时,返回NULL。

good luck! 加油

回答3:

#include
void main()
{
int N;
printf("输入多少组数据?\n");
scanf("%d",&N);//统计输入个数
int i=0;
float a[100]; //保存数据的数组
printf("请输入数据\n");
for(i=0;i{
scanf("%f",&a[i]); //录入数据
}
printf("结果为:\n");

for(i=0;i{
printf("%.2f\n",a[i]>0?a[i]:-a[i]); //输出结果求绝对值
}
}

我看题目要求是一次性全部输入再一次性全部输出吧,所以先用一个数组把数据都保存起来.最后对数组的每个元素取绝对值,再输出.

回答4:

fabs(a)<=1e-6;