第三次作业
一、作业要求一:
1、结构成员的引用方法与数组类似在[]运算符中标明要提取的结构体成员放在结构体数组名的后面点运算符的前面,即可提取相应的成员。
2、p->str++中的++加向p中的字符指针str。
3、struct { int len; char str; } p;是个指针定义,p->str++必须加在之后的语句上,这一句不能加,属于语法错误。
二、作业要求二:
1、计算平均成绩:
(1)代码:
#include<stdio.h>
#include<stdlib.h>
struct score
{
char num[20];
char name[20];
double s;
};
int main()
{
struct score s[100];
int i,n;
double average=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s%s%lf",&s[i].num,&s[i].name,&s[i].s);
}
for(i=0;i<n;i++)
{
average=average+s[i].s;
}
average=average/n;
printf("%.2f\n",average);
for(i=0;i<n;i++)
{
if(s[i].s<average)
{
printf("%s %s\n",s[i].name,s[i].num);
}
}
return 0;
}
(2)设计思路:
第一步:构建程序基本框架,定义结构体数组,定义需要的变量。
第二步:向结构体数组中输入数据。
第三步:输出平均数,输出分数低于平均数的同学的学号和姓名。
(3)流程图:
(4)本题遇到的问题:
本题在整体思路上没有出现大问题,在一些小符号上出现了一点小错误。
2、查找书籍
(1)代码:
#include <stdio.h>
#include<stdio.h>
struct book
{
char name[50];
double price;
}b[10];
int main()
{
int n,i,min=0,max=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("\n");
gets(b[i].name);
scanf("%lf",&b[i].price);
if(b[i].price>b[max].price)
{
max=i;
}
if(b[i].price<b[min].price)
{
min=i;
}
}
printf("%.2lf, %s\n",b[max].price,b[max].name);
printf("%.2lf, %s\n",b[min].price,b[min].name);
return 0;
}
(2)设计思路:
第一步:在程序中建立所需的结构体类型。
第二步:先要输入要比较的书籍本书,然后依次输入书名和价格,利用for循环。
第三步:在同一个for循环中进行价格高低的比较。找到最高及最低的价格后按要求输出。
(3)流程图:
(4)本题遇到的问题:
程序输出结果与题目要求的相反。
解决方法:将定义中的max与min给弄混了,将两个变量的循环放反了。将两个变量的循环变量位置进行交换。
三、
(1)学习总结和进度
这周学习了指针的结构体类型数据的定义方法和引用方法。
(2)学习进度表
(3)上传coding截图:
git地址:https://coding.net/u/c289716425/p/123/git?public=true