2018C语言第三次作业

时间:2022-01-03 08:25:24
  • 要求一

2.struct sk{int a; char *str)}*p;   p->str++ 中的++ 加向?

++加向srt的地址。

  • 要求二

题目1-计算平均成绩

1.设计思路

(1)主要描述题目算法

第一步:定义整数型变量n(学生数量)、i(循环变量)和浮点型变量average(平均成绩);

第二步:按照题目要求定义结构体student以及结构体变量s[10]和地址变量p;

第三步:使用地址和循环输入所有学生信息并在循环体内累加学生成绩;

第四步:将学生成绩和除以人数得到平均成绩输入;

第五步:使用地址和循环遍历结构体数组s筛选出平均成绩以下的学生信息。

(2)流程图

2018C语言第三次作业

2.实验代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct student
{
char num[6];
char name[10];
int score;
}s[10],*p;
int main()
{
int n,i;
double average=0;
scanf("%d",&n);
p=&s[0];
for(i=0;i<n;i++,p++)
{
scanf("%s%s%d",p->num,p->name,&p->score);
average+=p->score;
}
average/=n;
printf("%.2lf",average);
p=&s[0];
for(i=0;i<n;i++,p++)
{
if(p->score<average)
{
printf("\n%s %s",p->name,p->num);
}
}
return 0;
}

3.本题调试过程碰到问题及解决办法

本题课堂进行了类似的练习所以没有错误,需要注意的应该就是输出格式,这次编程中使用了不同于课堂练习的地址变量指向结构体成员的方式。

2018C语言第三次作业

题目2-查找书籍

1.设计思路

(1)主要描述题目算法

第一步:定义整数型变量n(书本数量)、i(循环变量);

第二步:按照题目要求定义结构体book以及结构体变量a[10]、max、min和地址变量p;

第三步:使用地址和循环输入所有书本生信息;

第四步:初始化book max和book min结构体中价格成员的值;

第五步:使用地址和循环在循环体内通过if条件句判断将所有书本中价格最高和最低的书本信息录入book max和book min结构体中;

第六步:按照题目要求格式输出信息即可。

(2)流程图

2018C语言第三次作业

2.实验代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct book
{
char name[31];
double price;
}a[10],*p,max,min;
int main()
{
int n,i;
scanf("%d",&n);
p=&a[0];
for(i=0;i<n;i++,p++)
{
getchar();
gets(p->name);
scanf("%lf",&p->price);
}
max.price=0;
min.price=999999999;
p=&a[0];
for(i=0;i<n;i++,p++)
{
if(p->price>max.price)
{
max.price=p->price;
strcpy(max.name,p->name);
}
if(p->price<min.price)
{
min.price=p->price;
strcpy(min.name,p->name);
}
}
printf("%.2lf, %s\n%.2lf, %s",max.price,max.name,min.price,min.name);
return 0;
}

3.本题调试过程碰到问题及解决办法

首次编译运行发现输入的信息无法正确读入进变量,经研究发现是源于程序中输入的语句结构和实际输入的内容存在换行符号的误差,所以通过在第一个循环体内加入一个getchar()来解决。

2018C语言第三次作业

题目3-按等级统计学生成绩

1.设计思路

(1)主要描述题目算法

第一步:根据题目中所给主函数信息读入结构体地址p和整数型变量n(数组元素个数),并定义整数型变量count(不及格人数);

第二步:通过循环遍历结构体数组并通过if条件判断每一位学生的成绩等级然后读入进对应结构体之中;

第三步:当判断产生D等成绩时对count进行累加;

第四步:返回count的值。

(2)流程图

2018C语言第三次作业

2.实验代码

int set_grade(struct student *p,int n)
{
int count=0;
while(n--)
{
if(p->score<=100&&p->score>=85)
p->grade='A';
else if(p->score>=70)
p->grade='B';
else if(p->score>=60)
p->grade='C';
else
{
p->grade='D';
count++;
}
p++;
}
return count;
}

3.本题调试过程碰到问题及解决办法

课堂练习题目,没有错误。

2018C语言第三次作业

  • 要求三

1.指针与结构作业中题目所使用的知识点

①结构体的声名方式,及其内部成员的定义;

②结构体的指针变量应用和函数应用。

2.Git地址:https://coding.net/u/cyq1076926262/p/test/git/tree/master/?public=true

2018C语言第三次作业