C,是一种信仰

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

题目:

输入一个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。
以此为例,给大家参考。

posted @ 2011-01-21 20:58  胖乎乎的王老师  Views(828)  Comments(0Edit  收藏  举报
Email 联系我:fzd19zx@qq.com