【C语言】:练手题

简介: 【C语言】:练手题

题目1:

思路:我们定义两个变量left和right分别为数组的左端下标和右端下标。
左端下标的元素为奇数时,left++继续往前走,为偶数时就停下
右端下标的元素为偶数时,right- -往回走,为奇数时停下
停下后对应的元素交换。

代码实现如下:

#include <stdio.h>
void Num_round(int arr[], int sz)
{
  int left = 0;
  int right = sz - 1;
  while (left < right)
  {
    //1.left指向为奇数,往前走,遇到偶数停下来
    while (left < right && arr[left] % 2 != 0)
    {
      left++;
    }
    //2..right指向为偶数,往后走,遇到奇数停下来
    while (left < right && arr[right] % 2 == 0)
    {
      right--;;
    }
    //3.停下来后两者进行交换
    int tmp = arr[left];
    arr[left] = arr[right];
    arr[right] = tmp;
  }
}
int main()
{
  int arr[] = { 1,2,3,4,5,6,7 };
  int sz = sizeof(arr) / sizeof(arr[0]);
  Num_round(arr, sz);
  for (int i = 0; i < sz; i++)
  {
    printf("%d ", arr[i]);
  }
  return 0;
}

题目2:

思路:只有当空瓶>1个时,才可以换饮料:

代码实现如下:

#include <stdio.h>
int main()
{
  int money = 0;
  scanf("%d", &money);
  int empty = money;
  int total = money;
  while (empty > 1)
  {
    total = total + empty / 2;
    empty = empty / 2 + empty % 2;
  }
  printf("%d\n", total);
  return 0;
}

题目3:

思路:通过观察每一项,我们可知:

代码实现如下:

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

题目4:

思路:
这里需要注意的是右移的位数。

#include <stdio.h>
 void Func(int n)
{
  //偶数位
  for (int i = 31; i >= 1; i-=2)
  {
    printf("%d ", (n >> i) & 1);
  }
  printf("\n");
  //奇数位
  for (int i = 30; i >= 0; i -= 2)
  {
    printf("%d ", (n >> i) & 1);
  }
}
int main()
{
  int n = 0;
  scanf("%d", &n);
  Func(n);
  return 0;
}
目录
相关文章
|
8月前
|
搜索推荐 程序员 C语言
C语言的总结与感悟
C语言的总结与感悟
384 0
|
9月前
|
C语言
入门学习C语言的一些建议
入门学习C语言的一些建议
|
8天前
|
存储 程序员 Go
|
2月前
|
C语言
C语言必备练习(含详细理解:适用于初学者)
C语言必备练习(含详细理解:适用于初学者)
17 2
|
8月前
|
C语言
(前章)C语言入门铺垫篇(一)
(前章)C语言入门铺垫篇(一)
|
11月前
|
存储 Java 编译器
c语言学习第一课-初识c语言
c语言学习第一课-初识c语言
89 0
c语言学习第一课-初识c语言
|
11月前
|
C语言 数据安全/隐私保护
课程设计(C语言)部分讲解
课程设计(C语言)部分讲解
32 0
|
12月前
|
Java 编译器 Linux
新手该如何快速上手C语言——什么是C语言?
新手该如何快速上手C语言——什么是C语言?
89 0
|
机器学习/深度学习 C语言
C语言练手题(52个小练习)2
C语言练手题(52个小练习)2
256 0
|
C语言
C语言练手题(52个小练习)1
C语言练手题(52个小练习)
227 0