官术网_书友最值得收藏!

選擇結(jié)構(gòu)

選擇結(jié)構(gòu)用于判斷給定的條件,根據(jù)判斷的結(jié)果來(lái)控制程序的流程。

要使用選擇結(jié)構(gòu),我們先來(lái)學(xué)習(xí)關(guān)系運(yùn)算。所謂關(guān)系運(yùn)算,實(shí)際上就是“比較運(yùn)算”。將兩個(gè)值進(jìn)行比較,判斷其比較的結(jié)果是否符合給定的條件。例如a>4是一個(gè)關(guān)系表達(dá)式,大于號(hào)是一個(gè)關(guān)系運(yùn)算符,如果滿足a>4的條件下,則該關(guān)系表達(dá)式的值為“真”,否則該關(guān)系表達(dá)式的值為“假”。

C++語(yǔ)言提供6種關(guān)系運(yùn)算符,如表2.1所示。

表2.1

if語(yǔ)句是用來(lái)判定所給定的條件是否滿足,根據(jù)結(jié)果的真或假?zèng)Q定執(zhí)行給出的兩種操作之一。

C++語(yǔ)言提供了三種形式的if語(yǔ)句:

    1. if(表達(dá)式成立)
     執(zhí)行語(yǔ)句
    2. if(表達(dá)式成立)
     執(zhí)行語(yǔ)句1
    else 
     執(zhí)行語(yǔ)句2
    3. if(表達(dá)式1成立)
     執(zhí)行語(yǔ)句1
      else if(表達(dá)式2成立)
       執(zhí)行語(yǔ)句2
      else if(表達(dá)式3成立)
       執(zhí)行語(yǔ)句3
      …
      else if(表達(dá)式m成立)
       執(zhí)行語(yǔ)句m
      else
       執(zhí)行語(yǔ)句n

這個(gè)很容易理解,我可以舉生活中的例子如下:

1. if(天氣好) 我就上街逛逛; 2. if(天氣好) 我就上街逛逛; else 我就待在家; 3. if (我至少有五百塊錢) 我可以買五件貨; else if(我至少有四百塊錢) 我可以買四件貨; else if(我至少有三百塊錢) 我可以買三件貨; else if(我至少有兩百塊錢) 我可以買兩件貨; else if(我至少有一百塊錢) 我可以買一件貨; else 回家吧,什么都不說(shuō)了,一說(shuō)都是淚啊;

【例題描述】 求絕對(duì)值

魔法師使用的能量除了正能量以外,還有一種神秘的暗能量,暗能量是一種不可見(jiàn)的、能推動(dòng)宇宙運(yùn)動(dòng)的能量。如圖2.4所示,與正能量級(jí)別相對(duì)應(yīng)的,魔法師將暗能量的級(jí)別以負(fù)數(shù)表示,現(xiàn)已知某種能量的級(jí)別,試用if語(yǔ)句顯示該能量級(jí)別的絕對(duì)值。

圖2.4

我是這樣寫的:

1 //求絕對(duì)值1
2 # include <iostream>
3 using namespace std;
4 
5 int main()
6 {
7  int x;
8  cin>>x;
9  if (x<0)
10   x=-x;
11  cout<<x<<endl;
12  system("pause");
13  return 0;
14 }

我是這樣寫的:

1 //求絕對(duì)值2
2 # include <iostream>
3 using namespace std;
4 
5 int main()
6 {
7  int x;
8  cin>>x;
9  if (x<0)
10   cout<<-x<<endl;
11  else
12   cout<<x<<endl;
13  system("pause");
14  return 0;
15 }

在if和else后面只含一個(gè)內(nèi)嵌的操作語(yǔ)句(如上例),如果有多個(gè)操作語(yǔ)句,就必須要用花括號(hào)“{ }”將幾個(gè)語(yǔ)句括起來(lái)成為一個(gè)復(fù)合語(yǔ)句。如:

    if(x>y)
    {
     number=0;                 //語(yǔ)句1
     cout<<x<<endl;  //語(yǔ)句2
    }
    else
    { 
     number=1;   //語(yǔ)句1
     cout<<y<<endl; //語(yǔ)句2
    }

我明白了,我舉一個(gè)生活中的例子:

