20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises32

20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises32

题型分布

在这里插入图片描述

程序改错与填空

D16

程序D16.c的功能是worker2的信息使用结构体存储,从键盘读入其各项信息并显示。

原题:

#include<stdio.h>

int main(void)
{
    
    
        struct WKER
        {
    
    
                long ID;
                long int num;
                char name[20];
                char sex;
        /*********Found************/
        } ;

        worker2.ID = 1L;
        /*********Found************/
        scanf("%s %s %s", &worker2.num, worker2.name, &worker2.sex);
        /*********Found************/
        printf("worker's info: num=%s name=%s sex=%s\n",
                        worker2.num, worker2.name, worker2.sex);

	return 0;
}

改错后:

#include<stdio.h>

int main(void)
{
    
    
        struct WKER
        {
    
    
                long ID;
                long int num;
                char name[20];
                char sex;
        /*********Found************/
        } worker2;

        worker2.ID = 1L;
        /*********Found************/
        scanf("%ld %s %c", &worker2.num, worker2.name, &worker2.sex);
        /*********Found************/
        printf("worker's info: num=%ld name=%s sex=%c\n",
                        worker2.num, worker2.name, worker2.sex);

	return 0;
}

D1038

程序D1038.c的功能是输出结构体中的学生信息。

原题:

#include<stdio.h>

int main(void)
{
    
    
	typedef struct {
    
    
		int    num;
   		char   name[20];
   		char   sex[10];
   		int    age;   		
	} STU;

	/*********Found************/
	struct STU stu1 = {
    
    1, "marry", "boy", 18};

	printf("number is %d, name is %s, sex is %s, age is %d",stu1.num,stu1.name,stu1.sex,stu1.age);

	return 0;
}

改错后:

#include<stdio.h>

int main(void)
{
    
    
	typedef struct {
    
    
		int    num;
   		char   name[20];
   		char   sex[10];
   		int    age;   		
	} STU;

	/*********Found************/
	STU stu1 = {
    
    1, "marry", "boy", 18};

	printf("number is %d, name is %s, sex is %s, age is %d",stu1.num,stu1.name,stu1.sex,stu1.age);

	return 0;
}

D1045

程序D1045.c的功能是:有三个学生的信息(包括学号和成绩)保存在主函数的结构体中,主函数调用函数FindMaxScore以找出多个学生中成绩最大者的下标。
原题:
​```c
#include <stdio.h>

struct Student
{
	char No[11];
	int Score;
};

int FindMaxScore(struct Student stu[], int n);

int main(void)
{
	struct Student stus[3] = {
   
   {"2008030201", 89}, {"2008030202", 92}, {"2008030203", 78}};
	int k;
	
	k = FindMaxScore(stus, 3);
	printf("成绩最高的学生信息是:\n");
	printf("学号\t\t成绩\n");
	printf("%s\t%d\n", stus[k].No, stus[k].Score);
	
	return 0;
}

/*********Found************/
int FindMaxScore(______________________)
{
	int i, max, k=0;
	
	max = stu[k].Score;	
	for (i=1; i<n; i++)
	{
		/*********Found************/
		if (__________________) 
		{
			k = i;
			max = stu[k].Score;
		}
	}

	return k;
}

改错后:

#include <stdio.h>

struct Student
{
    
    
	char No[11];
	int Score;
};

int FindMaxScore(struct Student stu[], int n);

int main(void)
{
    
    
	struct Student stus[3] = {
    
    {
    
    "2008030201", 89}, {
    
    "2008030202", 92}, {
    
    "2008030203", 78}};
	int k;
	
	k = FindMaxScore(stus, 3);
	printf("成绩最高的学生信息是:\n");
	printf("学号\t\t成绩\n");
	printf("%s\t%d\n", stus[k].No, stus[k].Score);
	
	return 0;
}

/*********Found************/
int FindMaxScore(struct Student stu[], int n)
{
    
    
	int i, max, k=0;
	
	max = stu[k].Score;	
	for (i=1; i<n; i++)
	{
    
    
		/*********Found************/
		if (max<stu[i].Score) 
		{
    
    
			k = i;
			max = stu[k].Score;
		}
	}

	return k;
}

程序设计

P763

在这里插入图片描述

改错前的代码:

#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  aver=%.2f\n",
		myClass[high].name, myClass[high].num,
		myClass[high].score1, myClass[high].score2, myClass[high].score3, myClass[high].aver);

	return 0;
}

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

修改后的代码:

#include <stdio.h>

/* User Code Begin(考生可在本行后添加代码,例如全局变量的定义、函数原型声明等,行数不限) */
/*
有五个学生,每个学生的数据包括学号、姓名(最长19字节)、三门课的成绩,从键盘输入五个学生的数据,并计算每个学生的平均成绩,
最后显示最高平均分的学生的信息(包括学号,姓名,三门课的成绩,平均分数)。要求用结构体编程,变量数据类型的选择应适当,在保证
满足设计要求精度的情况下,养成不浪费内存空间和计算时间的好习惯。
编程可用素材:
printf("Please input students  info:Num Name score1 score2 score3\n");
*/
#include <string.h>
#define N 5

// 学号,姓名,三门课的成绩,平均分数
// 结构体
typedef struct stuInfo
{
    
    
    int num;
    char name[19];
    float score1;
    float score2;
    float score3;
    float aver;
} STUINFO;

// 从键盘输入五个学生的数据
void inputStuInfo(STUINFO *stu, int n);
int getAverID(STUINFO *stu, int n);
void outputStuInfo(STUINFO *stu, int n);
/* User Code End(考生添加代码结束) */

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

	/* User Code Begin(考生可在本行后添加代码,行数不限) */
    STUINFO myClass[N];
    inputStuInfo(myClass, N);
    // outputStuInfo(myClass, N);
    high = getAverID(myClass, N);
    /* User Code End(考生添加代码结束) */

	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;
}

/* User Code Begin(考生在此后根据设计需要完成程序的其它部分,行数不限) */
void inputStuInfo(STUINFO *stu, int n)
{
    
    
    int i;

    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", &(stu+i)->num, (stu+i)->name, &(stu+i)->score1, &(stu+i)->score2, &(stu+i)->score3);
        (stu+i)->aver = ((stu+i)->score1 + (stu+i)->score2 + (stu+i)->score3) / 3;
    }
}

int getAverID(STUINFO *stu, int n)
{
    
    
    int high = 0;
    float max = stu->aver;
    int i;
    for ( i = 1; i < n; i++)
    {
    
    
        if ((stu+i)->aver>max)
        {
    
    
            max = (stu+i)->aver;
            high = i;   // 只记录下标
        }
    }
    return high;
}
void outputStuInfo(STUINFO *stu, int n)
{
    
    
    int i;

    printf("info\n");
    for ( i = 0; i < n; i++)
    {
    
    
        printf("%d:", i + 1);
        printf("%d,%s,%f,%f,%f,%f\n", stu->num, stu->name, stu->score1, stu->score2, stu->score3, stu->aver);
    }
}

单选题的分析,见B站视频

自行搜索:成信大 c语言

猜你喜欢

转载自blog.csdn.net/matrixbbs/article/details/110927628