第三次作业
二
1.平均成绩
a设计思路:
(1):写好框架,由于该题目中需要用到字符等数据,则头文件需要用到string。
(2):根据题意可知,一个学生的结构中含有三种类型的数据,按要求定义结构体。
(3):利用for循环,按要求输入学号,姓名,成绩。
(4):利用for循环计算出平均成绩,并用for循环按要求输出平均线以下的学生姓名和学号。
b流程图:
c插入代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student{
char num[20];
char name[20];
double s;
} s[999];
int main(){
double ave=0;
int i,n;
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++)
ave= ave + s[i].s;
ave=ave/n;
printf("%.2f\n",ave);
for(i=0;i<n;i++)
{
if(s[i].s<ave){
printf("%s %s\n",s[i].name,s[i].num);
}
}
return 0;
}
d错误记录:
@:重复定义s[999]
解决办法:提交后显示编译错误,根据提示,找到了该错误,删去了下面的struct student[999],保留了上面的定义形式
@:格式错误
解决办法:提交后显示答案错误,没有注意到提示中的输出格式
2:查找书籍
a设计思路:
(1):构建好框架后,按题目要求构建含有书名,价格元素的结构体
(2):利用for循环进行对结构体内的元素进行输入
(3):利用for循环和if选择语句寻找最大值最小值进行输出
b流程图:
c插入代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct book
{
char name[31];
double cost;
}s[10];
main(){
int i,n;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("\n");
gets(s[i].name);
scanf("%lf",&s[i].cost);
}
int max,min;
for(i=1;i<n;i++)
{
if(s[i].cost>s[max].cost)
max=i;
if(s[i].cost<s[min].cost)
min=i;
}
printf("%.2f, %s\n",s[max].cost,s[max].name);
printf("%.2f, %s",s[min].cost,s[min].name);
return 0;
}
d错误记录:
@:一开始在进行输入字符串的时候,我并没有用gets进行输入,而是用了scanf,编译后发现并不能输出正确的结果
解决办法:询问汪志恒后,想起来scanf输入后敲回车就会输出结果,后来改用gets进行输入
三
1上传截图:
2地址: