题目num2

简介: 题目num2

一、C语言的一些有意思的题目

1.第一题

见题目:

一个小球从100米高度自由落下,每次反弹后回原高度的一半,再落下,再反弹,假设小球反弹高度低于10^-6米时视为小球静止,请问从落下到静止,小球反弹了多少次,经过的多少米?

#include<stdio.h>
#include<math.h>
int main()
{
  double h = 100;
  int count = 0;
  double sum = 0;
  while (h  >= pow(10, -6))
  {
    sum += 2*h;
    count++;
    h /= 2.0;
  }
  printf("小球此时静止:\n");
  printf("反弹的次数为%d\n",count);
  printf("小球经过了%.4lf米",sum-100);
  return 0;
}

使用for循环解答也是一样

2.第二个题目:

关于图形(实心菱形)的打印:

71.png


#include<stdio.h>
int main()
{
  int i,j, n;
  scanf("%d",&n);
  for (i = 0; i < n; i++)
  {
    for (j = 0; j < n-i-1; j++)
    {
      printf(" ");
    }
    for (j = 0; j < 2 * i+1 ; j++)   
    {
      printf("*");
    }
    printf("\n");
  }
  //下半部分
  for (i = 0; i < n; i++)
  {
    for (j = 0; j <= i; j++)    
    {
      printf(" ");
    }
    for (j = 0; j < 2 * (n - i-1 )-1; j++) 
    {
      printf("*");
    }
    printf("\n");
  }
  return 0;
}

3.第三个题目:

关于图形(空心菱形)的打印:

72.png

![#include<stdio.h>
int main()
{
  int i, j, n;
  scanf("%d",&n);
  //先打印上半部分
  for (i = 1; i <= n; i++)
  {
    for (j = 1; j <= n + i - 1; j++)
    {
      if (j == n - i + 1 || j == n + i - 1)//n-i+1 表示的是每行第一个*的位置
                                         //n+i-1 表示的是每行最后一个*的位置
      {
        printf("*");
      }
      else
      {
        printf(" ");
      }
    }
    printf("\n");
  }
  //再打印下半部分(但是要注意的是下半部分比上半部分少一行)
  for (i = 1; i < n; i++)
  {
    for (j = 1; j <= 2 * n - i - 1; j++)
    {
      if (j == i + 1 || j == 2 * n - i - 1)//i+1: i从第一行算起,*号位于i+1的位置
      {                                    //2*n-i-1: 这样是为了得到一行的元素的个数,于是最后一个*的位置
        printf("*");
      }
      else
      {
        printf(" ");
      }
    }
    printf("\n");
  }
  return 0;
}](https://ucc.alicdn.com/images/user-upload-01/59198b664153446a9d086cb01eeaf620.png)

4.第四个题目是关于,杨氏三角的另一种方法:

#include<stdio.h>
int main()
{
  int i, j, n;
  int arr[10][10] = { 0 };
  scanf("%d",&n);
  for (i = 0; i < n; i++)
  {
    for (j = 0; j <= i; j++)
    {
      if (i == j || 0 == j)
      arr[i][j] = 1;
      else
      arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
    }
  }
  for (i = 0; i < n; i++)
  {
    for (j = 0; j <= i; j++)
    {
      printf("%d ",arr[i][j]);
    }
    printf("\n");
  }
  return 0;
}

73.png


5.第五个题目:

求Sa-ataaaa…aa a之值,其中a是- -个数字,n表示a的位数, n由键盘输入。例如: 2+2222222+22222 (此时 n=5)。

(1.)这个就是要 ret = ret * 10 + a;注意这个的小算法就行

#include<stdio.h>
int main()
{
  int a, n, i;
  int sum = 0;
  int ret = 0;
  scanf("%d %d", &a, &n);
  for (i = 0; i < n; i++)
  {
    ret = ret * 10 + a;
    printf("%d ",ret);
    sum += ret;
  }
  printf("\n");
  printf("%d\n", sum);
  return 0;
}

6.第六个题目:

关于喝汽水问题:

题目:汽水题目(有20块钱,汽水一块钱一瓶,且两个空瓶可以换一瓶汽水,问你能喝几瓶,用代码实现)

#include<stdio.h>
int main()
{
  int money = 0;
  int empty = 0;
  int bottle = 0;
  scanf("%d",&money);
  //因为汽水一块钱一瓶
  bottle = money;
  empty = bottle;
  while (empty >= 2)
  {
    bottle = bottle + empty / 2;
    empty = empty / 2 + empty % 2;
  }
  printf("最多可以喝%d瓶饮料",bottle);
  return 0;
}


相关文章
|
7月前
|
人工智能 Java
HDU-1003- Max Sum (动态规划)
HDU-1003- Max Sum (动态规划)
37 0
|
机器学习/深度学习
[LeeCode][动态规划][简单] 杨辉三角
[LeeCode][动态规划][简单] 杨辉三角
58 0
P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles
P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles
每日一题---786. 第 K 个最小的素数分数[力扣][Go]
每日一题---786. 第 K 个最小的素数分数[力扣][Go]
每日一题---786. 第 K 个最小的素数分数[力扣][Go]
LeetCode 167:两数之和 II - 输入有序数组 Two Sum II - Input array is sorted
公众号: 爱写bug(ID:icodebugs) 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。
975 0