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日

相关文章

  • 遍历json数据的几种方式。

    遍历json数据的几种方式 在项目开发中,经常需要解析json数据,但在绝大多数情况下,我们并不知道需要解析的json数据的结构及其格式。因此,我们需要一些方法来遍历json数据,以便于我们能够了解其中的数据以及结构。 以下是几种遍历json数据的方式: 1. for…in 循环 我们可以通过 for…in 循环来遍历json对象中的属性和值。这是一…

    其他 2023年3月29日
    00
  • vivoPad2怎么退出开发者模式 vivoPad2关闭开发者模式教程

    vivoPad2是vivo品牌的一款平板电脑,在使用vivoPad2开发者模式时,需要谨慎操作。如果要退出开发者模式或关闭开发者模式,可以按照以下步骤进行。 退出开发者模式 打开设备的“设置”应用,滑动到底部,找到“开发者选项”。 点击“开发者选项”,滑动到最下面,找到“关闭开发者选项”。 点击“关闭开发者选项”。 系统会提示你“关闭开发者选项”,点击“确定…

    other 2023年6月26日
    00
  • SpringBoot 插件化开发模式详细总结

    SpringBoot 插件化开发模式详细总结 1. 什么是插件化开发模式 插件化开发模式是一种将应用程序的功能模块化的开发方式。在SpringBoot中,插件化开发模式允许将应用程序的特定功能封装为插件,然后通过添加或删除插件,动态改变应用程序的功能。 2. 插件化开发模式的优势 可扩展性:通过插件化开发模式,应用程序可以轻松地扩展、添加或删除功能,而不必修…

    other 2023年6月28日
    00
  • iOS8.2 beta5固件下载 iOS8.2 beta5官方固件下载地址汇总(需开发者账号)

    首先,什么是iOS 8.2 beta5固件? iOS 8.2 beta5固件是苹果公司针对iOS 8.2系统进行测试和开发的版本。它包含了一些新特性和功能,以及一些修复和改进,但这并不是最终版本,所以需要开发者账号才能下载安装。如果你是开发者,那么就可以通过以下步骤来下载和安装iOS 8.2 beta5固件。 开发者账号申请 在下载iOS 8.2 beta5…

    other 2023年6月26日
    00
  • 代码审计–12–竞争条件漏洞

    代码审计–12–竞争条件漏洞 1. 竞争条件漏洞的定义 竞争条件漏洞是指在多线程或多进程环境中,由于资源争导致程序出现不可测的行为。例如,当多个线程或进程同时访问同一个文件时,可能会导致文件内容破坏或读取到不正确的数据。竞争条件漏洞通常是由于程序没有正确地同步访问共享资源而导致的。 2. 示例说明 示例1 假设我们有一个程序,用于计算文件的MD5值。以下…

    other 2023年5月8日
    00
  • xml验证器

    XML验证器 XML (可扩展标记语言) 是一种广泛使用的标记语言,用于在Web应用程序和其他数据交换应用程序之间共享数据。但是,手动验证XML文档是否符合特定的格式可能是非常耗时和困难的。 为了解决这个问题,XML验证器被开发出来,可以自动检测XML文档中的错误,并快速定位并修复问题。在本文中,我们将介绍XML验证器的一些基本知识和如何使用它来验证XML文…

    其他 2023年3月28日
    00
  • android利用websocket协议与服务器通信

    下面是“Android利用WebSocket协议与服务器通信”的完整攻略: 1. WebSocket协议简介 WebSocket协议是一种在web浏览器和服务器之间进行全双工通信的标准协议,它通过HTTP/1.1协议中的升级头(Upgrade Header)来建立连接,之后客户端和服务器端就可以进行双向的数据传输。相较于HTTP协议,WebSocket协议具…

    other 2023年6月27日
    00
  • cloverconfigurator使用教程显卡

    当然,我很乐意为您提供有关“Clover Configurator使用教程显卡”的完整攻略。以下是详细的步骤和两个示例: 1. 什么是Clover Configurator? Clover Configurator是一款用于配置Hackintosh引导程序Clover的工具。它可以帮助用户轻松地配置Clover引导程序,以便在Hackintosh上安装mac…

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