20201216-成信大-C语言程序设计-20201学期《C语言程序设计B》平时自主学习-结构体部分程序设计题

文章目录

20201216-成信大-C语言程序设计-20201学期《C语言程序设计B》平时自主学习-结构体部分程序设计题-补充

P782

20201216-成信大-C语言程序设计-20201学期《C语言程序设计B》平时自主学习-结构体部分程序设计题

修改前的代码:

#include <stdio.h>

/* User Code Begin(考生可在本行后添加代码,例如全局变量的定义、函数原型声明等,行数不限) */



/* User Code End(考生添加代码结束) */

int main(void)
{
	int high;  /* high记录平均分最高的学生的序号,具体使用参考后面的代码 */

	/* User Code Begin(考生可在本行后添加代码,行数不限) */



	/* User Code End(考生添加代码结束) */

	printf("\nThe Highest is %s(%d)\nscore1=%.2f  score2=%.2f  score3=%.2f  score4=%.2f  aver=%.2f\n",
		myClass[high].name, myClass[high].num,
		myClass[high].score1, myClass[high].score2, myClass[high].score3, myClass[high].score4, myClass[high].aver);

	return 0;
}

/* User Code Begin(考生在此后根据设计需要完成程序的其它部分,行数不限) */

修改后提交的代码:

#include <stdio.h>

/* User Code Begin(考生可在本行后添加代码,例如全局变量的定义、函数原型声明等,行数不限) */
// 学号、姓名(最长19字节)、四门课的成绩 平均成绩
//      myClass[high].name, myClass[high].num,
// 		myClass[high].score1, myClass[high].score2, myClass[high].score3, myClass[high].score4, myClass[high].aver
typedef struct student
{
    int num;
    char name[20];
    float score1;
    float score2;
    float score3;
    float score4;
    float aver;
} SCORE;

void inputStudent(SCORE *pStu, int n);
int getHighAverStudent(SCORE *pStu, int n);

/* User Code End(考生添加代码结束) */

int main(void)
{
	int high;  /* high记录平均分最高的学生的序号,具体使用参考后面的代码 */

	/* User Code Begin(考生可在本行后添加代码,行数不限) */
    SCORE myClass[5];
    inputStudent(myClass, 5);
    high = getHighAverStudent(myClass, 5);
    /* User Code End(考生添加代码结束) */

	printf("\nThe Highest is %s(%d)\nscore1=%.2f  score2=%.2f  score3=%.2f  score4=%.2f  aver=%.2f\n",
		myClass[high].name, myClass[high].num,
		myClass[high].score1, myClass[high].score2, myClass[high].score3, myClass[high].score4, myClass[high].aver);

	return 0;
}

/* User Code Begin(考生在此后根据设计需要完成程序的其它部分,行数不限) */
void inputStudent(SCORE *pStu, int n)
{
    int i;
    printf("Please input students  info:Num Name score1 score2 score3 score4\n");
    for ( i = 0; i < n; i++)
    {
        printf("%d:", i + 1);
        scanf("%d %s %f %f %f %f", &pStu[i].num, pStu[i].name,
              &pStu[i].score1, &pStu[i].score2, &pStu[i].score3, &pStu[i].score4);
        pStu[i].aver = (pStu[i].score1 + pStu[i].score2 + pStu[i].score3 + pStu[i].score4) / 4.0f;
    }
}
int getHighAverStudent(SCORE *pStu, int n)
{
    int i, pos = 0;
    for ( i = 0; i < n; i++)
    {
        if (pStu[i].aver>pStu[pos].aver)
        {
            pos = i;
        }        
    }
    return pos;
}

P801

20201216-成信大-C语言程序设计-20201学期《C语言程序设计B》平时自主学习-结构体部分程序设计题

修改前的代码:

#include <stdio.h>

struct student
{
	int  num;
	char name[20];
	float score1, score2, score3;
	float aver;
};

void Input(struct student *pStu, int n);
int Highest(struct student *pStu, int n);

int main(void)
{
	int high;  /* high记录平均分最高的学生的序号,具体使用参考后面的代码 */
	struct student myClass[5];

	/* 本部分代码功能建议:调用相应的函数完成数据输入和统计 */
	/* User Code Begin(Limit: lines<=2, lineLen<=50, 考生可在本行后添加代码、最多2行、行长<=50字符) */


	/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */

	printf("\nThe Highest is %s(%d)\nscore1=%.2f  score2=%.2f  score3=%.2f  aver=%.2f\n",
		myClass[high].name, myClass[high].num,
		myClass[high].score1, myClass[high].score2, myClass[high].score3, myClass[high].aver);

	return 0;
}

/* 输入N个学生的信息并计算平均分 */
void Input(struct student *pStu, int n)
{
	int i;
	struct student tmpStu;

	printf("Please input students  info:Num Name score1 score2 score3\n");
	for (i=0; i<n; i++)
	{
		printf("%d:", i+1);
		scanf("%d%s%f%f%f", &tmpStu.num, tmpStu.name,
			&tmpStu.score1, &tmpStu.score2, &tmpStu.score3);
		pStu[i] = tmpStu;
		pStu[i].aver = (pStu[i].score1 + pStu[i].score2 + pStu[i].score3) / 3.0f;
	}
}

