初階C-1117
阿新 • • 發佈:2018-12-02
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");
}
}