if(天氣好) { 我就購(gòu)物; 我就看電影; 我就吃冰淇淋; } else { 我就在家看書; 我就在家看動(dòng)畫片; }

【例題描述】 兩實(shí)數(shù)排序

輸入兩個(gè)實(shí)數(shù)a和b,按代數(shù)值由小到大的次序輸出這兩個(gè)數(shù),例如輸入“3 2”,輸出“2 3”,輸入“2 3”,輸出仍是“2 3”。注意只允許使用cout<<a<<" "<<b這樣的語(yǔ)句,而不允許使用諸如cout<<b<<" "<<a這樣取巧的語(yǔ)句。

根據(jù)題目要求,顯然當(dāng)a>b的時(shí)候,a和b的值要互換,但a和b的值不能直接互換,而要通過(guò)一個(gè)中間變量(例如t)互換a,b的值。可以這樣想象:假設(shè)有一瓶醬油和一瓶醋,如果要把醬油裝入醋瓶,醋裝入醬油瓶,就必須要有一個(gè)空瓶子作為臨時(shí)盛放的容器。中間變量t就相當(dāng)于這個(gè)空瓶子。

參考程序如下所示:

1 //兩實(shí)數(shù)排序
2 # include <iostream>
3 using namespace std;
4 
5 int main()
6 {
7  float a,b,t;
8  cin>>a>>b;;
9  if(a>b)
10   {t=a;a=b;b=t;}
11  cout<<a<<" "<<b<<endl;
12  system("pause");
13  return 0;
14 }

【上機(jī)實(shí)踐】 三實(shí)數(shù)排序

輸入3個(gè)數(shù)a、b、c,要求模擬兩實(shí)數(shù)排序的程序按由小到大的順序輸出。

偽代碼如下所示:

1 定義浮點(diǎn)數(shù)a,b,c,t
2 輸入a,b,c
3 如果(a>b)
4   a,b兩值交換
5 如果(a>c)
6   a,c兩值交換
7 如果(b>c)
8   b,c兩值交換
9 輸出a,b,c的值

注意該程序中三個(gè)變量的比較過(guò)程,即先比較a是否大于b,再比較a是否大于c,最后比較b是否大于c。想想看,如果改變比較順序,結(jié)果是否仍然正確?

【上機(jī)實(shí)踐】 等級(jí)制

魔法學(xué)院的考試采用等級(jí)制,即將百分制轉(zhuǎn)化為A、B、C、D、E五個(gè)等級(jí),設(shè)成績(jī)?yōu)閄,則X≥90為A等,X≥80為B等,X≥70為C等,X≥60為D等,否則為E等。試編寫一個(gè)程序,將輸入的分?jǐn)?shù)轉(zhuǎn)換成A、B、C、D和E五個(gè)等級(jí)。

偽代碼如下所示:

1 定義分?jǐn)?shù)為浮點(diǎn)數(shù)x
2 輸入x的值
3 如果(x>=90) 
4   輸出"A"
5 否則如果(x>=80) 
6   輸出"B"
7 否則如果(x>=70) 
8   輸出"C"
9 否則如果(x>=60) 
10   輸出"D"
11 否則
12   輸出"E"

C++有一個(gè)可替代if-else語(yǔ)句的操作符,這個(gè)操作符被稱為三目運(yùn)算符(?:),它是C++中唯一一個(gè)需要3個(gè)操作數(shù)的操作符。如a>b?c:d;此句的含義是:a大于b嗎?如果是,則取c的值,否則取d的值。

例如下面的語(yǔ)句:

    if(a>b)
     Max=a;
    else
     Max=b;
    可以寫成Max=(a>b)?a:b;

【例題描述】 找最大值

編程輸出兩個(gè)整數(shù)的最大值。

1 //求最大值
2 # include <iostream>
3 using namespace std;
4 
5 int main()
6 {
7  int x,y;
8  cin>>x>>y;
9  int c=x>y?x:y;
10  cout<<c<<endl;
11  system("pause");
12  return 0;
13 }

分析以下程序的執(zhí)行錯(cuò)誤:

