目录
目录
C语言基础与数据类型
核心概念:
用户输入
条件表达式简写
switch语句
C语言数组
嵌套循环
C语言函数
结构体
指针
首页 后端开发 C++ C语言从0开始

C语言从0开始

Apr 03, 2025 pm 08:24 PM
c语言 ai switch 字符串数组 c语言编程 2025

C语言从0开始

C语言学习起步可能略显困难,但掌握正确方法后,您将快速掌握基础并逐步精通。本指南将引导您循序渐进地学习C语言核心概念,从基础知识到高级主题。

目录

  1. C语言基础与数据类型
  2. 用户输入
  3. 条件表达式简写
  4. switch语句
  5. C语言数组
  6. 嵌套循环
  7. C语言函数
  8. 结构体
  9. 指针

C语言基础与数据类型

C程序遵循标准结构,并使用多种数据类型定义变量。基本程序结构如下:

#include <stdio.h>

int main() {
    printf("hello, world!");
    return 0;
}
登录后复制

核心概念:

  • 数据类型:
    • int:整数(例如 int x = 10;)。
    • floatdouble:单精度和双精度浮点数(例如,float pi = 3.14;)。
    • char:单个字符或ASCII码(例如,char letter = 'a';)。
    • bool:布尔值(truefalse,需包含 <stdbool.h> 头文件)。
// 数据类型示例:
int a = 40; // 整数 (4字节)
short int b = 32767; // 短整型 (2字节,范围:-32768到32767)
unsigned int c = 4294967295; // 无符号整数 (4字节,范围:0到4294967295)
float d = 9.81; // 单精度浮点数 (4字节,精度6-7位,格式:%f)
double e = 3.141592653589793; // 双精度浮点数 (8字节,精度15-16位,格式:%lf)
bool f = true; // 布尔值 (1字节,true/false,格式:%d,其中1=true,0=false)
char g = 'e'; // 字符 (1字节,可用于字符或数字)
char h = 100; // 字符 (1字节,格式:%d表示数字,%c表示ASCII码,范围:-128到127)
char name[] = "example"; // 字符串

// 变量声明和初始化
int age; // 声明
age = 5; // 初始化
char language = 'c'; // 声明和初始化

// 显示变量
printf("你%d岁了", age); // 整数
printf("你好 %s", name); // 字符串
printf("你现在正在学习 %c", language); // 字符

// 格式说明符:%d -> int, %s -> string, %c -> char, %f -> float, %.(numberofdecimals)f -> 带指定小数位的浮点数
登录后复制
  • 运算符:
/*
  = 加法
- = 减法
* = 乘法
/ = 除法
% = 取模
   = 自增1
-- = 自减1
*/

// 结果需要存储在与结果类型匹配的变量中

// 数据类型转换:
int x = 5;
int y = 2;

float z = 5/2; // 错误结果,因为x和y是整数

float z = 5 / (float)2; // 正确方法

// 单变量自增:
int x = 4;

x  = 2; // x = 6
x -= 2; // x = 4
x *= 2; // x = 8
x /= 2; // x = 4
登录后复制

用户输入

在VS Code中,需要从“输出”切换到“终端”窗口运行程序,因为终端接收用户输入。

int age;
char name[25];

// 用户输入整数:
printf("你几岁了?\n"); // 显示提示信息
scanf("%d", &age); // 指定数据类型和变量名
printf("你%d岁了", age);

// 用户输入字符串(字符数组):
printf("你的名字是?");
scanf("%s", name);
printf("你好 %s,你好吗?", name);

/*
scanf() 不读取空格,如果需要输入姓名和姓氏,可以使用fgets函数:
结构:
fgets(变量名, 大小, stdin)
*/

fgets(name, 25, stdin); // fgets 也包含结尾的'\n'
登录后复制

C语言区分大小写 如果需要大写值,可以修改用户输入以获得正确的值。例如:

#include <ctype.h>

// 我们要求用户输入大写F或大写C
char unit;

printf("温度是摄氏度(c)还是华氏度(f)?");
scanf(" %c", &unit); // 注意%c前的空格,用于去除前导空格

