文章目录
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语言