如果条件成立,有什么办法不执行后面else if和else语句解决方案
如果条件成立,有什么办法不执行后面else if和else语句
#include <stdio.h>
main(){
void input(int *a);
void ver(int *a);
void output(int *a);
int str[10];
input(str);
ver(str);
output(str);
}
void input(int *a){
int i=0;
while(i <10)
{
scanf( "%d ",a+i);
i++;
}
}
void ver(int *a){
int i,max,min,t,ax,in;
int *p;
p=a;max=*a;min=*a;
printf( "max=%d min=%d\n ",max,min);
ax=0; /*最大数的下标*/
in=0; /*最小数的下标*/
for(i=1;i <10;i++)
{
if (*(p+i)> max) {max=*(p+i);ax=i;} /*记录最大数所在的下标*/
if (*(p+i) <min) {min=*(p+i);in=i;} /*记录最小数所在的下标*/
}
printf( "%d %d max=%d min=%d i=%d\n ",ax,in,max,min,i);
if (in==0&&max==i-1) /*如果条件成立,有什么办法不执行后面else if和else语句,也就是提早结束本函数*/;
else if(ax==0&&in==i-1) {t=*(a+i-1);*(a+i-1)=*a;*a=t;}
else {
t=*a;
*a=*(a+in);
*(a+in)=t;
if (max!=*(a+ax)) ax=in;
t=*(a+i-1);
puts( "not end ");/*测试是否执行了else语名*/
*(a+i-1)=*(a+ax);
*(a+ax)=t;
}
}
void output(int *a){
int i=0,*p;
p=a;
while(i <10){
printf( "%d\t ",*p++);
i++;
}
}
------解决方案--------------------
如果下面没有操作,直接return,反正你函数返回参数是void的
if (in==0&&max==i-1) return;
else ...
------解决方案--------------------
if (in==0&&max==i-1)
return
就OK了
------解决方案--------------------
if (in==0&&max==i-1) return;
如果下面的还是会执行,说明你的条件没有满足,如果执行到return,绝对退出,你可以这么改
if (in==0&&max==i-1) {
printf( "I will quit this function. ");//看有没有输出就知道了
return;
}
else.......
另外,希望你好好复习函数那一章
------解决方案--------------------
if (in==0&&max==i-1) return;
肯定不会有问题的,如果还有问题,执行到了你的测试语句那里,一定是你的条件搞错了,你的条件本身就是个else分支的条件,所以才会到那里去
#include <stdio.h>
main(){
void input(int *a);
void ver(int *a);
void output(int *a);
int str[10];
input(str);
ver(str);
output(str);
}
void input(int *a){
int i=0;
while(i <10)
{
scanf( "%d ",a+i);
i++;
}
}
void ver(int *a){
int i,max,min,t,ax,in;
int *p;
p=a;max=*a;min=*a;
printf( "max=%d min=%d\n ",max,min);
ax=0; /*最大数的下标*/
in=0; /*最小数的下标*/
for(i=1;i <10;i++)
{
if (*(p+i)> max) {max=*(p+i);ax=i;} /*记录最大数所在的下标*/
if (*(p+i) <min) {min=*(p+i);in=i;} /*记录最小数所在的下标*/
}
printf( "%d %d max=%d min=%d i=%d\n ",ax,in,max,min,i);
if (in==0&&max==i-1) /*如果条件成立,有什么办法不执行后面else if和else语句,也就是提早结束本函数*/;
else if(ax==0&&in==i-1) {t=*(a+i-1);*(a+i-1)=*a;*a=t;}
else {
t=*a;
*a=*(a+in);
*(a+in)=t;
if (max!=*(a+ax)) ax=in;
t=*(a+i-1);
puts( "not end ");/*测试是否执行了else语名*/
*(a+i-1)=*(a+ax);
*(a+ax)=t;
}
}
void output(int *a){
int i=0,*p;
p=a;
while(i <10){
printf( "%d\t ",*p++);
i++;
}
}
------解决方案--------------------
如果下面没有操作,直接return,反正你函数返回参数是void的
if (in==0&&max==i-1) return;
else ...
------解决方案--------------------
if (in==0&&max==i-1)
return
就OK了
------解决方案--------------------
if (in==0&&max==i-1) return;
如果下面的还是会执行,说明你的条件没有满足,如果执行到return,绝对退出,你可以这么改
if (in==0&&max==i-1) {
printf( "I will quit this function. ");//看有没有输出就知道了
return;
}
else.......
另外,希望你好好复习函数那一章
------解决方案--------------------
if (in==0&&max==i-1) return;
肯定不会有问题的,如果还有问题,执行到了你的测试语句那里,一定是你的条件搞错了,你的条件本身就是个else分支的条件,所以才会到那里去