1 //輸出星期幾
2 #include <iostream>
3 using namespace std;
4 
5 int main()
6 {
7  int n;
8  cin>>n;
9  if(n=1)
10   cout<<"星期一"<<endl;
11  if(n=2)
12   cout<<"星期二"<<endl;
13  if(n=3)
14   cout<<"星期三"<<endl;
15  if(n=4)
16   cout<<"星期四"<<endl;
17  if(n=5)
18   cout<<"星期五"<<endl;
19  if(n=6)
20   cout<<"星期六"<<endl;
21  if(n=7)
22   cout<<"星期日"<<endl;
23  system("pause");
24  return 0;
25 }

我找到了,對(duì)于n=1來(lái)說(shuō),它的意思是將1賦給n,所以,這是一條賦值語(yǔ)句,整個(gè)表達(dá)式返回值為1,表示true,所以輸出星期一,而對(duì)于其他的if語(yǔ)句也同樣執(zhí)行。改正方法是將所有if條件表達(dá)式中的“=”改為“==”。

在if語(yǔ)句中又包含一個(gè)或多個(gè)if語(yǔ)句稱為if語(yǔ)句的嵌套,一般形式如下:

應(yīng)當(dāng)注意if與else的配對(duì)關(guān)系。else總是與它上面的最近的未配對(duì)的if配對(duì)。就好像穿衣服一樣,總是一層套一層的。

類似的生活中的例子有:

if(天氣好) if(是周末) 我就逛街; else 我就看電影; else if(是周末) 我就看電視; else 我就學(xué)習(xí)

【上機(jī)實(shí)踐】 完整的解一元二次方程

完整解方程ax2+bx+c=0的解實(shí)際上應(yīng)該有以下幾種可能:

(1)a=0,不是二次方程。

(2)b2-4ac=0,有兩個(gè)相等實(shí)根。

(3)b2-4ac>0,有兩個(gè)不等實(shí)根。

(4)b2-4ac<0,沒(méi)有實(shí)根(注意:引入虛數(shù)概念后,應(yīng)該有兩個(gè)共軛復(fù)根)。

這題要注意的是:因?yàn)閍是實(shí)數(shù),而實(shí)數(shù)在計(jì)算和存儲(chǔ)時(shí)會(huì)有一些微小的誤差,因此本來(lái)是零的值,由于誤差原因而判別為非零的值。所以不能通過(guò)(a==0)的方式判斷a是否等于0。我們采取的辦法是判斷a的絕對(duì)值是否小于一個(gè)很小的數(shù)(例如0.000001)。

fabs函數(shù)為求一個(gè)double類型的絕對(duì)值,例如fabs(-3)=3。使用fabs函數(shù),程序頭需引用math.h頭文件。順便提一下,abs函數(shù)為求一個(gè)整數(shù)變量的絕對(duì)值。

偽代碼如下所示:

1 定義浮點(diǎn)數(shù)a,b,c,disc,x1,x2
2 輸入a,b,c的值
3 如果(fabs(a)<=1e-6)    //1e-6為科學(xué)計(jì)數(shù)法,即1×10-6
4  輸出“不是一元二次方程”
5 否則
6 {
7  設(shè)disc=b*b-4ac
8  如果(disc==0) //注意實(shí)際代碼的括號(hào)內(nèi)應(yīng)寫成(fabs(disc)<=0.000001)
9    輸出兩個(gè)相同的實(shí)根
10  否則如果(disc>0) //此處的代碼應(yīng)該怎么寫?
11    輸出兩不同的實(shí)根
12  否則
13   輸出“無(wú)實(shí)根”
14 }

【例題描述】 判斷閏年

閏年(Leap Year)是為了彌補(bǔ)因人為歷法規(guī)定造成的年度天數(shù)與地球?qū)嶋H公轉(zhuǎn)周期的時(shí)間差而設(shè)立的。因?yàn)榈厍蚶@太陽(yáng)運(yùn)行周期為365天5小時(shí)48分46秒(合365.24219天)即一回歸年(tropical year)。公歷的平年只有365日,比回歸年短約0.2422日,所余下的時(shí)間約為四年累計(jì)一天,故四年于2月加1天,使當(dāng)年的歷年長(zhǎng)度為366日,這一年就為閏年。現(xiàn)行公歷中每400年有97個(gè)閏年。

閏年的條件是符合下面二者之一:(1)能被4整除,但不能被100整除。(2)能被4整除,又能被400整除。請(qǐng)編程判斷某一年是否是閏年。

