c语言-函数执行顺序,函数返回类型那些事

来源:互联网 发布:如意时时彩源码 编辑:程序博客网 时间:2024/05/16 12:50

关于二分查找问题我们可以向自己提三个问题?

①这两个程序执行效果相同?

②两个程序执行的代码编写顺序为什么不同,结果一样?

③自定义函数为什么可以没有函数返回值怎么可以没有?


程序一:

#include <stdio.h>

int main(){
int binarySearch(int a[], int n, int key);
    int i, val, ret;
    int a[8]={-32, 12, 16, 24, 36, 45, 59, 98};
    for(i=0; i<8; i++)
        printf("%d\t", a[i]);
    printf("\n请输人所要查找的元素:");
    scanf("%d",&val);
    ret = binarySearch(a,8,val);
    if(-1 == ret)
        printf("查找失败 \n");
    else
        printf ("查找成功 \n");
    return 0;
}

int binarySearch(int a[], int n, int key)//自定义函数

{

    int low = 0;
    int high = n - 1;
    while(low<= high){
        int mid = (low + high)/2;
        int midVal = a[mid];
        if(midVal<key)
            low = mid + 1;
        else if(midVal>key)
            high = mid - 1;
        else
            return mid;
    }
    return -1;

}


程序二:

#include <stdio.h>

 binarySearch(int a[], int n, int key)//自定义函数

{
    int low = 0;
    int high = n - 1;
    while(low<= high){
        int mid = (low + high)/2;
        int midVal = a[mid];
        if(midVal<key)
            low = mid + 1;
        else if(midVal>key)
            high = mid - 1;
        else
            return mid;
    }
    return -1;
}




int main(){

    int i, val, ret;
    int a[8]={-32, 12, 16, 24, 36, 45, 59, 98};
    for(i=0; i<8; i++)
        printf("%d\t", a[i]);
    printf("\n请输人所要查找的元素:");
    scanf("%d",&val);
    ret = binarySearch(a,8,val);
    if(-1 == ret)
        printf("查找失败 \n");
    else
        printf ("查找成功 \n");
    return 0;
}


原创粉丝点击