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

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日

相关文章

  • MySQL之my.cnf配置文件图文详解

    MySQL的my.cnf配置文件是MySQL服务器常用的配置文件,用于配置MySQL的各种参数和选项。正确地设置和优化my.cnf配置文件,可以极大地提高MySQL数据库的性能和稳定性。下面是my.cnf配置文件的详细图文攻略。 1. 找到my.cnf配置文件 my.cnf配置文件通常位于MySQL服务器的/etc/mysql/my.cnf或/etc/my.…

    other 2023年6月25日
    00
  • JavaScript面向对象设计二 构造函数模式

    JavaScript 面向对象设计二 构造函数模式 构造函数和普通函数的区别 在JavaScript中,构造函数和普通函数的区别在于函数的调用方式不同。 普通函数使用 function 声明,调用方式是 函数名() 。 而构造函数使用 function 声明,调用方式是使用 new 操作符来调用。 构造函数模式的基本使用方法 构造函数通常用来创建一个对象,并…

    other 2023年6月26日
    00
  • 加载 Javascript 最佳实践

    当我们在网站中引用 JavaScript 文件时,要注意一些最佳实践,以确保网站加载速度快,浏览器兼容性好,以及通用性强。下面是“加载 Javascript 最佳实践”的完整攻略: 1. 将 JavaScript 文件置于 body 末尾 将所有 <script> 标签放到 </body> 标签之前,而不是把它们放在页面的头部。这是因…

    other 2023年6月25日
    00
  • esri和arcgis

    以下是详细讲解“Esri和ArcGIS的完整攻略”的标准Markdown格式文本: Esri和ArcGIS的完整攻略 Esri是一家专门从事地理信息系统(GIS)软件开发的公司,而ArcGIS是Esri公司开发的一套GIS软件。本文将介绍Esri和ArcGIS的完整攻略,包括Esri和ArcGIS的基本概念、Esri和ArcGIS应用场景和两个示例说明。 1…

    other 2023年5月9日
    00
  • Win10创意者秋季版16299.98累积更新补丁KB4051963(附更新修复内容以及下载地址)

    Win10创意者秋季版16299.98累积更新补丁KB4051963攻略 更新修复内容 修复了一个安全漏洞,该漏洞可能导致远程执行代码攻击。 修复了一个导致系统崩溃的问题,该问题在某些情况下会发生。 优化了系统性能,提高了系统的稳定性。 下载地址 你可以从以下位置下载Win10创意者秋季版16299.98累积更新补丁KB4051963: Microsoft官…

    other 2023年8月3日
    00
  • SpringBoot之如何指定配置文件启动

    首先我们需要知道,Spring Boot默认的配置文件名为application.properties或application.yaml,位于classpath:/下。 如果有需要,我们可以通过指定配置文件的方式来启动Spring Boot应用,具体方法如下: 1.指定单个配置文件 通过添加”–spring.config.name”选项和”–spring…

    other 2023年6月25日
    00
  • php进程通信之共享内存详细讲解

    PHP进程通信之共享内存详细讲解 什么是共享内存 共享内存是一种进程间通信的机制,它允许多个进程访问同一块内存区域,从而实现数据的共享。在PHP中,我们可以使用共享内存来实现进程间的数据交换和共享。 共享内存的基本原理 共享内存的基本原理是将一块内存区域映射到多个进程的地址空间中,这样多个进程就可以直接读写这块内存区域,实现数据的共享。共享内存通常由操作系统…

    other 2023年8月2日
    00
  • autoit自定义函数

    AutoIt是一个Windows平台上的编程语言,它可以用来简化Windows的GUI操作,可以完成简单或复杂任务的自动化。AutoIt的自定义函数是一种用来封装和重用代码的方法。在本文中,我们将详细介绍如何创建自定义函数。 创建自定义函数 要创建一个自定义函数,需要使用 AutoIt 的 Func 关键字。Func 关键字后面跟着自定义函数的名称。在函数名…

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