switch语句比较大小

来源:百度知道 编辑:UC知道 时间:2024/05/10 12:35:22
高手看看错在哪里,方便的话请给出更正过的程序。别跟我说用IF语句就一句话事,我当然知道IF语句傻瓜式操作,这里我就是说switch,直接IF的就别占屏了
#include"stdio.h"
main()
{
int i,j=-1,a[2],max,min;
printf("Please input two nums following:\n");
for(i=0;i<=1;i++)
{
printf("\na[%d]=",i);
scanf("%d",&a[i]);
j=j+1;
}
switch(j)
{
case 0: max=a[0];
min=a[0];
break;
case 1: if(a[1]>max) max=a[1];
else min=a[1];
break;
default : 0;
}
printf("%d>%d\n",max,min);
}

你说不要用if这样傻瓜式的的,你看看你的程序,你的J有可能等于0吗?
也就是说:你的max,min有可能赋值吗?
循环结束后,你的J = 1,case(1)直接去执行if 语句,这里你还是提到了if语句,而且你的这个if语句还有问题,因为你的max min都是未知的。

因为case 0 永远不会执行,
修改办法:max=a[0]; min=a[0];
放到switch之外
不过我觉得你的这个事多此一举,在C里面,讲究的是效率,越简洁占据的内存越小。只有高效,安全的代码才是最好的。从根本上来说,你转了一圈儿,又回到了if语句上。

#include"stdio.h"
main()
{
int i,j=-1,a[2],max,min;
printf("Please input two nums following:\n");
for(i=0;i<2;i++)
{
scanf("%d",&a[i]);
j=j+1;
}
max=min=a[0];
switch(j)
{
case 0:
break;
case 1: if(a[1] >= max) max=a[1];
else min=a[1];
break;
default : break;
}
printf("%d>%d\n",max,min);
}