C语言编程练习

1,5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第二, 我第三;
B选手说:我第二, E第四;
C选手说:我第一, D第二;
D选手说:C最后, 我第三;
E选手说:我第四, A第一;
比赛结束后, 每位选手都说对了一半, 请编程确定比赛的名次;

    #include<stdio.h>
    #include<stdlib.h>
    //判断组内的值是否有重复的
    int is_repeat(int arr[]) {
     int i, j;
     for (i = 0; i < 5; i++) {
      for (j = i + 1; j < 5; j++) {
       if (arr[i] == arr[j]) {
        return 0;
       }
      }
     }
     return 1;
    }
    int main() {
   int arr[5] = { 0 };
     //用arr[0]-arr[4]表示A,B,C,D,E这五个选手;
     //arr这个数组的值来表示他们的名次
     for (arr[0] = 1; arr[0] <= 5; ++arr[0]) {
      for (arr[1] = 1; arr[1] <= 5; ++arr[1]) {
       for (arr[2] = 1; arr[2] <= 5; ++arr[2]) {
        for (arr[3] = 1; arr[3] <= 5; ++arr[3]) {
         for (arr[4] = 1; arr[4] <= 5; ++arr[4]) {
          if ((arr[0] == 3) + (arr[1] == 2) == 1 && (arr[4] == 4) + (arr[1] == 2) == 1 && (arr[2] == 1) + (arr[3] == 2) == 1
           && (arr[2] == 5) + (arr[3] == 3) == 1 && (arr[4] == 4) + (arr[0] == 1) == 1) {
            if (is_repeat(arr) != 0) {
             printf("A:%d B:%d C:%d D:%d E:%d\n", arr[0], arr[1], arr[2], arr[3], arr[4]);
             break;
            }
          }
         }
        }
       }
      }
     }
     system("pause");
     return 0;
    }

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。
以下为四个嫌疑犯的供词
A说:不是我.
B说:是C
C说:是D
D说:C在胡说
已知3个人说了真话,1个人说的是假话。
现在请根据这些信息,写一个程序来确定到底谁是凶手

#include<stdio.h>
 #include<stdlib.h>
int main() {
 int a, b, c, d;
 char killer;
 for (killer = 'a'; killer <= 'd'; killer++) {
  if (((killer != 'a') + (killer == 'c') + (killer == 'd') + (killer != 'd')) == 3) {
   printf("%c是凶手!\n", killer);
   break;
  }
 }
 system("pause");
 return 0;
}

在屏幕上打印杨辉三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
:::::
要求输出十行。

#include<stdio.h>
#include<stdlib.h>
int main() {
 int i, j,n;
 int a[10][10];
 printf("请输入要打印的行数:");
  scanf("%d", &n);
 for (i = 0; i < n; i++) {
  a[i][0] = 1;
  if (i > 0) {
  a[i][i] = 1;
  }
  if (i >= 2) {
   for (j = 1; j < i; j++) {
    a[i][j] = a[i - 1][j] + a[i - 1][j - 1];
   }
  }
 }
 for (i = 0; i < 10; i++) {
  for (j = 0; j < i + 1; j++) {
   printf("%4d ", a[i][j]);
  }
  printf("\n");
 }
 system("pause");
 return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值