用C语言写函数,分别实现完成两个数的交换、判断闰年、判断素数

将之前讨论过的问题用函数实现,包括:交换两个数、判断闰年及判断素数问题。
1、完成两个数的交换。
重点:因为形参是实参的一份拷贝,所以直接对形参操作不能影响实参的值,必须要通过传指针的方式,通过间接访问操作来修改函数外的变量。
实现代码:

#include<stdio.h>
#include<stdlib.h>
void Swap(int*x,int*y) {
        int tmp = *x;
        *x= *y;
        *y= tmp;
}
int main() {
        int a = 5;
        int b = 15;
        Swap(&a,&b);
        printf("%d %d\n", a, b);
        system("pause");
        return 0;
}

运行结果:
在这里插入图片描述
2、判断一个年份是不是闰年。
这个问题比较简单,记住闰年的判断条件就不难实现。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int IsLeapYear(int year) {
        if (year % 4 == 0 && year % 100 != 0) {
                 return 1;
        }
        if (year % 400 == 0) {
                 return 1;
        }
        return 0;
}
int main() {
        int year;
        printf("请输入一个年份:\n");
        scanf("%d",&year);
        int a= IsLeapYear(year);
        if (a == 0) {
                 printf("%d年不是闰年\n", year);
        }
        else if (a == 1) {
                 printf("%d年是闰年\n", year);
        }
        system("pause");
        return 0;
}

运行结果:
在这里插入图片描述
3、输入一个数,判断是不是素数。
重点:写代码时不能只考虑输入正常的情况,包括输入为0、1和负数的情况也需要考虑。
实现代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int IsPrime(int num) {   
        if (num <= 0) {      //用户输入的数不合法
                 return 0;
        }
        if (num == 1) {
                 return 0;
        }
        for (int i = 2; i < num; ++i) {
                 if (num%i == 0) {
                         return 0;
                 }
        }
        return 1;
}
int main() {
        int num;
        printf("请输入一个数:\n");
        scanf("%d",&num);
        int a=IsPrime(num);
        if (a == 0) {
                 printf("%d不是素数\n", num);
        }
        else if (a == 1) {
                 printf("%d是素数\n", num);
        }
        system("pause");
        return 0;
}

猜你喜欢

转载自blog.csdn.net/swag_wg/article/details/88880157