C语言问题?输入若干个正整数选出最大值,用-1结束输入

输入若干个正整数选出最大值,用-1结束输入

#include<stdio.h>
main()
{
int max,a;
do
{
scanf("%d",&a);
}
while(a<0&&a!=-1);/* 为什么a不大于0(a>0)不是要输入正整数吗 */
max=a;
while(a!=-1)
{

scanf("%d",&a);
if(a>max&&a!=-1)
max=a;
}
if(max!=-1)
printf("%d\n",max);
}

请仔细解释带注释那一步!

(a<0&&a!= -1)的意思难道不是一定要输入负数才可以继续下面的循环吗?
还有这题我要是输入 "-22 -33 -44 -55 -1"后回车什么都不显示!
表示一定要输入正数才可以显示的在哪啊?

do
{
scanf("%d",&a);
}
while(a<0&&a!=-1);//
是do-while不是while,重复的循环是上面的,也就是只要是负数并且非-1就不断重读
如果你只输入负数和-1,结束第一个循环之后a=-1,根本不进入第二个循环,然后输出前判断max也是-1,就不进行输出。
程序要求是正数,错误的输入没有结果,这样没问题
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-02-24
a是一个整型变量,只能放一个数进去,第二次读进去就覆盖了

输入 "-22 -33 -44 -55 -1"

此时a==-1,然后max=a,max==-1
a和max都等于-1了,下面的循环和判断语句都没做,程序就结束了..

do
{
scanf("%d",&a);
}
while(a<0&&a!=-1);//这个的意思是如果输入正数或-1或0,就结束了do里的循环,开始向下做额..

应该用数组

C语言问题?输入若干个正整数选出最大值,用-1结束输入
是do-while不是while,重复的循环是上面的,也就是只要是负数并且非-1就不断重读 如果你只输入负数和-1,结束第一个循环之后a=-1,根本不进入第二个循环,然后输出前判断max也是-1,就不进行输出。程序要求是正数,错误的输入没有结果,这样没问题 ...

c语言求教 从输入的若干个大于零的正整数中选出最大值,用-1结束
printf("输入没正整数最大值");}

...若干个大于零的正整数中选出最大值,用-1结束输入,这个题是什么意思...
循环输入,在没有结束前一直是采样状态,如果输入的值为-1,采样结束 include<stdio.h> void main(){ int numb=0,max=0;while(numb!=-1){ printf("\\n请输入正整数:(结束输入请输入:-1)");scanf("%d",&numb);if(numb>max)max=numb;} printf("输入最大值为:%d",max);} } ...

c语言: 输入若干个整数,以-1标记输入结束。输出其中的最大数...
int max;\/\/接收最大值 int arr[n];\/\/n为输入的整数的个数 int i;max=arr[0];for(i=0;i<n-1;i++){ scanf("%d",arr[i]);\/\/输入前n-1个数 } arr[i]=-1;\/\/以-1结束 for(i=0;i!=1n;i++){ if(arr[i]>max) max = arr[i];\/\/求最大值 } 这是核心语句,我希望...

C语言如何求输入任意几个数中的最大值,输入-1结束?
include<stdio.h> int main(){ double n,max;scanf("%lf",&n);max=n;while(n>=0){scanf("%lf",&n);if(max<n)max=n;} printf("%lf",max);return 0;}

急!急!急!用C语言编写一个程序,输入若干个整数,以-1标记结束,输出其中...
include <stdlib.h> int main(){int max,min,num;printf("Input numbers,-1 to end:\\n");scanf("%d",&num);max=min=num;while(num!=-1){ if(num>max)max=num;if(num<min)min=num;scanf("%d",&num);} printf("max:%d,min:%d\\n",max,min);system("pause");return 0;} ...

c语言,从键盘输入若干个整数,用-1作为输入结束的标志,求他们的和及平均...
include<stdio.h> int main(){ int x;double sum=0,pj;int cnt=0;scanf("%d",&x);while(x!=-1){ sum+=x;cnt++;scanf("%d",&x);} if(cnt>0){ pj=sum\/cnt;printf("%.2f\\n",pj);} return 0;}

输入若干数以-1结束 C语言
include <stdio.h>int main(void){int n,pcnt,ncnt,zcnt,psum,nsum;for(pcnt=ncnt=zcnt=psum=nsum=0;scanf("%d",&n)==1&&n!=-1;){if(n>0){pcnt++;psum+=n;}else{if(n<0){ncnt++;nsum+=n;}else{zcnt++;}}}printf("%d %d %d\\n",pcnt,zcnt,ncnt);printf("%d ...

C语言编程:输入10个数,求最大值,以负1结束
最终输出最大值即可。参考代码如下:include <stdio.h>int main(){ int i, n, max; scanf("%d",&max);\/\/输入第一个数,作为最大值。 for(i = 1; i < 10; i ++)\/\/输入剩余9个数。 { scanf("%d",&n); if(n == -1) break;\/\/遇到-1,结束输入。 if(...

C语言题目《从输入若干大于零的数中选出最大值,并以-1结束输入》
思路不对 max=0; \/\/这里赋值max,因为输入的x都大于零 do{ do{ \/\/这个do循环就是查错的,小于零的不计入输入,重新输入 scanf("%d",&x);}while(x>0);if(max<x) \/\/这个if判断挑出最大的 max=x;}while(x!=-1);

相似回答