【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;
}
目录
相关文章
|
11月前
|
搜索推荐 程序员 C语言
C语言的总结与感悟
C语言的总结与感悟
513 0
|
5月前
|
C语言
C语言必备练习(含详细理解:适用于初学者)
C语言必备练习(含详细理解:适用于初学者)
29 2
|
存储 Java 编译器
c语言学习第一课-初识c语言
c语言学习第一课-初识c语言
98 0
c语言学习第一课-初识c语言
|
C语言 数据安全/隐私保护
课程设计(C语言)部分讲解
课程设计(C语言)部分讲解
42 0
|
存储 算法 C语言
【c语言技能树】文件
使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化。
120 0
|
算法 程序员 人机交互
什么?这样自学C语言能事半功倍?
什么?这样自学C语言能事半功倍?
97 0
|
机器学习/深度学习 C语言
C语言练手题(52个小练习)2
C语言练手题(52个小练习)2
310 0
|
C语言
C语言练手题(52个小练习)1
C语言练手题(52个小练习)
275 0
|
Java 程序员 C#
【C语言学习-复习_第一课】什么是C语言?什么是计算机语言?
人与人之间交流需要使用语言,中国人和中国人之间使用汉语,其他国家之间的交流也需要使用其他国家的语言,计算机也要进行交流,他们使用哪种语言了?当然有人说使用汉语,呼叫某某某小助手可以帮助我们进行和计算机交流,但是某某某小助手是通过怎样实现的,也是程序员使用中文和计算机对话设计出来的吗?当但不是了。这样的话我们人人都是程序员,人人都是大佬!
68 0
|
存储 Java 程序员
【C语言】关于我回头学的那些基础语法(一)
我的第一门语言就是C,但是学艺不精,中途跑去学了C#和Java后,感觉到了C的重要性,毕竟是最接近底层的语言,又跑回来学C。 毕竟前两门的控制语句,变量什么的都是类似的,回到C后只需要学习一些特定C的语法,比如宏,预编译指令等等,这些对我来说都是陌生的词汇。 所以边学边记录一下陌生的知识。
140 0