c语言编程:读入四个数,输出最大的数

#include <stdio.h>
int main (void)
{
float a;
float b = 0;
int i = 0;

while((scanf("%f",&a) == 1) && i < 4)
{
if (a > b)
b = a;
i++;
}

printf("%.1f",b);

getch();
return 0;
}
为什么我必须输入五个数,他才输出啊?!!!如果我初始化i =1的话,输入四个数,但程序却只读三个数,这是为什么?!!!!急!!!!!
一次性输入完所有数

while((scanf("%f",&a) == 1) && i < 4){} 不同于
while( i<4 && (scanf("%f",&a) == 1) ){}
你的写法,要先做读语句,再判断 条件。
第二种写法,当 i<4 不满足时,将不执行读语句,直接得 假 而 退出循环。
===========================================================
修改如下:
#include <stdio.h>
int main (void){
float a;
float b = 0;
int i = 0;
while((scanf("%f",&a) == 1) ) {
if (i==0) b=a;
if (a > b)b = a;
i++;
if (i==4) break;
}
printf("%.1f",b);
getch();
return 0;
}

如果4个数都小于0,你的初值 b=0 就不合适了,要用:
if (i==0) b=a;

每循环一次,i++, 及时判断 是否 有4 个数了, 有了就不必再输入:
if (i==4) break;
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-01
已知循环次数,适宜用for循环。
如下改改,不用判断scanf的返回值,多省事。
#include <stdio.h>
int main (void)
{
float a;
float b = 0;
int i = 0;

for(i=0;i<4;i++)
{
scanf("%f",&a);
if (a > b)
b = a;
i++;
}

printf("%.1f",b);

getch();
return 0;
}
第2个回答  2013-10-01
i分别取0,1,2,3循环进行,当你输入第五个数的时候((scanf("%f",&a) == 1) && i < 4)为假跳出循环(此时i为4)。i=1,i取1,2,3,到i<4时为假,所以只能输入3个数字。我QQ:2233046775。确定对就给分啊。
第3个回答  2013-10-01
假如你是要输入多个数的话,建议你用for

c语言编程:读入四个数,输出最大的数
if (i==0) b=a;每循环一次,i++, 及时判断 是否 有4 个数了, 有了就不必再输入:if (i==4) break;

c语言编程题:输入4个数,输出最大和最小的均值
include<stdlib.h> main(){ int i,k,t=0,n=4,max,min,sum=0;scanf("%d",&n);scanf("%d",&k);if(k%2==0){t++;sum+=k;} max=k;min=k;for(i=1;i<n;i++){ scanf("%d",&k);if(max<k)max=k; if(min>k)min=k;if(k%2==0){t++;sum+=k;} } printf("%d...

用C语言编写程序,从键盘输入四个数,求其最大值
void main(){ float a,b,c,d,max;printf("请输入四位数字:\\n");scanf("%f%f%f",&a,&b,&c,&d);max=a;if(max<b)max=b;if(max<c)max=c;if(max<d)max=d;printf("最大的数值为:%f\\n",max);} 不知道帮没帮到你的忙 呵呵 望采纳 ...

C语言编程求:请输入四个整数a,b,c,d,输出其中最大的数,完整过程
void main(){ int a,b,c,d,max;scanf("%d%d%d",&a,&b,&c,&d);max=a;if(max<b)max=b;if(max<c)max=c;if(max<d)max=d;printf("max=%d\\n",max);}

C语言编程序:输入a,b,c,d四个整数,求最小值,最大值。
int max = 0; int min = 0;scanf("%d", &a);max = min = a;while(n>0){ if(a> max){ max = a;} if(a < min){ min = a;} scanf("%d", &a);n--;} printf("max:%d, min:%d\\n",max,min);} 原理就是运用冒泡算法,两两比较,把所有的比较完,得出最大和最小值...

跪求C语言编程题``( 四个数求最大值?)
void main(){ int a[4],max;printf("请输入四位整数\\n");scanf("%d%d%d",&a[0],&a[1],&a[2],&a[3]);max=a[0];for(int i=1;i<4;i++){ if(a[i]>max){ max=a[i];} } printf("Max=%d\\n",max);} 不知道你学了哪里~我只能用最简单的编。学习的时候要努力哦 ...

用C编写一个程序从用户输入的四个整数中找出最大和最小值
楼上的固然正确,不过第八行不要这样子写:max=min=a;最好分开来写成:max=a;min=a; 要养成良好的编程习惯。对于这个题而言,我会这样写(不用数组):include<stdio.h> main(){ int a,b,c,d,max,min;printf("input 4 numbers:");scanf("%d%d%d",&a,&b,&c,&d);max=a>(b>(c>...

c语言编程用循环语句输入四个数 要求这四个数由从小到大输出
i=0;i<4;i++ ) \/\/循环输入scanf("%d", &a[i] );for( i=0;i<3;i++ ) \/\/排序for( j=i+1;j<4;j++ )if ( a[i] > a[j] ){int t=a[i];a[i]=a[j];a[j]=t;}for( i=0;i<4;i++ ) \/\/循环输出printf("%d ", a[i] );printf("\\n");return 0;...

C语言编程,输入4个整数,按从小到大顺序输出
} } if(k != i){ int temp = num[k]; num[k] = num[i]; num[i] = temp; } } for(int i = 0 ; i < 4 ; i++){ printf("%d ", num[i]); } return 0;}

c语言编程 输入4个整数,要求由小到大输出
道理都是一样的,再多就可以用循环了,不过4个数用循环不太爽~~,看下面的冒泡排序非循环4个数的实现呵呵:include <stdio.h> int main(char* x ,char** y){ int temp,a,b,c,d;printf("please input num list:");scanf("%d,%d,%d,%d",&a,&b,&c,&d);if(a>b) {temp=a; a=b...

相似回答