第三次作业

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地址:

https://git.coding.net/simalang/zuoye.git

posted on 2018-04-22 15:48  司马朗  阅读(92)  评论(0编辑  收藏  举报

导航