/* 找出并通过函数值返回最高平均分学生的序号 */
int Highest(struct student *pStu, int n)
{
	int i, pos = 0;

	/* User Code Begin(考生可在本行后添加代码,行数不限) */
	

	
	/* User Code End(考生添加代码结束) */

	return pos;
}

修改后提交的代码:

#include <stdio.h>

struct student
{
	int  num;
	char name[20];
	float score1, score2, score3;
	float aver;
};

void Input(struct student *pStu, int n);
int Highest(struct student *pStu, int n);

int main(void)
{
	int high;  /* high记录平均分最高的学生的序号,具体使用参考后面的代码 */
	struct student myClass[5];

	/* 本部分代码功能建议:调用相应的函数完成数据输入和统计 */
	/* User Code Begin(Limit: lines<=2, lineLen<=50, 考生可在本行后添加代码、最多2行、行长<=50字符) */
    Input(myClass, 5);
    high =  Highest(myClass, 5);
    /* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */

	printf("\nThe Highest is %s(%d)\nscore1=%.2f  score2=%.2f  score3=%.2f  aver=%.2f\n",
		myClass[high].name, myClass[high].num,
		myClass[high].score1, myClass[high].score2, myClass[high].score3, myClass[high].aver);

	return 0;
}

/* 输入N个学生的信息并计算平均分 */
void Input(struct student *pStu, int n)
{
	int i;
	struct student tmpStu;

	printf("Please input students  info:Num Name score1 score2 score3\n");
	for (i=0; i<n; i++)
	{
		printf("%d:", i+1);
		scanf("%d%s%f%f%f", &tmpStu.num, tmpStu.name,
			&tmpStu.score1, &tmpStu.score2, &tmpStu.score3);
		pStu[i] = tmpStu;
		pStu[i].aver = (pStu[i].score1 + pStu[i].score2 + pStu[i].score3) / 3.0f;
	}
}

/* 找出并通过函数值返回最高平均分学生的序号 */
int Highest(struct student *pStu, int n)
{
	int i, pos = 0;

	/* User Code Begin(考生可在本行后添加代码,行数不限) */
	for ( i = 0; i < n; i++)
    {
        if (pStu[i].aver > pStu[pos].aver)
        {
            pos = i;
        }        
    }	
	/* User Code End(考生添加代码结束) */

	return pos;
}

P807

20201216-成信大-C语言程序设计-20201学期《C语言程序设计B》平时自主学习-结构体部分程序设计题

修改前的代码:

#include <stdio.h>

/* User Code Begin(考生可在本行后添加代码,定义程序中使用的数据类型SCORE,行数不限) */



/* User Code End(考生添加代码结束) */

void Input(SCORE *pStu, int n);
int Highest(SCORE *pStu, int n);

int main(void)
{
	int high;  /* high记录平均分最高的学生的序号,具体使用参考后面的代码 */
	SCORE myClass[5];

	/* 本部分代码功能建议:调用相应的函数完成数据输入和统计 */
	/* User Code Begin(Limit: lines<=2, lineLen<=50, 考生可在本行后添加代码、最多2行、行长<=50字符) */

	
	/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */

	printf("\nThe Highest is %s(%d)\nscore1=%.2f  score2=%.2f  score3=%.2f  aver=%.2f\n",
		myClass[high].name, myClass[high].num,
		myClass[high].score1, myClass[high].score2, myClass[high].score3, myClass[high].aver);

	return 0;
}

/* 输入N个学生的信息并计算平均分 */
void Input(SCORE *pStu, int n)
{
	int i;
	SCORE tmpStu;

	printf("Please input students  info:Num Name score1 score2 score3\n");
	for (i=0; i<n; i++)
	{
		printf("%d:", i+1);
		scanf("%d%s%f%f%f", &tmpStu.num, tmpStu.name,
			&tmpStu.score1, &tmpStu.score2, &tmpStu.score3);
		pStu[i] = tmpStu;
		pStu[i].aver = (pStu[i].score1 + pStu[i].score2 + pStu[i].score3) / 3.0f;
	}
}

/* 找出并通过函数值返回最高平均分学生的序号 */
int Highest(SCORE *pStu, int n)
{
	int i, pos = 0;

	/* User Code Begin(考生可在本行后添加代码,行数不限) */

	
	
	/* User Code End(考生添加代码结束) */

	return pos;
}

修改后提交的代码:

#include <stdio.h>

/* User Code Begin(考生可在本行后添加代码,定义程序中使用的数据类型SCORE,行数不限) */
typedef struct student
{
    // myClass[high].name, myClass[high].num,
	// myClass[high].score1, myClass[high].score2, myClass[high].score3, myClass[high].aver
    int num;
    char name[20];
    float score1;
    float score2;
    float score3;
    float aver;
} SCORE;

/* User Code End(考生添加代码结束) */

void Input(SCORE *pStu, int n);
int Highest(SCORE *pStu, int n);

