求解(指针没学明白)

 

 

如果解决你的问题,请点个采纳!

#include <iostream>

using namespace std;

#define STU_SIZE	5


struct Student {
	int num;
	char name[10];
	float score[3];
};


void avr_max(Student *stu);
void print(Student *stu);


int main() {
	Student stu[STU_SIZE];

	for (int i = 0; i < STU_SIZE; i++) {
		cout << "请输入第" << i + 1 << "名学生的号码:" << endl;
		cin >> stu[i].num;

		cout << "请输入第" << i + 1 << "名学生的名字:" << endl;
		cin >> stu[i].name;

		cout << "请输入第" << i + 1 << "名学生的三科分数:" << endl;
		for (int k = 0; k < 3; k++) {
			cin >> stu[i].score[k];
		}
	}


	avr_max(stu);
	print(stu);

	return 0;
}


void avr_max(Student *stu) {
	double avg[STU_SIZE] = { 0 };

	// 计算平均分,并保存再avg数组中
	for (int i = 0; i < STU_SIZE; i++) {
		avg[i] = 0.0;
		for (int j = 0; j < 3; j++) {
			avg[i] += stu[i].score[j];
		}

		avg[i] /= 3;	// 计算平均分

	}

	int index = 0;
	double max = avg[0];
	for (int k = 1; k < STU_SIZE; k++) {
		if (max < avg[k]) {
			max = avg[k];
			index = k;
		}
	}

	cout << STU_SIZE << "名学生平均分最高的是:" << endl;
	cout << "编号:" << stu[index].num << "\t" << "姓名:" << stu[index].name << "\t" << "平均分成绩:" << avg[index] << endl;
}

void print(Student *stu) {

	cout << endl <<  STU_SIZE << "名学生的信息:" << endl;
	
	for (int i = 0; i < STU_SIZE;  i++) {
		cout << "编号:" << stu[i].num << "\t" << "姓名:" << stu[i].name << "\t";
		
		for (int j = 0; j < 3; j++) {
			cout << "第" << j + 1 << "科成绩:" << stu[i].score[j] << "\t";
		}

		cout << endl;
	}
}

 

 

先定义结构体


#define N 2
struct student{
	int num;
	char name[20];
	int score[3];
}stud[N],t;

 

如有帮助,望采纳。点击我回答右上角【采纳】按钮。

#include <stdio.h>
struct student
{
    int num;
    char name[10];
    float score[3];
} stu[5];
void print(struct student s[]);
int main()
{
    int i, j;
    for (i=0; i<5; i++){
        printf("Please enter No.%d student num, name, score: ", i+1);
        scanf("%d %s", &stu[i].num, stu[i].name);
        for (j=0; j<3; scanf("%f", &stu[i].score[j++]));
    }
    print(stu);
    return 0;
}
void print(struct student s[])
{
    int i, j;
    for (i=0; i<5; printf("\n"), i++){
        printf("%d %-10s ", s[i].num, s[i].name);
        for (j=0; j<3; printf("%.2f ", s[i].score[j++]));
    }
}

 

如有帮助,望采纳。点击我回答右上角【采纳】按钮。

#include <stdio.h>
#include <stdlib.h>
struct Student{
    int num;
    char name[20];
    float score[3];
};
void input(Student *st);
void print(Student *st);
int main()
{
    Student *stu=(Student*)malloc(5*sizeof(Student));
    input(stu);
    print(stu);
    system("pause");
    return 0;
}
void input(Student *st)
{
    int i, j;
    Student *p;
    for (p=st, i=0; p<st+5; p++, i++){
        printf("Please enter No.%d student info: ", i+1);
        scanf("%d %s", &p->num, p->name);
        for (j=0; j<3; scanf("%f", &p->score[j++]));
    }
}
void print(Student *st)
{
    int i;
    Student *p;
    for (p=st, printf("Result:\n"); p<st+5; p++){
        printf("%d %7s ", p->num, p->name);
        for (i=0; i<3; printf("%.2f ", p->score[i++]));
        printf("\n");
    }
}