啦啦啦拉拉裤 2021-08-01 11:51 采纳率: 69.1%
浏览 20
已结题

C语言提问 Structs for Students 球忙帮

请问这个应该怎么改?需要修改编写下面的那个代码以包含struct 和 typedef 定义。然后修改函数原型以使用此结构数据类型:void incrementAges(StudentInfo si); void printStudents(StudentInfo si)。第一张是原文,第二张是机翻,希望可以帮我编程1下。蟹蟹。

img

img

#include <stdio.h>
#include <stdlib.h>
 
typedef int age;
typedef char *name;
 
void incrementAges(age *studentAges, int size);
void printStudents(name *studentNames, age *studentAges, int size);
 
int main(int argc, char* argv[]) {
    int size = 6;
    name *studentNames = (name*)malloc(sizeof(name) * size);
    age *studentAges = (age*)malloc(sizeof(age) * size);
 
    studentNames[0] = "Frank";
    studentNames[1] = "Moni";
    studentNames[2] = "Jimmy";
    studentNames[3] = "Chen";
    studentNames[4] = "Navim";
    studentNames[5] = "Faraq";
 
    studentAges[0] = 18;
    studentAges[1] = 19;
    studentAges[2] = 20;
    studentAges[3] = 19;
    studentAges[4] = 18;
    studentAges[5] = 19;
 
    // Increment their ages because we want to increase their age
    incrementAges(studentAges, size);
    printStudents(studentNames, studentAges, size);
 
    free(studentNames);
    free(studentAges);
    studentNames = NULL;
    studentAges = NULL;
 
    return 0;
}
 
void incrementAges(age *studentAges, int size) {
    int i = 0;
    while (i < size) {
        studentAges[i] = studentAges[i] + 1;
        i++;
    }
}
 
void printStudents(name *studentNames, age *studentAges, int size) {
    int i = 0;
    while (i < size) {
        printf("Student %s is of age %d\n", studentNames[i], studentAges[i]);
        i++;
    }
}


  • 写回答

2条回答 默认 最新

  • 浪客 2021-08-01 12:56
    关注
    #include <stdio.h>
    #include <stdlib.h>
    
    typedef int age;
    typedef char *name;
    
    struct studentInfo
    {
        age *studentAges;
        name *studentNames;
        int size;
    };
    typedef struct studentInfo StudentInfo;
    
    //void incrementAges(age *studentAges, int size);
    //void printStudents(name *studentNames, age *studentAges, int size);
    void incrementAges(StudentInfo si);
    void printStudents(StudentInfo si);
    
    int main(int argc, char *argv[])
    {
        int size = 6;
        name *studentNames = (name *)malloc(sizeof(name) * size);
        age *studentAges = (age *)malloc(sizeof(age) * size);
    
        studentNames[0] = "Frank";
        studentNames[1] = "Moni";
        studentNames[2] = "Jimmy";
        studentNames[3] = "Chen";
        studentNames[4] = "Navim";
        studentNames[5] = "Faraq";
    
        studentAges[0] = 18;
        studentAges[1] = 19;
        studentAges[2] = 20;
        studentAges[3] = 19;
        studentAges[4] = 18;
        studentAges[5] = 19;
    
        StudentInfo stu;
        stu.studentNames = studentNames;
        stu.studentAges = studentAges;
        stu.size = size;
    
        // Increment their ages because we want to increase their age
        //incrementAges(studentAges, size);
        //printStudents(studentNames, studentAges, size);
        incrementAges(stu);
        printStudents(stu);
    
    
        free(studentNames);
        free(studentAges);
        studentNames = NULL;
        studentAges = NULL;
    
        return 0;
    
    }
    
    void incrementAges(StudentInfo si)
    {
        for(int i = 0; i < si.size; i++)
            si.studentAges[i] += 1;
    
    }
    void printStudents(StudentInfo si)
    {
        for(int i = 0; i < si.size; i++)
            printf("Student %s is of age %d\n", si.studentNames[i], si.studentAges[i]);
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月9日
  • 已采纳回答 8月1日
  • 创建了问题 8月1日

悬赏问题

  • ¥15 echarts动画效果失效的问题。官网下载的例子。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加