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技术站