0%

函数练习

文章时效性提示

本文发布于 518 天前,部分信息可能已经改变,请注意甄别。

写函数判断一个数是否为素数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
void Prime_Number(int* pnum)
{
    int x,i,z=0;
    x = *pnum;
    for (i = 2; i < x; i++) {
        if (x%i == 0) {
            z = 1;
            break;
        }
    }
    if (z==0) {
        printf("输入的数字是素数");
    }else
    {
        printf("输入的数字不是素数");
    }
}

int main() {
    int num,a;
    printf("判断一个数是否为素数\n");
    printf("请输入一个数字:->");
    scanf("%d",&num);
    Prime_Number(&num);
    return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
//是素数返回1,不是返回0
int is_Prime(int n)
{
    int i;
    for (i = 2; i<n; i++) {
        if (n%i == 0) {
            return 0;
        }
    }
    return 1;
}

int main()
{
    int i =0;
    for (i=100; i<=200; i++) {
        if (is_Prime(i) == 1) {
            printf("%d ",i);
        }
    }
    return 0;
}

写一个函数判断一年是否为闰年

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
int Leap_Year(int a)
{
    if ((a % 4 == 0 && a % 100 != 0 )|| a % 400 == 0) {
        return 1;
    }
    return 0;
}

int main() {
    int x;
    printf("判断一年是否为闰年\n");
    printf("请输入年份:->");
    scanf("%d",&x);
    if (Leap_Year(x)==1) {
        printf("是闰年\n");
    }else{
        printf("不是闰年\n");
    }
    return 0;
}

函数实现一个整型有序数组的二分查找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>

int binary_search(int arr[],int k,int sz)//实参和形参的名字相同是可以的
{
    //算法的实现
    int left = 0;
//    int sz = sizeof(arr)/sizeof(arr[0]);//传过去的arr不是数组,本质上arr是指针,只是首元素的地址
    int right = sz - 1;
    while (left<=right) {
        int mid = (left + right) / 2;
        if (arr[mid] < k)
        {
            left = mid + 1;
        }else if (arr[mid] > k) {
            right = mid - 1;
        }else {
            return mid;;
        }
    }
    return -1;
}

int main(){
    //二分查找-在一个有序数组中查找具体的某个数
    //找到了返回这个数的下标,找不到返回-1
    int arr[] = {1,2,3,4,5,6,7,8,9,10};
    int k = 20;
    int sz = sizeof(arr)/sizeof(arr[0]);
    int ret = binary_search(arr,k,sz);
    if (ret == -1) {
        printf("找不到\n");
    }else
    {
        printf("找到了,下标是:%d\n",ret);
    }
}

写一个函数,每调用一次,num加1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
void Record(int* x)
{
    (*x)++;
}
   
int main() {
    int i,num = 0;
    Record(&num);
    printf("%d\n",num);
    Record(&num);
    printf("%d\n",num);
    Record(&num);
    printf("%d\n",num);
    return 0;
}