這個(gè)程序看上去很簡(jiǎn)單嘛,只要進(jìn)行幾次選擇判斷就可以了,這是我寫的程序,你能寫一個(gè)和我這個(gè)程序不一樣的代碼嗎?

1 //判斷閏年1
2 #include <iostream>
3 using namespace std;
4 
5 int main()
6 {
7  int year,leap;
8  cin>>year;
9  if(year%400==0)
10   cout<<"是閏年";
11  else if(year%100!=0)
12  {
13   if (year%4==0)
14    cout<<"是閏年";
15   else
16    cout<<"不是閏年";
17  }
18  else
19   cout<<"不是閏年";
20  system("pause");
21  return 0;
22 }

學(xué)過(guò)下面要講的邏輯運(yùn)算符后,這道題也可以只用一個(gè)邏輯表達(dá)式來(lái)表示:

(year%4==0 && year%100!=0)||year%400==0

或者加一個(gè)“!”用來(lái)判別非閏年:

!((year%4==0 && year%100!=0)||year%400==0)

關(guān)系表達(dá)式的值是一個(gè)邏輯值,即“真”或“假”。例如,關(guān)系表達(dá)式“3==4”的值為假,“4>=0”的值為真。C++語(yǔ)言以“1”代表真,以“0”代表假。

C++語(yǔ)言里只要系統(tǒng)給出的邏輯運(yùn)算結(jié)果非零,即為真。

C++語(yǔ)言提供三種邏輯運(yùn)算符,如表2.2所示。

表2.2

邏輯運(yùn)算舉例如下:

a && b:若a、b為真,則a && b為真。

a || b:若a、b之一為真,則a || b為真。

!a:若a為真,則!a為假。

表2.3為邏輯運(yùn)算的“真值表”。

表2.3

在一個(gè)邏輯表達(dá)式中如果包含多個(gè)邏輯運(yùn)算符,例如:

!a&&b||x>y&&c 按以下優(yōu)先次序: (1)!> && > || (2)&&和||低于關(guān)系運(yùn)算符,!高于算術(shù)運(yùn)算符。 例如: (a>b)&&(x>y) 可寫成a>b && x>y (a==b)||(x==y) 可寫成a==b||x==y (!a)||(a>b) 可寫成!a||a>b

為了提高C++程序的運(yùn)行效率,在邏輯表達(dá)式的求解中,并不是所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。例如:

(1)a && b && c只有在a為真時(shí),才需要判別b的值。只有a和b都為真的情況下才需要判別c的值。只要a為假,就不必判別b和c的值。如果a和b為假,則不判別c。

(2)a || b || c只要a為真,就不必判斷b和c,只有a為假,才判別b。a和b都為假才判別c。

例如下例中輸出的a、b、c的值分別為0、1、1。

1 //邏輯表達(dá)式示例
2 #include <iostream>
3 using namespace std;
4 
5 int main()
6 {
7  int a=0;
8  int b=1;
9  int c=1;
10  if(a && b++ && c++)
11   b++;
12  cout<<a<<b<<c<<endl;
13  system("pause");
14  return 0;
15 }

那這樣就很容易寫了,看看我的代碼對(duì)不對(duì)?

1 //判斷閏年2
2 #include <iostream>
3 using namespace std;
4 
5 int main()
6 {
7  int year;
8  cin>>year;
9  if((year%400==0) || ((year%4==0) && (year%100!=0)))
10   cout<<year <<"是閏年"<<endl;
11  else
12   cout<<year<<"不是閏年"<<endl;
13  system("pause");
14  return 0;
15 }

switch語(yǔ)句是多分支選擇語(yǔ)句。用來(lái)實(shí)現(xiàn)多分支選擇結(jié)構(gòu)。如學(xué)生的成績(jī)‘A’等為85分以上,‘B’等為70~84分,‘C’等為60~69分,‘D’等為50~59,其余的為‘E’等,我們可以實(shí)現(xiàn)如下:

    switch(grade) //比較grade值,grade值為一個(gè)字符
    {
     case 'A':cout<<“85-100分\n”;   //若grade值為'A'
     case 'B':cout<<“70-84分\n”;  //若grade 值為'B'
     case 'C':cout<<“60-69分\n”;  //若 grade 值為'C'
     case 'D':cout<<“50-59分\n”;  //若 grade 值為'D'
     default:cout<<“低于50分\n”; //否則為E
    }