int main(void)
{
	int high;  /* high记录平均分最高的学生的序号,具体使用参考后面的代码 */
	SCORE myClass[5];

	/* 本部分代码功能建议:调用相应的函数完成数据输入和统计 */
	/* User Code Begin(Limit: lines<=2, lineLen<=50, 考生可在本行后添加代码、最多2行、行长<=50字符) */
    Input(myClass, 5);
	high = Highest(myClass, 5);
	/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */

	printf("\nThe Highest is %s(%d)\nscore1=%.2f  score2=%.2f  score3=%.2f  aver=%.2f\n",
		myClass[high].name, myClass[high].num,
		myClass[high].score1, myClass[high].score2, myClass[high].score3, myClass[high].aver);

	return 0;
}

/* 输入N个学生的信息并计算平均分 */
void Input(SCORE *pStu, int n)
{
	int i;
	SCORE tmpStu;

	printf("Please input students  info:Num Name score1 score2 score3\n");
	for (i=0; i<n; i++)
	{
		printf("%d:", i+1);
		scanf("%d%s%f%f%f", &tmpStu.num, tmpStu.name,
			&tmpStu.score1, &tmpStu.score2, &tmpStu.score3);
		pStu[i] = tmpStu;
		pStu[i].aver = (pStu[i].score1 + pStu[i].score2 + pStu[i].score3) / 3.0f;
	}
}

/* 找出并通过函数值返回最高平均分学生的序号 */
int Highest(SCORE *pStu, int n)
{
	int i, pos = 0;

	/* User Code Begin(考生可在本行后添加代码,行数不限) */
    for ( i = 0; i < n; i++)
    {
        if (pStu[i].aver>pStu[pos].aver)
        {
            pos = i;
        }        
    }	
	/* User Code End(考生添加代码结束) */

	return pos;
}

P832

20201216-成信大-C语言程序设计-20201学期《C语言程序设计B》平时自主学习-结构体部分程序设计题

修改前的代码:

#include <stdio.h>
#include <string.h>

/* User Code Begin(考生可在本行后添加代码,例如结构体类型的定义、函数原型声明等,行数不限) */








/* User Code End(考生添加代码结束) */

int main(void)
{
	STUD sTranscript[] = { {1001, "张三丰", 69.5, 61.5, 91.5},  {1002, "李云龙", 92.5, 67.5, 81.5}, 
		{1003, "郭 靖",  79.5, 67.5, 86.5 },  {1004, "苗翠花", 83.0, 75.5, 84.0}, 
		{1005, "张无忌", 65.5, 81.5, 71.0} };
	STUD *stu;
	char name[16];
	
	printf("请输入你要查找的学生姓名: ");
	gets(name);

	stu = FindByName(sTranscript, 5, name);  //调用函数查找信息
	if (stu)
	{
		printf("\n查找的学生信息为: ");
		printf("%d %s %.1f %.1f %.1f\n", stu->iNum, stu->cName, stu->fCh, stu->fMath, stu->fEng);
	}
	else
	{
		printf("\n你要查找的学生不存在!\n");
	}

	return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */

修改后提交的代码:

#include <stdio.h>
#include <string.h>

/* User Code Begin(考生可在本行后添加代码,例如结构体类型的定义、函数原型声明等,行数不限) */
typedef struct student      // 定义学生结构体,并给出需要的别名
{
    //%d %s %.1f %.1f %.1f
    //stu->iNum, stu->cName, stu->fCh, stu->fMath, stu->fEng
    int iNum;
    char cName[16];
    float fCh;
    float fMath;
    float fEng;
} STUD;

// 声明功能函数
STUD* FindByName(STUD sTranscript[], int n, char name[]);


/* User Code End(考生添加代码结束) */

int main(void)
{
	STUD sTranscript[] = { {1001, "张三丰", 69.5, 61.5, 91.5},  {1002, "李云龙", 92.5, 67.5, 81.5}, 
		{1003, "郭 靖",  79.5, 67.5, 86.5 },  {1004, "苗翠花", 83.0, 75.5, 84.0}, 
		{1005, "张无忌", 65.5, 81.5, 71.0} };
	STUD *stu;
	char name[16];
	
	printf("请输入你要查找的学生姓名: ");
	gets(name);

	stu = FindByName(sTranscript, 5, name);  //调用函数查找信息
	if (stu)
	{
		printf("\n查找的学生信息为: ");
		printf("%d %s %.1f %.1f %.1f\n", stu->iNum, stu->cName, stu->fCh, stu->fMath, stu->fEng);
	}
	else
	{
		printf("\n你要查找的学生不存在!\n");
	}

	return 0;
}

/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
// 实现功能函数
STUD* FindByName(STUD sTranscript[], int n, char name[])
{
    STUD *stu = NULL;
    int i;
    for ( i = 0; i < n; i++)
    {
        if(strcmp(name,sTranscript[i].cName) == 0)  // 字符串比较,即按姓名查找
        {
            stu = &sTranscript[i];                  // 返回该数组元素的地址,即该学生的地址
            break;
        }
    }
    return stu;
}
上一篇:类和对象—继承—同名成员处理


下一篇:QT如何实现后台运行(即最小化到右下角托盘)