天天看點

第三次作業

作業要求二

題目一:計算平均成績

1 設計思路

(1)主要描述題目算法

第一步:看到N個學生的多種資訊 想到使用結構體和數組,是以在結構體中定義學号,姓名和成績。

第二步:多個學生依次輸入成績要使用for循環并注意輸入格式。

第三步:要求輸出平均成績線以下的學生名單,是以算出平均成績後要把每個學生的成績與平均成績相比較,使用if,else。

(2)流程圖

第三次作業
2.實驗代碼

#include<stdio.h>
struct student{
	int num;
	char name[10];
	int grade;
};
int main()
{
	int N,i=0,num=0;
	float aver=0;
	scanf("%d",&N);
	struct student s[N],*p;
	p=s;
	for(i=0;i<N;i++,p++)
	{
		scanf("%d%s%d",&p->num,p->name,&p->grade);
		num=num+p->grade;
	}
	if(N==0)
	aver=0;
	else
	aver=num/(N*1.0);
	printf("%.2f\n",aver);
	p=s;
	for(i=0;i<N;i++,p++)
	{
		if(p->grade<aver)
		printf("%s %.5d\n",p->name,p->num); 
	}
}      

3.本題調試過程碰到問題及解決辦法

   錯誤原因:結構體大括号後面忘記分号。

第三次作業

   改正方法:和老師上課的代碼進行比較。

題目二:查找書籍

第一步:給出相應結構體,定義最高價和最低價。

第二步:進行多次比較,使用for循環。

第三步:按格式輸出。

第三次作業
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

int main()
{
    struct book
    {
        char name[300];
        double price; 
    }now,max,min;

    max.price=0;
    min.price=999999999999999999;
    int n,i;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        getchar();
        gets(now.name);
        scanf("%lf",&now.price);
        if(now.price>max.price)
        {
            strcpy(max.name,now.name);
            max.price=now.price;
        }
        if(now.price<min.price)
        {
            strcpy(min.name,now.name);
            min.price=now.price;
        }
    }
    printf("%.2lf, %s\n%.2lf, %s",max.price,max.name,min.price,min.name);

    return 0;
}      

   錯誤原因:定義價格的時候使用了整型。

   改正方法:警告我而且輸出的東西亂七八糟然後仔細看了一下題目。

第三次作業

要求三、學習總結和進度

1、總結兩周來所有PTA作業中每個題目所使用的知識點。

結構體與指針。

2、将PTA作業的源代碼使用git送出到托管平台上,要求給出上傳成功截圖和你的git位址。

https://git.coding.net/wangjiale0616/diyizhouzuoye.git

第三次作業