// 修改用户输入:
unit = toupper(unit);

// 现在,即使用户输入小写c或f,我们也保存大写值到unit

if(unit == 'C'){
    printf("温度目前是摄氏度。");
}
else if (unit == 'F'){
    printf("温度目前是华氏度。");
}
else{
    printf("%c 不是正确的值", unit);
}
登录后复制

条件表达式简写

C语言使用三元运算符简化if-else条件语句:

int max = (a > b) ? a : b;
登录后复制

等价于:

if (a > b) {
    max = a;
} else {
    max = b;
}
登录后复制

这是一种简洁高效的编写简单条件逻辑的方法。


switch语句

switch语句允许处理变量的多个可能值:

char grade = 'a'; // 声明变量'grade'并初始化为'a'

switch (grade) { // 开始switch语句检查'grade'的值
    case 'a': // 如果'grade'是'a'
        printf("优秀!\n"); // 打印"优秀!"
        break; // 退出switch语句
    case 'b': // 如果'grade'是'b'
        printf("良好!\n"); // 打印"良好!"
        break; // 退出switch语句
    default: // 如果'grade'不是'a'或'b'
        printf("下次加油。\n"); // 打印"下次加油。"
}
登录后复制

始终包含default情况处理意外值。


C语言数组

数组是内存中按顺序存储的相同类型变量的集合。例如:

int numbers[5] = {10, 20, 30, 40, 50};
登录后复制

核心概念:

  • 访问元素: 使用数组索引,从0开始:
printf("%d", numbers[0]); // 打印10
登录后复制
  • 二维数组: 类似矩阵或网格:
int matrix[2][3] = { // 声明一个2行3列的二维数组'matrix'
    {1, 2, 3}, // 初始化第一行
    {4, 5, 6}  // 初始化第二行
};
登录后复制
  • 字符串数组: 数组也可以存储字符串:
// 声明一个字符串数组'cars',每个字符串最大长度为10个字符
char cars[][10] = {"bmw", "tesla", "toyota"};
登录后复制

数组广泛用于处理数据列表、网格或表格。


嵌套循环

嵌套循环是指一个循环包含另一个循环,通常用于处理网格或重复模式:

for (int i = 0; i < 5; i  ) {
    for (int j = 0; j < 10; j  ) {
        printf("*");
    }
    printf("\n");
}
登录后复制

这非常适合处理多维数组或创建复杂的输出。


C语言函数

函数允许代码复用。例如:

void greet() {
    printf("hello, world!\n");
    printf("欢迎学习C语言编程。\n");
    printf("让我们开始编码吧!\n");
}

int main() {
    greet();
    return 0;
}
登录后复制

函数可以接受参数使其更灵活:

void greet(char name[]) {
    printf("你好,%s!\n", name);
}

int main() {
    greet("Alice");
    return 0;
}
登录后复制

使用函数有助于保持代码组织性和可重用性。


结构体

结构体(struct)将相关变量组合在一个名称下:

// 定义一个名为'player'的结构体,包含两个成员
struct player {
    char name[50]; // 字符数组'name'存储玩家姓名 (最多50个字符)
    int score; // 整数'score'存储玩家分数
};

// 创建一个'player'结构体的实例并初始化
struct player player1 = {"Alice", 100}; // 初始化'player1',姓名为"Alice",分数为100

// 打印玩家姓名和分数
printf("姓名:%s,分数:%d", player1.name, player1.score); // 输出:姓名:Alice,分数:100
登录后复制

结构体通常用于创建复杂的数据模型,例如记录或对象。


指针

指针是存储内存地址的变量,可以实现高效的数据处理:

int value = 42; // 声明一个整数变量'value'并初始化为42
int *ptr = &value; // 声明一个指向整数的指针变量'ptr'并将其初始化为'value'的地址
printf("值:%d,地址:%p", *ptr, ptr); // 打印'ptr'指向的值和'ptr'存储的地址
登录后复制

指针对于C语言中的动态内存分配和底层操作至关重要。


