从键盘输入一批整数,最后一个数为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;

else 

scanf_s("%d",n);

}while(n==0);

printf("max is %d,min is %d",max,min);

getchar();

getchar();

}


liaoexiang
浏览 4321回答 1
1回答

慕哥8595403

假设程序运行后,第一个输入的整数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(); }望采纳,谢谢。
打开App,查看更多内容
随时随地看视频慕课网APP