C语言新手练习之多维数组、结构体及函数

yizhihongxing

C语言新手练习之多维数组、结构体及函数

本文将详细讲解C语言新手练习中的多维数组、结构体及函数的相关知识点,旨在帮助初学者掌握基本的C语言编程技能。文章中将包含两个示例,以帮助读者更好地理解本文中的知识点。

多维数组

定义

多维数组是一种由多个一维数组组成的数组,每个一维数组都与其他一维数组有相同的数据类型。Multidimensional arrays in C are defined as an array of arrays.在C语言中,通常使用两个下标表示一个二维数组。

以下是一个二维数组的定义,它包含3行和4列,共有12个元素:

int a[3][4];

在二维数组中,元素可以通过下标访问,例如访问第一行第二列:

a[0][1];

示例1:矩阵相乘

下面是一个简单的示例,展示如何对两个矩阵进行相乘,其中矩阵的行数和列数可以通过用户输入来指定。

#include <stdio.h>
#define MAX 100
int main()
{
    int i,j,k,r1,c1,r2,c2;
    int A[MAX][MAX], B[MAX][MAX], C[MAX][MAX];
    printf("Enter the rows and columns for first matrix: \n");
    scanf("%d %d", &r1, &c1);
    printf("Enter the rows and columns for second matrix: \n");
    scanf("%d %d", &r2, &c2);
    if (c1 != r2)
    {
        printf("Matrices cannot be multiplied\n");
        return 0;
    }
    //Taking input for first matrix
    printf("\nEnter the elements of first matrix: \n");
    for (i = 0; i < r1; i++)
    {
        for (j = 0; j < c1; j++)
        {
            scanf("%d", &A[i][j]);
        }
    }
    //Taking input for second matrix
    printf("\nEnter the elements of second matrix: \n");
    for (i = 0; i < r2; i++)
    {
        for (j = 0; j < c2; j++)
        {
            scanf("%d", &B[i][j]);
        }
    }
    //Multiplying matrices
    for (i = 0; i < r1; i++)
    {
        for (j = 0; j < c2; j++)
        {
            C[i][j] = 0;
            for (k = 0; k < c1; k++)
            {
                C[i][j] += A[i][k] * B[k][j];
            }
        }
    }
    //Printing resultant matrix
    printf("\nResultant matrix is: \n");
    for (i = 0; i < r1; i++)
    {
        for (j = 0; j < c2; j++)
        {
            printf("%d ", C[i][j]);
        }
        printf("\n");
    }
    return 0;
}

这个程序要求用户输入两个矩阵的行和列,然后使用嵌套循环将两个矩阵相乘,并将结果存储到一个新的二维数组中。

结构体

定义

结构体是一种用户定义的数据类型,包含多个有关联的数据项。一个结构体可以包括不同类型的数据项。

定义示例

以下是一个用于表示学生的结构体定义示例:

struct student {
    char name[50];
    int id;
    float marks;
} s;

这个结构体包含三个数据项: name , id和 marks。

示例2:学生信息管理

接下来的示例程序使用结构体来管理学生的信息。该程序要求用户输入学生的姓名,学号和成绩,然后将这些信息存储到一个结构体数组中,并按照学生的成绩从高到低对学生进行排序。最后,程序将按照顺序显示学生的姓名,学号和成绩。

#include <stdio.h>

struct student {
    char name[50];
    int id;
    float marks;
} s[10];

int main()
{
    int n, i, j;
    struct student temp;
    printf("Enter the number of students: \n");
    scanf("%d", &n);
    //Taking input for students
    for (i = 0; i < n; i++)
    {
        printf("\nEnter the details of student %d: \n", i + 1);
        printf("Enter name: ");
        scanf("%s", s[i].name);
        printf("Enter ID: ");
        scanf("%d", &s[i].id);
        printf("Enter marks: ");
        scanf("%f", &s[i].marks);
    }
    //Sorting students based on marks
    for (i = 0; i < n; i++)
    {
        for (j = i + 1; j < n; j++)
        {
            if (s[i].marks < s[j].marks)
            {
                temp = s[i];
                s[i] = s[j];
                s[j] = temp;
            }
        }
    }
    //Displaying students
    printf("\nDetails of students (sorted by marks):\n\n");
    for (i = 0; i < n; i++)
    {
        printf("Student %d:\n", i + 1);
        printf("Name: %s\n", s[i].name);
        printf("ID: %d\n", s[i].id);
        printf("Marks: %.2f\n", s[i].marks);
    }
    return 0;
}