学习C语言并积累了这些实用信息。掌握这些概念将为您的C语言编程打下坚实的基础。将本指南作为参考,并定期练习,您将很快从初学者成长为C语言专家。祝您编程愉快!

以上是C语言从0开始的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1662
14
CakePHP 教程
1418
52
Laravel 教程
1311
25
PHP教程
1261
29
C# 教程
1234
24
全球币圈十大交易所有哪些 排名前十的货币交易平台2025 全球币圈十大交易所有哪些 排名前十的货币交易平台2025 Apr 28, 2025 pm 08:12 PM

2025年全球十大加密货币交易所包括Binance、OKX、Gate.io、Coinbase、Kraken、Huobi、Bitfinex、KuCoin、Bittrex和Poloniex,均以高交易量和安全性着称。

芝麻开门官网入口 芝麻开门官方最新入口2025 芝麻开门官网入口 芝麻开门官方最新入口2025 Apr 28, 2025 pm 07:51 PM

芝麻开门是重点加密货币交易的平台,用户可以通过官方网站或社交媒体获取入口,确保访问时验证SSL证书和网站内容的真实性。

排名靠前的货币交易平台有哪些 最新虚拟币交易所排名榜前10 排名靠前的货币交易平台有哪些 最新虚拟币交易所排名榜前10 Apr 28, 2025 pm 08:06 PM

目前排名前十的虚拟币交易所:1.币安,2. OKX,3. Gate.io,4。币库,5。海妖,6。火币全球站,7.拜比特,8.库币,9.比特币,10。比特戳。

全球币圈十大交易所有哪些 排名前十的货币交易平台最新版 全球币圈十大交易所有哪些 排名前十的货币交易平台最新版 Apr 28, 2025 pm 08:09 PM

全球十大加密货币交易平台包括Binance、OKX、Gate.io、Coinbase、Kraken、Huobi Global、Bitfinex、Bittrex、KuCoin和Poloniex,均提供多种交易方式和强大的安全措施。

排名前十的虚拟币交易app有哪 最新数字货币交易所排行榜 排名前十的虚拟币交易app有哪 最新数字货币交易所排行榜 Apr 28, 2025 pm 08:03 PM

Binance、OKX、gate.io等十大数字货币交易所完善系统、高效多元化交易和严密安全措施严重推崇。

如何理解C  中的DMA操作? 如何理解C 中的DMA操作? Apr 28, 2025 pm 10:09 PM

DMA在C 中是指DirectMemoryAccess,直接内存访问技术,允许硬件设备直接与内存进行数据传输,不需要CPU干预。1)DMA操作高度依赖于硬件设备和驱动程序,实现方式因系统而异。2)直接访问内存可能带来安全风险,需确保代码的正确性和安全性。3)DMA可提高性能,但使用不当可能导致系统性能下降。通过实践和学习,可以掌握DMA的使用技巧,在高速数据传输和实时信号处理等场景中发挥其最大效能。

C  中的chrono库如何使用? C 中的chrono库如何使用? Apr 28, 2025 pm 10:18 PM

使用C 中的chrono库可以让你更加精确地控制时间和时间间隔,让我们来探讨一下这个库的魅力所在吧。C 的chrono库是标准库的一部分,它提供了一种现代化的方式来处理时间和时间间隔。对于那些曾经饱受time.h和ctime折磨的程序员来说,chrono无疑是一个福音。它不仅提高了代码的可读性和可维护性,还提供了更高的精度和灵活性。让我们从基础开始,chrono库主要包括以下几个关键组件:std::chrono::system_clock:表示系统时钟,用于获取当前时间。std::chron

MySQL批量插入数据的高效方法 MySQL批量插入数据的高效方法 Apr 29, 2025 pm 04:18 PM

MySQL批量插入数据的高效方法包括:1.使用INSERTINTO...VALUES语法,2.利用LOADDATAINFILE命令,3.使用事务处理,4.调整批量大小,5.禁用索引,6.使用INSERTIGNORE或INSERT...ONDUPLICATEKEYUPDATE,这些方法能显着提升数据库操作效率。

See all articles