上机练习14

p262.c

/*
编写一程序P262.C实现以下功能
  先从键盘读入整数m和n(约定(2<=m<=20、2<=n<=20)),再从键盘读入m行(每行n个,即一个m×n矩阵)整数,然后从键盘读入一个列序号,
按示例格式显示该列的内容。
编程可用素材:
printf("请输入 m 和 n: ")、printf("请输入 %d 行, 每行 %d 列整数:\n"…、
printf("请输入要显示列的列号: ")、printf("\n该列的内容为: ")。
*/
#include <stdio.h>
#define N 20
int main(void)
{
    int arr[N][N];
    int i, j;
    int m, n, col;
    printf("请输入 m 和 n: ");
    scanf("%d%d", &m, &n);
    printf("请输入 %d 行, 每行 %d 列整数:\n", m, n);
    //input
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            scanf("%d", &arr[i][j]);
        }
    }
    printf("请输入要显示列的列号: ");
    scanf("%d", &col);
    printf("\n该列的内容为: ");
    for (i = 0; i < m; i++)
    {
        printf("%d ", arr[i][col]);
    }
    return 0;
}

p271.c

/*
编写一程序P271.C实现以下功能
  先从键盘读入整数m和n(约定(2<=m<=20、2<=n<=20)),再从键盘读入m行(每行n个,即一个m×n矩阵)整数,然后从键盘读入一个列序号,
按示例格式显示该列上各元素之和。
编程可用素材:printf("请输入 m 和 n: ")、printf("请输入 %d 行, 每行 %d 列整数:\n"…、
printf("请输入要计算和之列的列号: ")、printf("\n该列上各元素之和为: …。
*/
#include <stdio.h>
#define N 20
int main(void)
{
    int arr[N][N];
    int i, j;
    int m, n, col, sum = 0;
    printf("请输入 m 和 n: ");
    scanf("%d%d", &m, &n);
    printf("请输入 %d 行, 每行 %d 列整数:\n", m, n);
    //input
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            scanf("%d", &arr[i][j]);
        }
    }
    printf("请输入要计算和之列的列号: ");
    scanf("%d", &col);
    for (i = 0; i < m; i++)
    {
        sum += arr[i][col];
    }
    printf("\n该列上各元素之和为:%d", sum);

    return 0;
}

p313.c

/*
编写一程序P313.C实现以下功能
  求任意的一个m×n矩阵的鞍点——鞍点是指该位置上的元素在该行上为最大、在该列上为最小,矩阵中可能没有鞍点,但最多只有一个鞍点。
m、n(2<=m<=20、2<=n<=20)及矩阵元素从键盘输入(只考虑int型和每行、每列中没有并列最大/最小的情况)。
  编程可用素材:
printf("Please input m and n:")...、printf("Please input a juZhen(... hang, ... lie):\n...、
printf("\nmei you an dian.\n")...、printf("\nyou an dian, wei: juZhen[...][...]=...\n...。

31 42 36 74 2358 88
32 57 37 43 47 1447
97 51 257 7 445 459
33 65 44 3 425 43
68 3425 82 789 123 2134

31 42 1136 74 2358 88
32 57 4137 43 47 1447
97 51 1257 7 445 459
33 65 744 3 425 43
68 3425 2182 789 123 2134
*/
#include <stdio.h>
#define N 20

int main(void)
{
    int m, n;
    int arr[N][N];
    int i, j, k;
    int row, col, tmp;
    int flag;
    printf("Please input m and n:");
    scanf("%d%d", &m, &n);
    printf("Please input a juZhen(%d hang, %d lie):\n", m, n);
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            scanf("%d", &arr[i][j]);
        }
    }
    // 找到鞍点并记录坐标  行上为最大、在该列上为最小
    for (i = 0; i < m; i++)
    {
        flag = 1; // 假设某行最大值就是一个鞍点
        tmp = arr[i][0];
        row = i;
        col = 0;

        // 找行上最大
        for (j = 0; j < n; j++)
        {
            if (tmp < arr[i][j])
            {
                tmp = arr[i][j];
                row = i;
                col = j;
            }
        }
        // 判断是否列上最小?
        for (k = 0; k < m; k++)
        {
            if (tmp > arr[k][col])
            {
                flag = 0;
                break;
            }
        }
        // 已经找到了
        if (k == m)
        {
            break;
        }
    }
    if (flag)
    {
        printf("\nyou an dian, wei: juZhen[%d][%d]=%d\n", row, col, arr[row][col]);
    }
    else
    {
        printf("\nmei you an dian.\n");
    }

    return 0;
}

p719.c

/*
编写一程序P719.C实现以下功能
  从键盘上输入5个字符串(约定:每个字符串中字符数≤80字节),对其进行升序排序并输出。
编程可用素材:printf("Input 5 strings:\n")、printf("---------------------------\n")。
*/
#include <stdio.h>
#include <string.h>
#define N 81

int main(void)
{
    char str[5][N];
    int i, j;
    char tmp[N];
    printf("Input 5 strings:\n");
    for (i = 0; i < 5; i++)
    {
        gets(str[i]);
    }
    printf("---------------------------\n");
    // sort
    for (i = 0; i < 5 - 1; i++)
    {
        for (j = 0; j < 5 - 1 - i; j++)
        {
            if (strcmp(str[j], str[j + 1]) > 0)
            {
                strcpy(tmp, str[j]);
                strcpy(str[j], str[j + 1]);
                strcpy(str[j + 1], tmp);
            }
        }
    }
    // output
    for (i = 0; i < 5; i++)
    {
        puts(str[i]);
    }
    return 0;
}

