#include<stdio.h>int main() { int max,min,n; printf("Input a siries of number,and the last one is 0:"); scanf("%d",&n); max=n;min=n;do{ if(n>=max) max=n; else if(n<=min) min=n; else scanf_s("%d",n);}while(n==0);printf("max is %d,min is %d",max,min);getchar();getchar();}
1 回答
慕哥8595403
TA贡献5条经验 获得超0个赞
假设程序运行后,第一个输入的整数n是1。则根据你的程序,max和min初始化为1,进入循环,n>=max成立,又再次max=n,这部分显然是多余的,程序继续执行,由于第一个if成立,所以,后面两个else都不执行。循环判断条件是n==0,然而此时n==1,因此不执行循环内容,输出max is 1, min is 1。
根据上面的演示可以知道,if判断条件里,应该改为n>max,n<min,这样可以去除多余的赋值操作;明确if判断语句的含义,即一个条件成立后,其余的相关else 和 else if语句不再执行,为保证第二个scanf函数的执行,第二个else应当去掉;另外,循环条件如果写n==0,则意味着只有在n被赋值为0的时候,循环体才执行,而根据题意,应该是n为0的时候结束循环,所以改为n!=0。
综上,代码修改如下:
#include<stdio.h> int main() { int max,min,n; printf("Input a siries of number,and the last one is 0:"); scanf("%d",&n); max=n;min=n; do{ if(n>max) max=n; else if(n<min) min=n; scanf_s("%d",n); }while(n!=0); printf("max is %d,min is %d",max,min); getchar(); getchar(); }
望采纳,谢谢。
- 1 回答
- 0 关注
- 4300 浏览
添加回答
举报
0/150
提交
取消