7-1 案例5-5:定义4×3的二维数组存入每月的天数,以每行一个季度的方式输出,用C语言
时间: 2024-10-28 21:15:42 浏览: 9
利用数组访问二维数组定义一个5×5二维数组,用来存放整型数据
在C语言中,我们可以使用结构体和动态内存分配来创建一个4x3的二维数组来存储每个月的天数,并按照每行代表一个季度的方式进行输出。假设我们有四个季度,每个季度包含三个月。
首先,定义一个结构体来表示月份及其对应的天数:
```c
typedef struct {
char month[10];
int days;
} MonthData;
```
然后,我们需要动态分配空间来存放数据,因为数组大小是固定的,所以我们需要预先知道总共有多少个月的数据:
```c
int totalMonths = 4 * 3; // 四个季度,每个季度三个月
MonthData* monthsArray = (MonthData*)malloc(totalMonths * sizeof(MonthData));
```
接着,初始化每个月的数据并存入数组,这里假设每个季度的第一个月为Q1,第二个月为Q2,第三个月为Q3:
```c
for (int i = 0; i < totalMonths; i++) {
switch (i % 3) {
case 0:
strcpy(monthsArray[i].month, "Q1"); // 第一个月为第一季度
monthsArray[i].days = 31; // 例如一月31天
break;
case 1:
strcpy(monthsArray[i].month, "Q2"); // 第二个月为第二季度
monthsArray[i].days = 30; // 例如四月30天(简化示例)
break;
case 2:
strcpy(monthsArray[i].month, "Q3"); // 第三个月为第三季度
monthsArray[i].days = 31; // 例如七月31天
break;
default:
// 避免数组越界,此处可以设置默认值或抛出异常
break;
}
}
```
最后,遍历数组按季度打印数据:
```c
for (int q = 0; q <= 3; q++) {
for (int m = q * 3; m < q * 3 + 3 && m < totalMonths; m++) {
printf("%s: %d\n", monthsArray[m].month, monthsArray[m].days);
}
printf("\n");
}
```
记得在程序结束时释放内存:
```c
free(monthsArray);
```
阅读全文