p732.c

/*
编写一程序P732.C实现以下功能
  输入3行3列的矩阵,输出所有元素的累加和。编程可用素材:printf("Please input the 3x3 Matrix:\n")、printf("\nsum=…\n"…。
*/
#include <stdio.h>
#define N 3
int main(void)
{
    int arr[N][N];
    int i, j;
    int sum = 0;
    printf("Please input the 3x3 Matrix:\n");
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
        {
            scanf("%d", &arr[i][j]);
            sum += arr[i][j];
        }
    }
    printf("\nsum=%d\n", sum);
    return 0;
}

p748.c

/*
编写一程序P748.C实现以下功能
  从键盘上输入矩阵的阶数n(n<=14), 矩阵中元素的值等于其位置的行数和列数之和的n倍(行列的值从0开始计数),如n=3时,矩阵为
        0   3   6
        3   6   9
        6   9   12
  先输出该矩阵(显示时每个数宽度为4、右对齐),然后计算输出sum1和sum2的值:sum1为矩阵中所有不靠边元素之和、sum2为矩阵的一条对角线元素之和。
编程可用素材:printf("Enter n: ")、printf("\nsum1=…\nsum2=…\n"…。
*/
#include <stdio.h>
#define N 14

int main(void)
{
    int arr[N][N];
    int i, j;
    int n;
    int sum1, sum2;
    printf("Enter n: ");
    scanf("%d", &n);
    // input
    sum1 = sum2 = 0;
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
        {
            arr[i][j] = (i + j) * n;
            printf("%4d", arr[i][j]);
            if (i != 0 && j != 0 && i != n - 1 && j != n - 1)
            {
                sum1 += arr[i][j];
            }
            if (i == j)
            {
                sum2 += arr[i][j];
            }
        }
        printf("\n");
    }

    printf("\nsum1=%d\nsum2=%d\n", sum1, sum2);

    return 0;
}

p749.c

/*
编写一程序P749.C实现以下功能
  用键盘输入的整数产生5*5矩阵N,并按行输出该矩阵,每个元素占4个数位、右对齐。
编程可用素材:printf("Please input an integer: ")。
*/
#include <stdio.h>

int main(void)
{
    int n;
    int i, j;
    printf("Please input an integer: ");
    scanf("%d", &n);
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j < 5; j++)
        {
            printf("%4d", n + i + j);
        }
        printf("\n");
    }
    return 0;
}

p811.c

#include <math.h>
#include <stdio.h>

/* userCode(<80字符): 自定义函数之原型声明 */
double getArea(double bianA, double bianB, double bianC);

int main(void)
{
    double bianA, bianB, bianC, mianJi;

    printf("please input triange sides: ");
    scanf("%lf,%lf,%lf", &bianA, &bianB, &bianC);

    if (bianA < 0 || bianB < 0 || bianC < 0 || (bianA + bianB <= bianC) || (bianA + bianC <= bianB) || (bianB + bianC <= bianA))
    {
        printf("\ndata error\n");
    }
    else
    {
        mianJi = getArea(bianA, bianB, bianC); /* userCode(<50字符): 调用函数计算三角形面积 */
        printf("\narea=%.2f\n", mianJi);
    }

    return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
double getArea(double bianA, double bianB, double bianC)
{
    double semiCircle = 0.5 * (bianA + bianB + bianC);
    return sqrt(semiCircle * (semiCircle - bianA) * (semiCircle - bianB) * (semiCircle - bianC));
}

p812.c

#include <math.h>
#include <stdio.h>

/* userCode(<80字符): 自定义函数之原型声明 */
double getArea(int aBian, int bBian, int cBian);

int main(void)
{
    int aBian, bBian, cBian;
    double mJi;

    printf("please input triange sides: ");
    scanf("%d,%d,%d", &aBian, &bBian, &cBian);

    if (aBian < 0 || bBian < 0 || cBian < 0 || (aBian + bBian <= cBian) || (aBian + cBian <= bBian) || (bBian + cBian <= aBian))
    {
        printf("\ndata error\n");
    }
    else
    {
        mJi = getArea(aBian, bBian, cBian); /* userCode(<50字符): 调用函数计算三角形面积 */
        printf("\narea=%.2f\n", mJi);
    }

    return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
double getArea(int aBian, int bBian, int cBian)
{
    int circle = aBian + bBian + cBian;
    double semi = 0.5 * circle;
    return sqrt(semi * (semi - aBian) * (semi - bBian) * (semi - cBian));
}

p813.c

#include <stdio.h>

/* userCode(<50字符): 自定义函数之原型声明 */
double f(int n);

int main(void)
{
    int n;
    double fn;

    printf("Input n (13>=n>=2): ");
    scanf("%d", &n);

    fn = f(n); /* userCode(<50字符): 调用函数计算fn */
    printf("\nf(%d)=%.0f\n", n, fn);

    return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
double f(int n)
{
    if (0 == n)
    {
        return 0;
    }
    else if (1 == n)
    {
        return 1;
    }
    else if (2 == n)
    {
        return 2;
    }
    else
    {
        return 2 * f(n - 1) + f(n - 2) * f(n - 3);
    }
}
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