Skip to content

数组

  • 声明数组必须要去顶数组长度
c
#include <stdio.h>

int main() {
    // 主动声明长度
    int arr1[3] = {1, 3, 5};

    // 长度由内容确定
    int arr2[] = {2, 4, 6, 8};
}

遍历数组

同其他编程语言一样, 但是在c语言中,无法直接获取数组的长度, 比如js的 arr.length 属性, 需要手动声明需要遍历多少次, 所以我推荐, 在使用数组的时候, 先声明数组的长度

c
#include <stdio.h>

int main() {
    int arr[] = {2, 4, 6, 8};
    for (int i = 0; i<4; i++) {
        printf("arr[%d] = %d\n", i, arr[i]);
    }
}
c
#include <stdio.h>

int main() {
    int len = 4;
    int arr[len] = {2, 4, 6, 8};
    for (int i = 0; i<len; i++) {
        printf("arr[%d] = %d\n", i, arr[i]);
    }
}

字符串

字符串的本质就是 char 数组(默认在最后增加了一个 '\0' 的元素)

c
#include <stdio.h>

int main() {
    // 直接声明字符串
    char str1[] = "hello";
    printf("str1 %s\n", str1);

    // 使用数组声明字符串, 注意最后一个元素
    char str2[] = {'h', 'e', 'l', 'l', 'o', '\0'};
    printf("str2 %s\n", str2);
}

获取字符串长度

注意需要导入头文件

c
#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "hello";
    int len    = strlen(str);
    printf("arr length is %d \n", len); // 5
}

获取用户输入

c
#include <stdio.h>

int main() {
  // 获取用户输入(数字)
  int num;
  scanf("%d", &num);
  printf("your input is: %d \n", num);

  // 获取用户输入(浮点数)
  float fnum;
  scanf("%f", &fnum);
  printf("your input is: %f \n", fnum);
}

猜数字游戏

c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// 可以先不管这些是什么,只需要知道
// 这个方法生成指定范围内的随机数字
int range(int min, int max) {
  srand(time(NULL));
  return rand() % (max - min + 1) + min;
}

int main() {
  printf("===== 猜数字游戏 =====\n");

  // 数字范围
  int min = 1;
  int max = 9;

  // 谜底数字
  int secret_num = range(min, max);

  // 输入次数控制
  int guess_changes = 3;
  printf("请输入一个数字(%d-%d), 你有%d次机会\n", min, max, guess_changes);

  for (int i = 0; i < guess_changes; i++) {
    // 获取用户输入(数字)
    int input_num;
    scanf("%d", &input_num);

    if (input_num > secret_num) {
      printf("你猜的数字太大了\n");
    } else if (input_num < secret_num) {
      printf("你猜的数字太小了\n");
    } else {
      printf("恭喜你猜对了, 你赢了\n");
      break;
    }

    if (i == guess_changes - 1) {
      printf("很遗憾, 你的机会用完了\n");
    }
  }
}

Released under the MIT License.