一些有趣的编程题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一些有趣的编程题相关的知识,希望对你有一定的参考价值。

第一个是查找矩阵中的数字//递增矩阵查找k
第二个是猜测五个跳水中的名次//
第三个是调整数组奇数偶数//
第四个是喝水问题//``
第五个是水仙花问题//
第六个是打印菱形问题//

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//int find(int arr[3][3], int k, int row, int col)
//{
//  int x = 0;
//  int y = col - 1;
//  while (x <= row - 1 && y >= 0)
//  {
//      if (arr[x][y] > k)
//      {
//          y--;
//      }
//      else if (arr[x][y] < k)
//      {
//          x++;
//      }
//      else 
//      {
//          return 1;
//      }
//  }
//  return 0;
//}
//int main()
//{
//  int arr[][3] = { {1,2,3},{4,5,6},{7,8,9} };
//  int k = 7;
//  int ret = find(arr, k, 3, 3);
//  if (ret == 1)
//      printf("找到了");
//  //printf("下标是%d%d", arr);
//  else
//      printf("找不到");
//}
//int main()
//{
//  int a = 0, b = 0, c = 0, d = 0, e = 0;
//  for (a = 1; a <= 5; a++)
//  {
//      for (b = 1; b <= 5; b++) 
//      {
//          for (c = 1; c <= 5; c++) {
//              for (d = 1; d <= 5; d++)
//              {
//                  for (e = 1; e <= 5; e++)
//                  {
//                      if ((b == 2) + (a == 3) == 1 &&
//                          (b == 2) + (e == 4) == 1 &&
//                          (c == 1) + (d == 2) == 1 &&
//                          (c == 5) + (d == 3) == 1 &&
//                          (e == 4) + (a == 1) == 1
//                          )
//                      {
//                          if (a * b * c * d * e == 120)
//                              printf("a=%d b=%d c=%d d=%d e=%d",a,b,c,d,e);
//                      }
//                  }
//              }
//          }
//      }
//  }
//}
//void change(int* arr, int sz)
//{
//  int left = 0;
//  int right = sz-1;
//  while (left < right)
//  {
//      while (left < right && arr[left] % 2 == 1)
//      {
//          left++;
//
//      }
//      while (left < right && arr[right] % 2 == 0)
//      {
//          right--;
//      }
//      if (left < right)
//      {
//          int temp = arr[left];
//          arr[left] = arr[right];
//          arr[right] = temp;
//      }
//  }
//}
//int main()
//{
//  int arr[] = { 1,2,3,4,5,6,7,8,9 };
//  int sz = sizeof(arr) / sizeof(arr[0]);
//  change(arr, sz);
//  int i = 0;
//  for (i = 0; i < sz - 1; i++) 
//  {
//      printf("%d", arr[i]);
//  }
//  
//}
//20
//20   10   5  2  2
//int main()
//{
//  int money = 0;
//  int count = 0;
//  int empty = 0;
//  scanf("%d", &money);
//  count = money;
//  empty = money;
//  while (empty>=2)
//  {
//      count+=empty/ 2;
//      empty = empty / 2 + empty % 2;
//
//  }
//  //count = count + count;
//  printf("%d", count);
//}
#include<math.h>
//void flower(int i)
//{
//  i = 0;
//  for (i = 0; i < 100000; i++)
//  {
//      int n = 1;//位数
//      int temp = i;
//      int sum = 0;
//      while (temp / 10)
//      {
//          n++;
//      }
//      //计算i位的每位幂次方的和
//      temp = i;
//      while (temp)
//      {
//          temp = temp % 10;
//          sum +=(int) pow(temp, n);
//          temp /= 10;
//      }
//      //判断是否相等
//      if (sum == i) 
//      {
//          printf("%d", i);
//      }
//  }
//}
//int main()
//{
//  int i = 0;
//  for (i = 0; i < 100000; i++)
//  {
//      int n = 1;//位数
//      int temp = i;
//      int sum = 0;
//      while (temp / 10)
//      {
//          n++;
//          temp = temp / 10;
//      }
//      //计算i位的每位幂次方的和
//      temp = i;
//      while (temp)
//      {
//          sum += (int)pow(temp%10, n);
//          temp /= 10;
//      }
//      //判断是否相等
//      if (sum == i)
//      {
//          printf("%d
", i);
//      }
//  }
//}
int main()
{
    int line = 0;
    scanf("%d", &line);
    //打印上半部分
    int i = 0;
    for (i = 0; i < line; i++)
    {
        //打印空格
        int j = 0;
        for (j = 0; j < line - 1-i; j++)
        {
            printf(" ");
        }
        //打印*
        for (j = 0; j < 2 * i + 1; j++)
        {
            printf("*");
        }
        printf("
");
    }
    //打印下部分
    for (i = 0; i < line - 1; i++)
    {
        int j = 0;
        //打印空格
        for (j = 0; j <= i; j++)
        {
            printf(" ");
        }
        //打印*
        for (j = 0; j < 2 * (line - 1 - i) - 1; j++)
        {
            printf("*");
        }
        printf("
");
    }
    return 0;
}

以上是关于一些有趣的编程题的主要内容,如果未能解决你的问题,请参考以下文章

有趣的css面试题

有趣的 C++ 代码片段,有啥解释吗? [复制]

算法编程题积累——腾讯笔试"有趣的数字“问题

php 有趣的代码片段在某些时候可能会有用。

一道有趣的和编程无关的编程题思考

腾讯2017年暑期实习生编程题有趣的数字Python