• 代码分析:如何保持代码的正确缩进


    题目:

    输入一个100分制的成绩score(整数),要求输出对应的等级:A: 90分以上,B:80~89,C:70~79,D:60~69,E:60以下。例如:输入90,输出A.。

    有同学给出了下面的代码,该代码可以正常工作。但是,存在什么问题呢?

     1 #include<stdio.h>
     2 main ()
     3 {
     4 	int a;
     5 	scanf("%d", &a);
     6 	if(a<0 || a>100)
     7 		printf("No answer\n");
     8 	else if(a>=90) printf("A\n");
     9 	else if(a<=89 && a>=80) printf("B\n");
    10 	else if(a<=79 && a>=70) printf("C\n");
    11 	else if(a<=69 && a>=60) printf("D\n");
    12 	else printf("E\n");
    13 	return 0;
    14 }

    问题在于,没有采用正确的缩进方式。这样一来,第九行的else对应的是第八行的if还是第六行的if呢?正确的理解是:第九行的else对应第八行的if,但是第九行没有正确地缩进,由此,从文本形式上,很容易让人误解为:第九行的else对应第六行的if。同样的道理,既然第七行是来新的一行,那为啥你不把第八行分成两行呢?

    更好的缩进方式可以参考如下:

    0001 #include<stdio.h>
    0002 main ()
    0003 {
    0004     int a;
    0005     scanf("%d", &a);
    0006     if(a<0 || a>100) printf("No answer\n");
    0007     else
    0008         if(a>=90) printf("A\n");
    0009         else
    0010             if(a<=89 && a>=80) printf("B\n");
    0011             else
    0012                 if(a<=79 && a>=70) printf("C\n");
    0013                 else
    0014                     if(a<=69 && a>=60) printf("D\n");
    0015                     else printf("E\n");
    0016     return 0;
    0017 }

    上例中,每次缩进4个空格;而且很容易就从形式上分辨出哪个if对应着哪个else。
    以此为例,给大家参考。

  • 相关阅读:
    BZOJ 2300凸包+离线
    BZOJ 4140 凸包+二进制分组
    BZOJ 2178 Simpson积分
    BZOJ 4828 DP+BFS
    BZOJ 1845 Simpson积分
    BZOJ 1137 半平面交
    Codeforces 803G Periodic RMQ Problem ST表+动态开节点线段树
    Codeforces Round 411 Div.2 题解
    BZOJ 4530 LCT/线段树合并
    BZOJ 2946 SA/SAM
  • 原文地址:https://www.cnblogs.com/fzd19zx/p/1941585.html
Copyright © 2020-2023  润新知