switch后面括弧內(nèi)的表達(dá)式,可以為任何類型。如上例中g(shù)rade為字符型。

表達(dá)式的值必須與某一case后面的常量表達(dá)式的值完全匹配,才執(zhí)行此case后面的語(yǔ)句,若所有的case中的常量表達(dá)式的值都沒(méi)有與表達(dá)式的值相匹配,就執(zhí)行default后面的語(yǔ)句。

每一個(gè)case的常量表達(dá)式的值必須互不相同,否則會(huì)出現(xiàn)互相矛盾的現(xiàn)象。

每個(gè)case和default的出現(xiàn)次序不影響執(zhí)行結(jié)果。

要注意的是:執(zhí)行完一個(gè)case后面的語(yǔ)句后,流程控制轉(zhuǎn)移到下一個(gè)case繼續(xù)執(zhí)行。“case常量表達(dá)式”只是起語(yǔ)句標(biāo)號(hào)作用,并不是在該處進(jìn)行條件判斷。在執(zhí)行switch語(yǔ)句時(shí),根據(jù)switch后面表達(dá)式的值找到匹配的入口標(biāo)號(hào)后,就從此標(biāo)號(hào)開始執(zhí)行下去,不再進(jìn)行判斷。例如上面的例子中,若grade的值等于‘A’,則將連續(xù)輸出。輸出結(jié)果如下:

85-100分

70-84分

60-69分

50-59分

低于50分

應(yīng)該在執(zhí)行一個(gè)case分支后,使流程跳出switch結(jié)構(gòu),即終止switch語(yǔ)句的執(zhí)行。我們可以用一個(gè)break語(yǔ)句來(lái)跳出結(jié)構(gòu)。程序如下:

    switch(grade) //比較grade值,grade值為一個(gè)字符
    {
     case 'A':cout<<"85-100分\n"; break; 
     case 'B':cout<<"70-84分\n";  break; 
     case 'C':cout<<"60-69分\n";  break; 
     case 'D':cout<<"50-59分\n";  break; 
     default:cout<<"低于50分\n"; //此處可以不加break語(yǔ)句。
    }

那我可以少寫一些語(yǔ)句了,因?yàn)槎鄠€(gè)case可以共用一組執(zhí)行語(yǔ)句,例如:

switch(grade) { case 'A': case 'B': case 'C': cout<<"高于60分\n";break; //語(yǔ)句1 case 'D': default:cout<<"低于60分\n"; //語(yǔ)句2 } 則當(dāng)grade的值為A、B、C時(shí)執(zhí)行語(yǔ)句1,當(dāng)grade的值為C,D時(shí)執(zhí)行語(yǔ)句2。

【例題描述】 五分制

魔法學(xué)校實(shí)行五分制,即5分為最高分,現(xiàn)在輸入一個(gè)學(xué)生的分?jǐn)?shù),如果是5分,則輸出“優(yōu)秀”,如果是4分,則輸出“良”,如果是3分,則輸出“及格”,如果是2分,則輸出“不及格”,如果是1分,則輸出“太糟糕了”。

1 //五分制
2 #include <iostream>
3 using namespace std;
4 
5 int main()
6 {
7  int grade;               //注意此處是整數(shù)
8  cin>>grade;
9  switch(grade)  //比較grade值,grade值為一個(gè)整數(shù)
10  {
11   case 5:
12    cout<<"優(yōu)秀\n"; break;
13   case 4:
14    cout<<"良\n"; break;
15   case 3:
16    cout<<"及格\n"; break;
17   case 2:
18    cout<<"不及格\n"; break;
19   default:cout<<"太糟糕了\n";  //此處可以不加break語(yǔ)句
20  }
21  system("pause");
22  return 0;
23 }

【例題描述】 等級(jí)劃分

魔法學(xué)校實(shí)行等級(jí)制,即A、B、C、D、E,現(xiàn)在輸入一個(gè)學(xué)生的等級(jí),如果是A,則輸出“優(yōu)秀”,如果是B,則輸出“良”,如果是C,則輸出“及格”,如果是D,則輸出“不及格”,如果是E,則輸出“太糟糕了”。

