认真写博客的夏目浅石.

认真写博客的夏目浅石.

PTA第三章作业题-LMLPHP


前言

讲解一下 AYIT 第三章作业题目,首先评价一下这些题目,其实这些题目非常经典,很适合入门学习,一些经典的方法和结论需要大家去学习。


7-1 比较大小

Ⅰ. 方法一 :直接判断法


#include<stdio.h>
int main()
{
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);
    if(a > b && b > c)
    printf("%d %d %d",c,b,a);
    else if(b > a && a > c)
    printf("%d %d %d",c,a,b);
    else if(c > a && a > b)
    printf("%d %d %d",b,a,c);
    else if(a > c && c > b)
    printf("%d %d %d",b,c,a);
    else if(b > c && c > a)
    printf("%d %d %d",a,c,b);
    else if(c > b && b > a)
    printf("%d %d %d",a,b,c);
    return 0;
}

Ⅱ. 方法二:交换法

只看第一种方法,后面方法可做了解

因为从小到大 所以 if里面肯定是 左边大 右边小
然后三个数 三种情况 都判断 再利用交换法 就结束了

#include<stdio.h>
int main()
{
    int x,y,z,min;
    scanf("%d %d %d",&x,&y,&z);
    if(x > y)
    {
  	    min = x;
  	    x = y;
  	    y = min;
    }
    if(x > z)
    {
  	    min = x;
  	    x = z;
  	    z = min;
    }
    if(y > z) 
    {
  	    min = y;
  	    y = z;
  	    z = min;
  }
    printf("%d %d %d",x,y,z);
    return 0;
}

7-2 比较两个数的大小

Ⅰ. 方法 :直接判断法

#include<stdio.h>
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    if(a>=b)
    {
        printf("%d %d",b,a);
    }
    else if(a<b)
    {
        printf("%d %d",a,b);
    }
    return 0;
}

7-3 成绩等级

Ⅰ. 方法 :直接判断法

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    if(n >= 90 && n <= 100)
    printf("A");
    if(n >= 80 && n <= 89)
    printf("B");
    if(n >= 70 && n <= 79)
    printf("C");
    if(n >= 60 && n <= 69)
    printf("D");
    if(n <60 && n >=0)
    printf("E");
    return 0;
}

7-4 打鱼晒网

Ⅰ. 方法 :直接判断法

#include<stdio.h>
int main()
{
	int m,n,p;
	int a,y;
	scanf("%d %d %d",&m,&n,&p);
	if(n=1) a=0;//前0个月
	if(n=2) a=31;//前1个月
	if(n=3) a=59;//前2个月
	if(n=4) a=90;//前3个月
	if(n=5) a=120;
	if(n=6) a=151;
	if(n=7) a=181;
	if(n=8) a=212;
	if(n=9) a=243;
	if(n=10) a=273;
	if(n=11) a=304;
	if(n=12) a=334;//算天数用
	a += p;//加上本月的天数
	if((m%4==0&&m%100!=0||m%400==0))//判断闰年
	{
		a+=2;
	}
	y=a%5;//下面就是依据打鱼晒网的定义进行判断
	if(y==0||y==4)
	{
		printf("network");
	}
	if(y==1||y==2||y==3)
	{
		printf("fish");
	}
	return 0;
 } 

7-5 计算奖金

Ⅰ. 方法 :直接判断法

#include<stdio.h>
int main()
{
    double a;
    double m;
    scanf("%lf",&a);
    if(a <= 10.0 && a >= 0.0)
    {
        m = a*0.1*10000.0;
        printf("%.2lf元",m);
    }
    else if(a>10.0 && a<=20.0)
    {
        m = a*0.12*10000;
        printf("%.2lf元",m);
    }
    else if(a >20.0 && a<= 40.0) 
    {
		 m = a*0.14*10000;
        printf("%.2lf元",m);
    }
    else if(a > 40.0 && a <= 60.0)
    {
        m = a*0.16*10000;
        printf("%.2lf元",m);
    }
    else if(a > 60.0 && a<=100.0)
    {
        m = a*0.18*10000;
        printf("%.2lf元",m);
    }
    else
    {
        m=a*0.2*10000;
        printf("%.2lf元",m);
    }
    return 0;
}

7-6 求方程解

Ⅰ. 方法 :暴力计算

#include<stdio.h>
#include<math.h>
int main()
{
    int a,b,c;
    double x1,x2,m=0;
    scanf("%d %d %d",&a,&b,&c);
    m = (pow(b,2)-4*a*c);
    x1 = ((-b + sqrt(m))/(2*a));
    x2 = ((-b - sqrt(m))/(2*a));
    if(m < 0 && a != 0)
    {
        printf("无实数解!\n");
    }
    else if(m > 0 && a != 0)
    {
        printf("x1=%.2lf,x2=%.2lf\n",x1,x2);
    }
    else if(m == 0 && a != 0)
    {
        printf("x1=x2=%.2lf\n",x1);
    }
    return 0;
}

7-7 求鸡兔数量

Ⅰ. 方法 :暴力计算

#include<stdio.h>
int main()
{
    int x,y;
    int m,n;
    scanf("%d %d",&x,&y);
    n=0.5*y-x;
    m=2*x-0.5*y;
    if(x<0 || y<0 || x%2!=0 || y%4!=0 || m <0 || n <0)
    printf("error");
    else
    printf("chicken:%d rabbit:%d",m,n);
    return 0;
}

7-8 求月供

Ⅰ. 方法 :暴力计算

#include<stdio.h>
#include<math.h>
int main()
{
	int d,p;
	float r,m;
	scanf("%d%d%f",&d,&p,&r);
	if(p-d*r>0)
	{
	m=(log(p)-log(p-d*r))/log(1+r);
	printf("%.0f\n",ceil(m));
	}
	else
	{
		printf("error\n");
	}
	return 0;
}

7-9 设计计算器

Ⅰ. 方法 :暴力计算

#include<stdio.h>
int main()
{
    float a,b;
    char ch;
    float m;
    scanf("%f%c%f",&a,&ch,&b);
    switch(ch)
    {
        case '+': m=a+b; break;
        case '-': m=a-b; break;
        case '*': m=a*b; break;
        case '/': m=a/b; break;
    }
    if(m-(int)m==0.0)
    printf("%.0f",m);
    else
    printf("%.1f",m);
    return 0;
}

7-10 字母加密

Ⅰ. 方法 :暴力计算(不理解这个题目可以问22学长)

#include<stdio.h>
int main()
{
    unsigned char c;
    int k;
    scanf("%c%d",&c,&k);
    c=c+k;
    if(c>'z')
    c=c-26;
    printf("%c",c);
    return 0;
}

7-11 判断闰年

Ⅰ. 方法 :背结论

#include<stdio.h>
int main()
{
    int year;
    scanf("%d",&year);
    if(year%4==0&&year%100!=0||year%400==0)
    {
        printf("yes");
    }
    else
    {
        printf("no");
    }
    return 0;
}

总结

本章节的作业,初学的时候会比较难,但是只要肯钻研,去问的话,会学到很多东西,题目的一些结论比如闰年的判断是大家必须要背的记忆的。

09-27 01:42