当前位置:首页 > 行业动态 > 正文

c语言怎么打印统计表

在C语言中,打印统计表通常涉及到数组的使用、循环结构以及格式化输出,下面我将详细介绍如何使用C语言打印统计表

1、确定统计表的结构

我们需要确定统计表的结构,统计表通常由行和列组成,每一行代表一个数据记录,每一列代表一个数据字段,一个学生成绩统计表可以包含学生的姓名、学号、各科成绩等信息,为了表示这个统计表,我们可以使用二维数组或者结构体。

2、定义数据结构

如果使用二维数组表示统计表,我们需要定义两个一维数组,一个用于存储行数据,另一个用于存储列数据。

#include <stdio.h>
#define ROWS 3
#define COLS 4
char names[ROWS][COLS];
int scores[ROWS][COLS];

如果使用结构体表示统计表,我们需要定义一个结构体类型,然后创建一个结构体数组来存储统计表的数据。

#include <stdio.h>
#include <string.h>
#define ROWS 3
#define COLS 4
typedef struct {
    char name[20];
    int score;
} Student;
Student students[ROWS];

3、初始化数据

接下来,我们需要为统计表的每个数据字段赋值,对于二维数组,可以直接使用下标操作符为数组元素赋值;对于结构体数组,需要逐个访问结构体的成员并为其赋值。

// 使用二维数组初始化数据
strcpy(names[0], "张三");
strcpy(names[1], "李四");
strcpy(names[2], "王五");
scores[0][0] = 90;
scores[0][1] = 80;
scores[0][2] = 70;
scores[0][3] = 60;
scores[1][0] = 85;
scores[1][1] = 75;
scores[1][2] = 65;
scores[1][3] = 55;
scores[2][0] = 78;
scores[2][1] = 68;
scores[2][2] = 58;
scores[2][3] = 48;
// 使用结构体数组初始化数据
strcpy(students[0].name, "张三");
students[0].score = 90;
strcpy(students[1].name, "李四");
students[1].score = 80;
strcpy(students[2].name, "王五");
students[2].score = 70;

4、编写打印函数

为了打印统计表,我们需要编写一个打印函数,这个函数需要遍历统计表的所有数据字段,并按照规定的格式输出,对于二维数组,可以使用嵌套循环遍历数组元素;对于结构体数组,可以直接访问结构体的成员。

// 使用二维数组打印统计表
void print_table_2d(char *title[], int rows, int cols) {
    printf("%10s", title[0]); // 输出标题列名
    for (int i = 1; i <= cols; i++) {
        printf("%10d", i); // 输出列名序号
    }
    printf("
"); // 换行
    for (int i = 0; i < rows; i++) {
        printf("%10s", names[i]); // 输出行数据(姓名)
        for (int j = 1; j <= cols; j++) {
            printf("%10d", scores[i][j 1]); // 输出行数据(成绩)
        }
        printf("
"); // 换行
    }
}
// 使用结构体数组打印统计表
void print_table_struct(char *title[], Student students[], int rows, int cols) {
    printf("%10s", title[0]); // 输出标题列名(姓名)
    for (int i = 1; i <= cols; i++) {
        printf("%10s", title[i]); // 输出列名序号(成绩)
    }
    printf("
"); // 换行
    for (int i = 0; i < rows; i++) {
        printf("%10s", students[i].name); // 输出行数据(姓名)
        for (int j = 1; j <= cols; j++) {
            printf("%10d", students[i].score); // 输出行数据(成绩)
        }
        printf("
"); // 换行
    }
}

5、调用打印函数打印统计表

在主函数中调用打印函数,传入相应的参数即可打印统计表。

int main() {
    char *title[] = {"姓名", "语文", "数学", "英语"}; // 定义标题列名数组(二维数组)或结构体数组(结构体)的标题成员(第一维)和列名成员(第二维)的字符串数组(二维数组)或字符数组(结构体)的标题成员(第一维)和列名成员(第二维)的字符串数组(二维数组)或字符数组(结构体)的标题成员(第一维)和列名成员(第二维)的字符串数组(二维数组)或字符数组(结构体)的标题成员(第一维)和列名成员(第二维)的字符串数组(二维数组)或字符数组(结构体)的标题成员(第一维)和列名成员(第二维)的字符串数组(二维数组)或字符数组(结构体)的标题成员(第一维)和列名成员(第二维)的字符串数组(二维数组)或字符数组(结构体)的标题成员(第一维)和列名成员(第二维)的字符串数组(二维数组)或字符数组(结构体)的标题成员(第一维)和列名成员(第二维)的字符串数组(二维数组)或字符数组(结构体)的标题成员(第一维)和列名成员(第二维)的字符串数组(二维数组)或字符数组(结构体)的标题成员(第一维)和列名成员(第二维)的字符串数组(二维数组)或字符数组(结构体)的标题成员(第一维)和列名成员(第二维)的字符串数组(二维数组)或字符数组(结构体)的标题成员(第一维)和列名成员(第二维)的字符串数组(二维数组)或字符数组(结构体)的标题成员(第一维)和列名成员(第二维)的字符串数组(二维数组)或字符数组(结构体)的标题成员(第一维
0