龙空技术网

PAT乙级1011,用C语言进行编程,实现A+B和C的数值大小判断

小萌九尾 106

前言:

现时姐妹们对“c语言中如何判断小写字母”大致比较关注,各位老铁们都需要了解一些“c语言中如何判断小写字母”的相关知识。那么小编也在网络上汇集了一些有关“c语言中如何判断小写字母””的相关资讯,希望看官们能喜欢,姐妹们快快来学习一下吧!

今天要讲的这道题目呢,是收录在PAT乙级中的第1011题,非常简单的一道题目,但我在做这道题目的时候,还是犯了一点错,实在是不应该啊。

归根结底的原因在于我没有读清楚题目,做题目的时候太着急了,太注重结果了,非但没有提升速度,反倒是降低了做题的效率。

话不多说,我们先来看一下这道题目的要求。

题目要求如下

1、给定区间[-2^31,2^31]内的3个整数A、B和C,请判断A+B是否大于C。

看到这个题目要求,就一定要提及一下,注意,区间是[-2^31,2^31]。

我们一般知道的int类型的区间是多少,是[-2^31,2^31-1],与题目要求的是不是有差别。

那就是题目要求比int类型多了一个1,不要小看这个1,这就决定了我们最开始需要定义的数据类型了。

2、输入第一行给定的正整数T,该正整数要小于等于10,用于输入T个测试用例,随后给出T组测试用例,分别输入A、B和C,然后这三个正整数之间用空格隔开。

3、对每组测试用例,如果A+B>C的话,就输出Case #X: true,否则就输出Case #X: false,这里的X指代的是测试用例的数量为1、2、3等等。

最终输入与输出的结果末端不要空格,所以在最终写printf打印语句的时候,要特意摘出来写。

在清楚题目要求后,我们来画出一张流程图,来帮助我们更好地理解怎么来写该程序。

绘出流程图,理清楚程序逻辑

如上图所示,这就是该程序的流程图,当然,流程图的主要目的是为了帮助我们来理清楚整个程序的逻辑,至于代码的具体实现,for循环、最后一行的空格如何隐藏等等怎么写,还是需要我们自己来动手写的。

代码实现

根据该流程图,我们就能大致知道怎么来写代码了。

1、因为我们最开始看清楚题目,所以这里的变量类型不应该写int,而是应该用到double

2、输入的T要小于等于10,所以这里要做一个if条件语句的判断,如果满足该条件,则程序继续往下运行,如果不满足,可以加一个else让它重新输入,也可以不运行该程序。

3、输入T组测试用例,这里要用到数组来存储数据,因为我们最终的结果是需要一次性打印出来的,如果不用数组的话,就会出现最后输入的结果把之前要输入的结果全部覆盖的问题。

如上图所示,由于没有用数组的方法,导致所有需要测试的结果都为最后一组数据。

4、既然我们要用到的变量类型是double,而且要求输入与输出的结果都是整数的话,那输入scanf中又要变化了,应该为scanf("%lf",&A);

%d是表示int类型,可以显示整数的。

%f是表示double类型,可以显示小数的。

%lf是表示double类型,可以只显示整数的。

如上图所示,如果没有用double类型的话,只能够拿到一部分的分数。

5、最终一行要没有空格,我们来思考一下,怎么样会打印到最后一行呢。

是不是因为整个循环快结束的时候,也就是说要到快接近T的时候,就是快结束的时候。

由于i是从0开始的,直到T为止,且不包含T,那快接近T的时候就是T-1了,所以当i不等于T-1的时候,每次打印一条结果就需要换行了。

特定部分的代码块:

  if(i!=T-1){                printf("\n");                }//这一部分是要写在第二个for循环当中的。

总的代码块:

//A+B 和 C#include<stdio.h>int main(){    int T;//第一行给出正整数T(<=10)    scanf("%d", &T);    double A[T];    double B[T];    double C[T];    if(T<=10){        for(int i = 0; i < T; i++){            scanf("%lf %lf %lf",&A[i],&B[i],&C[i]);            }        for(int i = 0; i < T; i++){            if(A[i]+B[i]>C[i]){                printf("Case #%d: true",i+1);            }            else{                printf("Case #%d: false",i+1);            }            if(i!=T-1){                printf("\n");                }            }        }        else{            scanf("%d", &T);            }    }
测试与验证结果总结

总的来说,这道题目难度不大,关键在于仔细。

这么简单的一道题为什么我做了这么长时间,就是因为最开始的A、B和C这三个整数的范围没有看清楚,想当然地直接用int类型来表示它们了。

但其实这正是题目中设置的一个陷阱,所以还需再多练一些题目,以后就能够躲开这些陷阱了。

标签: #c语言中如何判断小写字母