我用c语言把何同学的代码跑起来了

简介: 我用c语言把何同学的代码跑起来了

原版代码


首先,先来看下视频中何同学的这两段代码:


0e60ca1206da4e07a4275d97759cedff.png17a551f7b3204eb0852b56286733f3af.png


代码分析


首先呢,根据图片中的这两段代码,我猜测他可能是想获取数组中第0,1,5,6,10,51,56,58,64号下标的值。


了解到这个目的后,就可以根据这个需求进行代码编写了。


 forceCon[whichKey - 1] = force
void littleFingerForce(void) {
  powerCon(1 | 2 | 6 | 7 | 11 | 52 | 57 | 58 | 65, 10);
}


代码实现


  • 这段代码是根据B站up主:内田补水彩 的视频实现的
  • c++实现:可看B站up主:摸鱼摸摸鱼鱼
#include <stdio.h>
#include <stdlib.h>
#define u8 unsigned char
#define forceConLength 128               //数组长度
u8 forceCon[forceConLength] = {0};       //SaiBoDingZhen数组
u8 forceCon_tmp[forceConLength] = {0};  //临时缓存数组
u8 indextable[forceConLength] = {0};    //索引数组
u8 r = 0;
u8 q = 0, p = 0, cnt = 0;
/* 从字符串中提取数组,并包含数字索引信息 
  函数返回值作为powerCon函数输入值
*/
int string2nums(char *nums) {
  while(1) {
    while(nums[r] && (nums[r] < '0' || nums[r] > '9')) {
      r++;
    }
    if(nums[r]) {
      p  = r;
      q = r + 1;
      indextable[cnt] = nums[r] - '0';
      while(nums[q] >= '0' && nums[q] <= '9') {
        indextable[cnt] = 10 * indextable[cnt] + (nums[q] - '0');
        q++;
      }
      r = q;
      cnt++;
    } else {
      break;
    }
  }
  return 0;
}
void powerCon(u8 whichKey, u8 force) {
  if(whichKey) 
    forceCon[whichKey - 1] = force;
  else 
    for(u8 i = 0; i < 68; i++)
      forceCon[i] = force;
}
#define powerCon(nums, force) powerCon(string2nums(#nums), force)
void littleFingerForce(void) {
  powerCon(1 | 2 | 6 | 7 | 11 | 52 | 57 | 58 | 65, 10);
}
int main() {
  printf("I am SaiBoDingZhen!\n");
  littleFingerForce();
  /* 向索引位置赋值,其他位置为0 */
  for(u8 k = 0; k < cnt; k++) {
    forceCon_tmp[indextable[k]] = forceCon[indextable[k]];
  }
  /* 向原数组赋值,并打印输出 */
  for(u8 j = 0; j < forceConLength; j++) {
    forceCon[j] = forceCon_tmp[j];
    printf("%d -> %d\n", j, forceCon[j]);
  }
  system("pause");
}

代码执行结果


可以看出,数组的第0,1,5,6,10,51,56,58,64号位置输出结果为10,其他位置为0。


fe65707a1c09452ca9f26ab9b09597a3.png

相关文章
|
2月前
|
存储 编译器 C语言
【数据结构】C语言实现链队列(附完整运行代码)
【数据结构】C语言实现链队列(附完整运行代码)
36 0
|
2月前
|
存储 编译器 C语言
【数据结构】C语言实现带头双向循环链表万字详解(附完整运行代码)
【数据结构】C语言实现带头双向循环链表万字详解(附完整运行代码)
10 0
|
2月前
|
存储 编译器 C语言
【数据结构】C语言实现单链表万字详解(附完整运行代码)
【数据结构】C语言实现单链表万字详解(附完整运行代码)
42 0
|
2月前
|
存储 算法 程序员
【数据结构】C语言实现顺序表万字详解(附完整运行代码)
【数据结构】C语言实现顺序表万字详解(附完整运行代码)
40 0
|
2月前
|
人工智能 BI C语言
【C语言】求两个数的最大公约数和最小公倍数(极简代码版)
【C语言】求两个数的最大公约数和最小公倍数(极简代码版)
16 1
|
2月前
|
存储 编译器 C语言
C语言难?深度剖析第一段C语言代码—带你快速入门C语言
C语言难?深度剖析第一段C语言代码—带你快速入门C语言
40 0
|
2月前
|
算法 安全 C语言
使用C语言实现DES算法代码
使用C语言实现DES算法代码
|
2天前
|
传感器 算法 C语言
C语言在嵌入式系统开发中的优化策略与代码实现
C语言在嵌入式系统开发中的优化策略与代码实现
12 1
|
6天前
|
存储 算法 C语言
C语言进阶:顺序表(数据结构基础) (以通讯录项目为代码练习)
C语言进阶:顺序表(数据结构基础) (以通讯录项目为代码练习)
|
6天前
|
编译器 Linux C语言
C语言:预处理详解(知识点和代码演示)
C语言:预处理详解(知识点和代码演示)