1 //等級(jí)劃分
2 #include <iostream>
3 using namespace std;
4 
5 int main()
6 {
7  char grade;            //注意此處是字符型
8  cin>>grade;
9  switch(grade)  //比較grade值,grade值為一個(gè)字符
10  {
11   case'A':
12    cout<<"優(yōu)秀\n"; break;
13   case'B':
14    cout<<"良\n"; break;
15   case'C':
16    cout<<"及格\n"; break;
17   case'D':
18    cout<<"不及格\n"; break;
19   default:cout<<"太糟糕了\n";  //此處可以不加break語(yǔ)句
20  }
21  system("pause");
22  return 0;
23 }

【例題描述】 運(yùn)費(fèi)計(jì)算

魔法學(xué)院需要運(yùn)輸一批魔法材料,已知運(yùn)費(fèi)計(jì)算公式為f=p×w×s×(1-d),其中p為運(yùn)輸物品價(jià)值,w為運(yùn)送物品重量,s為運(yùn)送物品距離,d為折扣。現(xiàn)已知p、w、s的值,而折扣d的計(jì)算遵守以下規(guī)則:

s<250 沒(méi)有折扣

250≤s<500 2%折扣

500≤s<1000 5%折扣

1000≤s<2000 8%折扣

2000≤s<3000 10%折扣

3000≤s 15%折扣

試計(jì)算運(yùn)費(fèi)f的值。注意,只能用switch語(yǔ)句判斷和計(jì)算折扣值。

這個(gè)程序如果用判斷語(yǔ)句解決并不是特別困難,可是如果用switch語(yǔ)句來(lái)解決,好像有點(diǎn)困難。因?yàn)楸磉_(dá)式的值必須與某一case后面的常量表達(dá)式的值完全匹配,所以顯然不能寫成case s<250或者case(2000<=s)&&(s<3000)這樣的錯(cuò)誤形式。

可也總不能寫幾千個(gè)case吧?因此我們需要想辦法將無(wú)盡的數(shù)集映射為有限的數(shù)集,你想到怎么做了嗎?

參考程序如下所示:

1 //計(jì)算運(yùn)費(fèi)
2 #include <iostream>
3 using namespace std;
4 
5 int main()
6 {
7  int c,s;
8  float p,w,d,f;
9  cin>>p>>w>>s;
10  c=s/250;              //c是s的映射
11  switch(c)
12  {
13   case 0:d=0;break;
14   case 1:d=2;break;
15   case 2:
16   case 3:d=5;break;
17   case 4:
18   case 5:
19   case 6:
20   case 7:d=8;break;
21   case 8:
22   case 9:
23   case 10:
24   case 11:d=10;break;
25   default:d=15;break;
26  }
27  f=p*w*s*(1-d/100.0);
28  cout<<"總運(yùn)費(fèi)="<<f<<endl;
29  system("pause");
30  return 0;
31 }

由于折扣的變化是有規(guī)律的,折扣的變化點(diǎn)都是250的倍數(shù),(250、500、1000、2000、3000)。所以利用這一特點(diǎn),加一個(gè)變量c=s/250,c代表250的倍數(shù)。

【上機(jī)實(shí)踐】 判斷某日是一年的第幾天

鍵盤上按照年月日的格式輸入年份、月和日期,運(yùn)行程序以后,判斷這一天是這一年的第幾天。

一年有12個(gè)月,每個(gè)月的天數(shù)是一定的,因此在解決問(wèn)題時(shí),可以用switch語(yǔ)句對(duì)應(yīng)每個(gè)月,然后將天數(shù)進(jìn)行累加。需要考慮的是2月的天數(shù)計(jì)算,2月天數(shù)可以先看成28,計(jì)算完畢后再根據(jù)年份的閏/平年的不同考慮是否加1。

主站蜘蛛池模板: 洛浦县| 临潭县| 保山市| 唐海县| 会昌县| 武夷山市| 汤原县| 伊金霍洛旗| 富川| 葫芦岛市| 巴彦县| 左权县| 外汇| 富顺县| 米林县| 彭州市| 五台县| 南乐县| 孝义市| 乌审旗| 永顺县| 乌拉特前旗| 平利县| 安康市| 广元市| 防城港市| 郴州市| 永丰县| 泽州县| 贞丰县| 舞阳县| 海安县| 古浪县| 闵行区| 墨竹工卡县| 岳池县| 太谷县| 彭州市| 拜泉县| 莫力| 达孜县|