C程序设计第七章习题

1. 封装求最大公约数和最小公倍数的函数。

参考第五章 5.1

代码:

#include "stdio.h"

int getMaxDivisor(int a, int b);
int getMinMutiple(int a, int b);

void main() {
 
    int m = 0;
    int n = 0;
    printf("Please input tow numbers:");
    scanf("%d,%d", &m, &n);
    printf("the max common divisor of %d and %d is %d\n", m, n, getMaxDivisor(m,n));
    printf("the min common mutiple of %d and %d is %d", m, n, getMinMutiple(m,n));
}

int getMaxDivisor(int a, int b) {
    int i = 1;
    int x = 0;
    while(i <= a && i <= b) {
        if(a%i == 0 && b%i == 0) x = i;
        i++;
    }
    return x;
}

int getMinMutiple(int a, int b) {
    int i = a;
    int y = 0;
    while(i >= a || i >= b) {
        if(i%a == 0 && i%b == 0) {
            y = i;
            break;
        }
        i++;
    }
    return y;
}

输出结果:

 

2.  求方程根问题

参考第二章的4(8)

 代码:

#include "stdio.h"
#include "math.h"

void getRoot0(double a, double b, double c);
void getRoot1(double a, double b, double c);
void getRoot2(double a, double b, double c);

void main() {
    double a = 0;
    double b = 0;
    double c = 0;
    printf("Please input 3 values of Coefficients of bivariate linear equations:");
    scanf("%lf,%lf,%lf", &a, &b, &c);

    double delta = b*b - 4*a*c;

    if(delta < 0) {
        getRoot0(a, b, c);
    } else if(delta == 0) {
        getRoot1(a, b, c);
    } else {
        getRoot2(a, b, c);
    }
}

void getRoot0(double a, double b, double c) {
    printf("The equations has no result");
}

void getRoot1(double a, double b, double c) {
    printf("The equations has one result:%f", (-1)*b/2/a);
}

void getRoot2(double a, double b, double c) {
    double delta = b*b - 4*a*c;
    printf("The equations has two result:%f and %f", ((-1)*b + sqrt(delta))/(2*a), ((-1)*b - sqrt(delta))/(2*a));
}

输出结果:

 

 

3. 求素数

参考 第六章 6.1

代码:

#include "stdio.h"
 
int isLnum(int num);
void main() {

    int num = 0;

    printf("Please input a number:");
    scanf("%d", &num); 
    
    if(isLnum(num)) {
        printf("Yes, %d is Legacy num", num);
    } else {
        printf("No, %d is not Legacy num", num);
    }

}

int isLnum(int num) {
    int j = 2;
    while (j < num) {
            if(num%j == 0) {
                return 0;
            }
        j++;
    }
    return 1;
}

输出结果:

 

4. 矩阵转置

参考第六章6_3

代码:

#include "stdio.h"

void reverseMatrix(int a[3][3]);
void printMatrix(int a[3][3]);

void main() {

    int a[3][3] = { {1,2,3},
                    {4,5,6},
                    {7,8,9}};
    

    reverseMatrix(a);
    printf("The reverse matrix is:\n");
    printMatrix(a);
    
}

void reverseMatrix(int a[3][3]) {
        for(int i = 0; i < 3; i++) {
        for(int j = 0; j < i; j++){
            int temp = 0;
            temp = a[i][j];
            a[i][j] = a[j][i];
            a[j][i] = temp;
        }
    }
}

void printMatrix(int a[3][3]) {
    for(int i = 0; i < 3; i++) {
        for(int j = 0; j < 3; j++){
            printf("%d ", a[i][j]);
        }
        printf(
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值