高级语言程序设计课程第六次个人作业

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/gjyycx

这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/gjyycx/homework/14585

学号:<052301346>

姓名:<郑积超>


作业内容

1.设计一个按值传递和按地址传递呈现不同效果的程序

image

2.编写函数fun(int m, int *k, int xx[]),将小于整数m的非素数存入xx数组中,个数由k返回

image

3.编写函数,将长度为n的字符串从第m个字符开始的全部字符复制成另一个字符串

image

4.编写函数用冒泡法将数组按从小到大的顺序排列

image

5.将n个整数按输入顺序的逆序排列,要求应用带指针参数的函数实现

image

6.写一个函数打印arr数组的内容,不使用数组下标,使用指针

image

7.编写程序,分别找出多个n×m数组的最大值、最小值,并输出两个值的下标

image

8.判断上三角矩阵。上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。本题要求编写程序,判断一个给定的方阵是否上三角矩阵

image

9.给定一个按升序排列的二维数组,编写一个函数来判断目标值是否存在于数组中。数组是一个m x n的矩阵,可使用算法快速查询

image

10.编写一个函数,输入一个整数,将其分解为两个质数之和。提示:函数可以声明为int split(int n, int *a, int *b)。n作为传入参数,a和b作为传出参数。若无法分解返回0,可以分解则返回1

image

11.编写函数void shift(char* s, int n),请原地将字符串s循环左移n次。例如,字符串“hello”左移3次得到“lohel”

image

12.写一个程序读入一个二维整型数组并判断它是否为魔方矩阵。在魔方阵中,所有的行、列和对角线都拥有相同的和。

#include <stdio.h>
#include <stdlib.h>
int** readMatrix(int n) {
    int** matrix = (int**)malloc(n * sizeof(int*));
    for (int i = 0; i < n; i++) {
        matrix[i] = (int*)malloc(n * sizeof(int));
        for (int j = 0; j < n; j++) {
            scanf_s("%d", &matrix[i][j]);
        }
    }
    return matrix;
}
int isMagicSquare(int** matrix, int n) {
    int targetSum = 0;
    for (int j = 0; j < n; j++) {
        targetSum += matrix[0][j];
    }
    for (int i = 1; i < n; i++) {
        int rowSum = 0;
        for (int j = 0; j < n; j++) {
            rowSum += matrix[i][j];
        }
        if (rowSum != targetSum) {
            return 0;
        }
    }
    for (int j = 0; j < n; j++) {
        int colSum = 0;
        for (int i = 0; i < n; i++) {
            colSum += matrix[i][j];
        }
        if (colSum != targetSum) {
            return 0;
        }
    }
    int diagSum1 = 0;
    for (int i = 0; i < n; i++) {
        diagSum1 += matrix[i][i];
    }
    if (diagSum1 != targetSum) {
        return 0;
    }
    int diagSum2 = 0;
    for (int i = 0; i < n; i++) {
        diagSum2 += matrix[i][n - 1 - i];
    }
    if (diagSum2 != targetSum) {
        return 0;
    }

    return 1;
}
int main() {
    int n;

    printf("请输入魔方矩阵的阶数n: ");
    scanf_s("%d", &n);

    if (n <= 0) {
        printf("阶数必须大于0\n");
        return 1;
    }
    printf("请输入%d×%d矩阵的元素:\n", n, n);
    int** matrix = readMatrix(n);
    if (isMagicSquare(matrix, n)) {
        printf("\n这是一个魔方矩阵!\n");
    }
    else {
        printf("\n这不是一个魔方矩阵。\n");
    }
    for (int i = 0; i < n; i++) {
        free(matrix[i]);
    }
    free(matrix);
    return 0;
}

image

13.利用指针,判断两个字符串是否相等。忽略大小写。例如,输入 “hello”和”hELlO”,认为它们是相等的。返回值:1表示相等。0表示不同)

image

14. 定义一个一维数组和二维数组,按顺序打印出数组中每个元素的地址

image

15.设计一个分别使用数组名和指针引用数组元素的程序

image


总结与思考

本次作业掌握指针基本用法,包括申请、释放内存等操作。

posted @ 2025-11-20 20:03  052301346郑积超  阅读(1)  评论(0)    收藏  举报