C语言新手求教问题

极光默尘 2012-09-25 04:17:31
正在学习C语言,书后题有个不会了,求指教:要求用户每次输入一个的数,当输入零的时候视为最大,而且这些数中并不仅限于整数;下面是例子:
enter a number:60
enter a number:38.3
enter a number:4.89
enter a number:100.62
enter a number:75.2295
enter a number:0
the largest number entered was 100.62
求指教哈,本人小菜鸟刚刚学,学到while 和for循环这里,我想的是应该用while循环while(i!=0)这样,但是就是怎么输出最大的值呢
...全文
265 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
tingfengx 2012-10-03
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

哦哦,刚才试过确实没有循环,请问返回-1和返回0有什么区别?
[/Quote]
没啥关系,我觉得都可以
赵4老师 2012-10-02
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]

引用 15 楼 的回复:

C/C++ code
#include <stdio.h>
double d;
int k;
double maxd;
int f;
int main() {
f=0;
while (1) {
printf("enter a number(0 for end):");
fflush(stdout);
rewind(stdin);
……
……
你觉得浮点数相等的比较直接用等号好吗??
你不来点更酷一些的函数处理一下这个问题???
[/Quote]
不用。
因为0.0是输入的而不是通过计算得出的。而且用二进制可以精确表示0.0

用10进制小数不能精确表示某些三进制小数0.1(3)=0.33333333333……(10)
同理,用二进制小数也不能精确表示某些10进制小数。
max_min_ 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

#include<stdio.h>

main()
{
int i, max = 0;
while(1)
{
printf("Enter a number:");
scanf("%d",&i);
if(i != 0 && i > max)
max = i;
else if(i == 0)
{
printf("the largest number ……
[/Quote]

return -1;?
huangxy10 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]

C/C++ code
#include <stdio.h>
double d;
int k;
double maxd;
int f;
int main() {
f=0;
while (1) {
printf("enter a number(0 for end):");
fflush(stdout);
rewind(stdin);
……
[/Quote]

你觉得浮点数相等的比较直接用等号好吗??
你不来点更酷一些的函数处理一下这个问题???
赵4老师 2012-09-26
  • 打赏
  • 举报
回复
上帖中f=0;后面应加一句maxd=0.0;以便只输入一次0时输出0
赵4老师 2012-09-26
  • 打赏
  • 举报
回复
#include <stdio.h>
double d;
int k;
double maxd;
int f;
int main() {
f=0;
while (1) {
printf("enter a number(0 for end):");
fflush(stdout);
rewind(stdin);
k=scanf("%lf",&d);
if (k==1) {
if (d==0.0) {
printf("the largest number entered was %lg\n",maxd);
break;
} else {
if (0==f) {
maxd=d;
f=1;
} else {
if (d>maxd) maxd=d;
}
}
}
}
return 0;
}
极光默尘 2012-09-26
  • 打赏
  • 举报
回复
哦哦,刚才试过确实没有循环,请问返回-1和返回0有什么区别?
woguoleo 2012-09-25
  • 打赏
  • 举报
回复
7楼返回-1了,跳出
tingfengx 2012-09-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

7楼的方法会无线循环,8楼和9楼的方法或许会成功,但是能不能先不用数组或其他函数的知识,单单用while或for循环之类的来做出来呢?因为这道题是出在for循环这个章节后面的
[/Quote]
我试过了的,没有循环啊
极光默尘 2012-09-25
  • 打赏
  • 举报
回复
7楼的方法会无线循环,8楼和9楼的方法或许会成功,但是能不能先不用数组或其他函数的知识,单单用while或for循环之类的来做出来呢?因为这道题是出在for循环这个章节后面的
ouPuso 2012-09-25
  • 打赏
  • 举报
回复
将最高位置成1管用吗,
赵4老师 2012-09-25
  • 打赏
  • 举报
回复
double d;
int k;
while (1) {
printf("enter a number:");
fflush(stdout);
rewind(stdin);
k=scanf("%lf",&d);
if (k==1) {
if (d==0.0) break;
printf("%lg\n",d);
}
}
L_chxu 2012-09-25
  • 打赏
  • 举报
回复

#include<stdio.h>
#define N 10
int main()
{
float a[N],t;
int i,j;
printf("请输入10个数:\n");
for(i=0;i<N;i++){
printf("请输入第%d个数\n",i+1);
scanf("%f",&a[i]);
}
for(i=0;i<N-1;i++){
for(j=i+1;j<N;j++){
if(a[i]<a[j]){
t=a[i];
a[i]=a[j];
a[j]=t;
}
}

}
printf("最大数为:%f\n",a[0]);
return 0;
}
tingfengx 2012-09-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

5楼的方法好像只能是在输入整数的情况下吧?而且好像max那里不能保证输出的是最大的
[/Quote]
这个改一下就可以了
#include<stdio.h>

main()
{
float i, max = 0;
while(1)
{
printf("Enter a number:");
scanf("%f",&i);
if(i != 0 && i > max)
max = i;
else if(i == 0)
{
printf("the largest number entered was:%f\n",max);
return -1;
}

}
}
极光默尘 2012-09-25
  • 打赏
  • 举报
回复
5楼的方法好像只能是在输入整数的情况下吧?而且好像max那里不能保证输出的是最大的
GAOHUACSDN 2012-09-25
  • 打赏
  • 举报
回复
#include<stdio.h>

main()
{
int i, max = 0;
while(1)
{
printf("Enter a number:");
scanf("%d",&i);
if(i != 0 && i > max)
max = i;
else if(i == 0)
{
printf("the largest number entered was:%d\n",max);
return -1;
}

}
}
极光默尘 2012-09-25
  • 打赏
  • 举报
回复
额,没有明白你在说的意思,题目的要求就是说当输入零的时候视为结束,它只是作为结束符号
gfvera 2012-09-25
  • 打赏
  • 举报
回复
因为把float改成 int。 因为0 是属于整数类型。
极光默尘 2012-09-25
  • 打赏
  • 举报
回复
额,打错了,是0的时候视为结束程序了,不好意思
tingfengx 2012-09-25
  • 打赏
  • 举报
回复
你不是0最大吗,为什么100.62最大

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