C语言入门:阶段性总结_c语言4个阶段

不知不觉种,C语言入门的文章写了30多篇。

到目前为止,我们知道怎么编写一个程序,知道怎么实现一个具有增、删、改、查、打印、保存功能的成绩管理程序。

今天可以做一个阶段性的总结了。

一、C程序语句主要有以下14种:

C程序的语句由分号结尾,多条语句可以写在同一行。

如下面的程序:

可以写成如下形式也是对的:

显而易见,第一种形式更加简洁醒目。

再例如:

甚至可以写成:

但哪种形式更好看呢?

二、C程序的数据类型:

  1. 基本数据类型:

整型、实型、字符型。

  1. 构造数据类型:

数组、结构体。

  1. 指针类型
  2. 空类型

空类型即void。

三、C程序的表达式:

1、算术表达式

2、赋值表达式

3、关系表达式

4、逻辑表达式

5、条件表达式

6、逗号表达式

四、一个简单的游戏

以下是一个小游戏,一个火柴人,当你按下R键时,它会往右边走,按下S键时停止,按Q退出游戏。

代码如下:

这个程序调用了某些系统函数,用来读取用户输入的按键,执行起来结果如图:

以下代码可以直接复制运行:

#include <stdio.h>

#include <conio.h> // 用于_kbhit()和_getch()

#include <windows.h> // 用于Sleep()

// 清除控制台屏幕

void clearScreen() {

system("cls");

}

// 绘制火柴人站立状态

void drawStandingMan(int position) {

// 清除之前的位置

for (int i = 0; i < 10; i++) {

printf("\n");

}

// 设置水平位置

for (int i = 0; i < position; i++) {

printf(" ");

}

printf(" O\n"); // 头

for (int i = 0; i < position; i++) {

printf(" ");

}

printf("/|\\\n"); // 身体和手臂

for (int i = 0; i < position; i++) {

printf(" ");

}

printf("/ \\\n"); // 腿

}

// 绘制火柴人奔跑状态1

void drawRunningMan1(int position) {

for (int i = 0; i < 10; i++) {

printf("\n");

}


for (int i = 0; i < position; i++) {

printf(" ");

}

printf(" O\n");


for (int i = 0; i < position; i++) {

printf(" ");

}

printf("/|\\\n");


for (int i = 0; i < position; i++) {

printf(" ");

}

printf(" |_\n");

}

// 绘制火柴人奔跑状态2

void drawRunningMan2(int position) {

for (int i = 0; i < 10; i++) {

printf("\n");

}


for (int i = 0; i < position; i++) {

printf(" ");

}

printf(" O\n");


for (int i = 0; i < position; i++) {

printf(" ");

}

printf("/|\\\n");


for (int i = 0; i < position; i++) {

printf(" ");

}

printf("_| \n");

}

int main() {

int position = 5; // 初始位置

int isRunning = 0; // 0表示停止,1表示奔跑

int frame = 0; // 动画帧

printf("按 R 键开始奔跑,按 S 键停止,按 Q 键退出\n");

while (1) { // 检查键盘输入

if (_kbhit()) {

char key = _getch();

key = toupper(key);

if (key == 'R') { isRunning = 1; }

else if (key == 'S') { isRunning = 0; }

else if (key == 'Q') { break; } // 退出游戏

}

// 更新位置和动画

clearScreen();

if (isRunning) {

position++; // 向右移动

// 交替显示两种奔跑姿势

if (frame % 2 == 0) {

drawRunningMan1(position);

} else {

drawRunningMan2(position);

}

frame++;

} else {

drawStandingMan(position);

}

// 显示控制提示

printf("\n当前状态: %s", isRunning ? "奔跑中" : "站立中");

printf("\n位置: %d", position);

printf("\n控制: R-跑 S-停 Q-退出");

// 控制动画速度

Sleep(100);

} return 0;

}

C语言入门的文章就写到这里,有兴趣的朋友可以慢慢学,如果还想学习更深入的知识可以留言。

这个系列文章暂时告一段落,谢谢大家这么长时间的陪伴与鼓励。

相关文章

cython如何调用C语言的函数?_c 中如何调用python

在 Cython 中调用 C 语言函数主要通过以下几种方式实现:1. 使用 cdef extern 声明外部 C 函数基本语法cdef extern from "头文件.h":返回类型...

C/C++函数调用的奥秘_c++函数调用原理

在C/C++编程的世界里,函数调用是程序运行的核心机制之一。然而,许多程序员在日常开发中,往往只关注代码的逻辑,而忽略了函数调用背后的底层细节。今天,就让我们一起深入探索C/C++函数调用的全过程,从...

C++成员函数如何工作?this指针、name mangling 成员函数指针解析

0.引言 在C++面向对象编程中,成员函数是对象行为的核心载体。我们每天都在使用成员函数,但却很少深入思考其底层的实现机制:为什么成员函数可以直接访问成员变量?编译器如何区分不同类的同名函数?静态成员...

C语言应用笔记:常用的printf打印输出不同类型数据

我叫程序员阿虾, 在终端前摸过太多凌晨, 熟悉printf这一行字带来的安心与危险。今天想跟你聊聊我踩过的坑, 和一些别人不常说的细节, 用第一人称把经验交给你, 有点唠叨, 希望你少走弯路。为什么要...

C语言应用笔记:简单的最大最小值比较

使用宏定义实现泛型比较函数,用于求取两个值的最大值和最小值。核心宏定义解析#define MAX(x, y) ((x) > (y) ? (x) : (y)) // 返回两个值中较大的一个 #de...

C语言应用笔记:一种使用显示索引定义数组成员的方法

在嵌入式系统或应用程序开发中,经常需要将一些整型索引(如状态码、错误码、类型标识)映射到对应的可读字符串或配置数据。我们可以结合枚举和数组来创建一种类型安全、可读性极高且易于维护的查找表。示例代码ty...