这个程序要求用户输入学生的姓名、学号和成绩,并且通过嵌套循环将学生数据存储到结构体数组中。然后,程序使用嵌套循环将数组中的学生数据按照学生的成绩从高到低排序,并将结果显示出来。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言新手练习之多维数组、结构体及函数 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • mapwingis介绍

    以下是“MapWinGIS介绍的完整攻略”的标准markdown格式文本,其中包含了两个示例说明: MapWinGIS介绍 MapWinGIS是一个开源的GIS件,可以用于在Windows平台上开发GIS应用程序。本文将介绍MapWinGIS的基本概念和使用方法,包括如添加图层、如何进行地图操作等。 1. 添加图层 在MapWinGIS中,可以通过添加图层来…

    other 2023年5月10日
    00
  • Vue2.x通用编辑组件的封装及应用详解

    下面我将详细讲解“Vue2.x通用编辑组件的封装及应用详解”的完整攻略。 标题 “Vue2.x通用编辑组件的封装及应用详解” 前言 在Vue开发中,我们经常需要进行表单编辑,并且需要考虑到表单校验、数据双向绑定等问题。为了提高开发效率和代码复用率,我们可以封装一个通用的编辑组件。本文将详细讲解如何封装和应用这样一个通用组件。 正文 1. 组件封装 1.1 概…

    other 2023年6月25日
    00
  • 命令行方式实现MAC与IP地址绑定

    命令行方式实现MAC与IP地址绑定攻略 在命令行中,可以使用arp命令来实现MAC与IP地址的绑定。下面是详细的攻略: 打开命令行终端:在操作系统中找到命令行终端应用程序,并打开它。 查看当前网络接口信息:输入以下命令来查看当前网络接口的信息: shell ifconfig 这将显示当前系统的网络接口列表,包括每个接口的名称(如eth0、wlan0等)、MA…

    other 2023年7月30日
    00
  • 电脑如何查看上次重启时间? windows查看上一次开机时间的三种方法

    下面是电脑如何查看上次重启时间以及Windows查看上一次开机时间的三种方法的攻略: 1. 使用命令行方式查看上次重启时间 使用命令行方式是最为实用和便捷的查看电脑上次重启时间的方法,该方法适用于所有Windows系统。具体操作步骤如下: 步骤1: 打开命令行窗口。点击开始菜单,输入“CMD”或者“命令行”等关键字,选择“命令提示符”打开。 步骤2: 输入命…

    other 2023年6月26日
    00
  • Python 中enum的使用方法总结

    Python 中enum的使用方法总结 1. 引言 在Python中,enum是一个非常有用的模块,它允许我们定义一组具有特定值的常量。使用enum可以提高代码的可读性和可维护性。本文将详细介绍enum的使用方法,并提供两个示例说明。 2. 定义枚举 要使用enum,首先需要导入Enum类。然后,可以通过继承Enum类来定义自己的枚举类型。下面是一个示例: …

    other 2023年8月18日
    00
  • openbabel的安装与使用

    什么是OpenBabel? OpenBabel是一种化学信息学工具,用于处理化学结构数据。它可以读取、写入和转换多种化学文件格式,如SMILES、MOLPDB等。OpenBabel还提供了一些学计算功能,如分子对齐、药物性质预测等。 OpenBabel的安装 OpenBabel可以在Windows、Linux和Mac OS X等操作系统上安装。以下是在Ubu…

    other 2023年5月7日
    00
  • 详情介绍C++之命名空间

    详情介绍C++之命名空间 命名空间是C++中一种用于组织代码的机制。它允许我们将相关的函数、类、变量等放置在一个逻辑上的容器中,以避免命名冲突和提高代码的可读性。本文将详细介绍C++中命名空间的使用方法和示例。 命名空间的定义和使用 在C++中,我们可以使用namespace关键字来定义一个命名空间。命名空间的定义通常放在头文件中,以便在多个源文件中共享。 …

    other 2023年8月8日
    00
  • js判断主流浏览器类型和版本号的简单实现代码

    当需要在JavaScript中判断主流浏览器类型和版本号时,可以使用navigator.userAgent属性来获取用户代理字符串,然后通过正则表达式匹配来判断浏览器类型和版本号。下面是一个简单的实现代码: // 获取用户代理字符串 var userAgent = navigator.userAgent; // 判断浏览器类型和版本号 if (/Firefo…

    other 2023年8月2日
    00
合作推广
合作推广
分享本页
返回顶部