请问这个应该怎么改?需要修改编写下面的那个代码以包含struct 和 typedef 定义。然后修改函数原型以使用此结构数据类型:void incrementAges(StudentInfo si); void printStudents(StudentInfo si)。第一张是原文,第二张是机翻,希望可以帮我编程1下。蟹蟹。
#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++;
}
}
#include <stdio.h>
#include <stdlib.h>
struct student {
char *studentNames;
int size;
int *studentAges;
};
typedef struct student StudentInfo;
void incrementAges(StudentInfo *si);
void printStudents(StudentInfo *si);
void addStudentInfo(StudentInfo &si,char *name,int age);
int main(int argc, char* argv[]) {
StudentInfo info[6];
addStudentInfo(info[0],"Frank",18);
addStudentInfo(info[1],"Moni",19);
addStudentInfo(info[2],"Jimmy",20);
addStudentInfo(info[3],"Chen",19);
addStudentInfo(info[4],"Navim",18);
addStudentInfo(info[5],"Faraq",19);
// Increment their ages because we want to increase their age
incrementAges(info);
printStudents(info);
for(i=0;i<6;i++)
{
free(info[i].studentNames);
free(info[i].studentAges);
}
return 0;
}
void incrementAges(StudentInfo *si) {
for(int i=0;i<6;i++)
si->studentAges++;
}
void printStudents(StudentInfo *si) {
for(int i=0;i<6;i++)
{
printf("Student %s is of age %d\n", si->studentNames,si->studentAges);
}
}
void addStudentInfo(StudentInfo &si,char *name,int age)
{
si.studentAges = (int*)malloc(sizeof(int));
*si.studentAges = age;
si.size = 0;
for(int i=0;name[i]!=0;i++)
si.size++;
si.studentNames = (char*)malloc(sizeof(char)*(si.size+1));
for(int i=0;name[i]!=0;i++)
si.studentNames[i] = name[i];
si.studentNames[i] = 0;
}