定義了12個變量,但是每個值只取1或者0,所以執行速度很快。本題關鍵是如何確定變量,這裏選定四個人每句話中的每個部分為壹個條件,比如設a="洞庭湖最大",那麽a=1表示“洞庭湖最大”為真,否則a=0表示“洞庭湖最大”為假。b="洪澤湖最小",c="鄱陽湖第三",其余類推。這樣程序就很簡潔明了。
至於判斷條件如何簡化是這樣:
四個人四句話得四個條件:(a+b+c==1)&&(d+e+f+g==1)&&(h+i==1)&&(i+j+k+l==1)
對最大的湖的描述得:a+d+j<2
對最小的湖的描述得:b+e+h+k==1
對第二大湖的描述得:f+l<2
對第三大的湖的描述得:c+g+i<2
再對每個湖而言
對洞庭湖:a+e+i<2
對洪澤湖:b+d+l<2
對鄱陽湖:c+f+h+j==1
對太湖:g+k<2
條件判斷很重要,要不程序執行後得出很多結果,其中很多都是錯的。我開始寫的判斷條件要復雜得多,最後簡化成這樣。這花了不少時間。不要認為我定義的變量多,而是因為妳的題給條件很多而且都要利用。建議妳看看<<C語言趣味程序百例精解>> ,上面有很多邏輯問題,很精彩。
至於妳說的圖形界面,最多也就是個字符界面,真正的圖形化界面沒人給妳寫的,太要時間,效果未必好看。程序有什麽不足密我(晚上12點以後)。
程序在win-tc和Dev-c++下運行通過,經驗證正確。(妳給的條件不夠)
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a,b,c,d,e,f,g,h,i,j,k,l;
char ch;
for(a=1;a>=0;a--)
for(b=1;b>=0;b--)
for(c=1;c>=0;c--)
for(d=1;d>=0;d--)
for(e=1;e>=0;e--)
for(f=1;f>=0;f--)
for(g=1;g>=0;g--)
for(h=1;h>=0;h--)
for(i=1;i>=0;i--)
for(j=1;j>=0;j--)
for(k=1;k>=0;k--)
for(l=1;l>=0;l--)
if((a+b+c==1)&&(d+e+f+g==1)&&(h+i==1)&&(i+j+k+l==1)&&(a+d+j<2)&&(b+e+h+k==1)&&(f+l<2)&&(c+f+h+j==1)&&(c+g+i<2)&&(a+e+i<2)&&(b+d+l<2)&&(g+k<2))
{if(a)
printf("Dongting is biggest.\n");
if(b)
printf("Hongze is smallest.\n");
if(c)
printf("Poyang is the third.\n");
if(d)
printf("Hongze is biggest.\n");
if(e)
printf("Dongting is smallest.\n");
if(f)
printf("Poyang is the second.\n");
if(g)
printf("Tai is the third.\n");
if(h)
printf("Poyang is smallest.\n");
if(i)
printf("Dongting is the third.\n");
if(j)
printf("Poyang is biggest.\n");
if(k)
printf("Tai is smallest.\n");
if(l)
printf("Hongze is the second.\n");
printf("\n\n");
}
/* for(ch='a';ch<='l';ch++) */
system("pause");
return 0;
}