1. 程式人生 > >初階C-1117

初階C-1117

1、有5位運動員參加了10米臺跳水比賽,有人讓他們預測比賽結果

A選手說:B第二,我第三;

B選手說:我第二,E第四;

C選手說:我第一,D第二;

D選手說:C最後,我第三;

E選手說:我第四,A第一;

比賽結束後,每位選手都說對了一半,請程式設計確定比賽的名次。

這道題我們一般的思維是直接根據一個條件的真假性,然後去依次判斷下去。但是在C語言中不可以那麼想。你不能去想當然的去判斷。所以我們得設定條件,去不斷的迴圈,然後判斷出結果。

void Guess(){
    for(int a = 1;a <= 5;a++){
        for(
int b = 1;b <= 5;b++){ for(int c = 1;c <= 5;c++){ for(int d = 1;d <= 5;d++){ for(int e = 1;e <= 5;e++){ //排名無非就是12345,全部走一遍,當滿足條件時,就判斷下一個條件,直到滿足時 if ((2 == b && 3 != a) || (2 != b &&
3 == a) == 1){ if ((2 == b && 4 != e) || (2 != b && 4 == e) == 1){ if ((1 == c && 2 != d) || (1 != c && 2 == d) == 1){ if ((5 == c && 3 != d) || (5 != c && 3 == d) == 1){ if ((4 == e && 1 != a) || (4 != e &&
1 == a) == 1){ if (a*b*c*d*e == 120){ printf("a=%d b=%d c=%d d=%d e=%d\n", a, b, c, d, e); } } } } } } } } } } } }

2、日本某地發生了一件謀殺案,警察通過排查確定殺人凶手必為4個嫌疑犯的一個。以下為4個嫌疑犯的供詞

A說:不是我。

B說:是C。

C說:是D。

D說:C在胡說

已知3個人說了真話,1個人說的是假話。 現在請根據這些資訊,寫一個程式來確定到底誰是凶手。

這個與上面的思想是一樣的,我們需要設定一個常量,將它作為凶手的標誌。

我在裡面設定2為凶手的標誌

void Guesspeople(){
    	for (int a = 1; a <= 4; a++){
		for (int b = 1; b <= 4; b++){
			for (int c = 1; c <= 4; c++){
				for (int d = 1; d <= 4; d++){
					if ((a != 2 && c == 2 && d == 2) || (d != 2) == 1){
						if ((a != 2 && c == 2 && d != 2) || (d == 2) == 1){
							if ((a != 2 && c != 2 && d == 2) || (d != 2) == 1){
								if ((a == 2 && c == 2 && d == 2) || (d != 2) == 1){
									if (a != b&&a != c&&a != d&&b != c&&b != d&&c != d){
										printf("a=%d,b=%d,c=%d,d=%d\n", a, b, c, d);
									}
								}
							}
						}
					}
				}
			}
		}
	}
}

列印輸出之後可以發現,C的值全部為2,那麼說明C一定就是凶手。

3、在螢幕上列印楊輝三角

楊輝三角的規律有很多,其中有一個,每個數等於上方兩數之和。

#define N 10 //定義一個二維陣列
void triangle(){
    int arr[N][N]={0};//先全部初始化為0
    int i, j, k;
    for(i = 0;i < N;i++){
    	for(j = 0;j < N-i;j++){
    		printf(" ");
            for(k = 0;k <= i;k++){
                if(k == 0||k == i){
                    arr[i][k] = 1;
                }else{
                    arr[i][k] = arr[i-1][k] + arr[i-1][k-1];
                }
            }
            printf("%4d",arr[i][k]);
    	}
        printf("\n");
    }
}