目录
目录
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脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

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

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

了解 ACID 属性:可靠数据库的支柱 了解 ACID 属性:可靠数据库的支柱 Apr 08, 2025 pm 06:33 PM

数据库ACID属性详解ACID属性是确保数据库事务可靠性和一致性的一组规则。它们规定了数据库系统处理事务的方式,即使在系统崩溃、电源中断或多用户并发访问的情况下,也能保证数据的完整性和准确性。ACID属性概述原子性(Atomicity):事务被视为一个不可分割的单元。任何部分失败,整个事务回滚,数据库不保留任何更改。例如,银行转账,如果从一个账户扣款但未向另一个账户加款,则整个操作撤销。begintransaction;updateaccountssetbalance=balance-100wh

mysql 能返回 json 吗 mysql 能返回 json 吗 Apr 08, 2025 pm 03:09 PM

MySQL 可返回 JSON 数据。JSON_EXTRACT 函数可提取字段值。对于复杂查询,可考虑使用 WHERE 子句过滤 JSON 数据,但需注意其性能影响。MySQL 对 JSON 的支持在不断增强,建议关注最新版本及功能。

掌握SQL LIMIT子句:控制查询中的行数 掌握SQL LIMIT子句:控制查询中的行数 Apr 08, 2025 pm 07:00 PM

SQLLIMIT子句:控制查询结果行数SQL中的LIMIT子句用于限制查询返回的行数,这在处理大型数据集、分页显示和测试数据时非常有用,能有效提升查询效率。语法基本语法:SELECTcolumn1,column2,...FROMtable_nameLIMITnumber_of_rows;number_of_rows:指定返回的行数。带偏移量的语法:SELECTcolumn1,column2,...FROMtable_nameLIMIToffset,number_of_rows;offset:跳过

如何针对高负载应用程序优化 MySQL 性能? 如何针对高负载应用程序优化 MySQL 性能? Apr 08, 2025 pm 06:03 PM

MySQL数据库性能优化指南在资源密集型应用中,MySQL数据库扮演着至关重要的角色,负责管理海量事务。然而,随着应用规模的扩大,数据库性能瓶颈往往成为制约因素。本文将探讨一系列行之有效的MySQL性能优化策略,确保您的应用在高负载下依然保持高效响应。我们将结合实际案例,深入讲解索引、查询优化、数据库设计以及缓存等关键技术。1.数据库架构设计优化合理的数据库架构是MySQL性能优化的基石。以下是一些核心原则:选择合适的数据类型选择最小的、符合需求的数据类型,既能节省存储空间,又能提升数据处理速度

使用 Prometheus MySQL Exporter 监控 MySQL 和 MariaDB Droplet 使用 Prometheus MySQL Exporter 监控 MySQL 和 MariaDB Droplet Apr 08, 2025 pm 02:42 PM

有效监控 MySQL 和 MariaDB 数据库对于保持最佳性能、识别潜在瓶颈以及确保整体系统可靠性至关重要。 Prometheus MySQL Exporter 是一款强大的工具,可提供对数据库指标的详细洞察,这对于主动管理和故障排除至关重要。

mysql 主键可以为 null mysql 主键可以为 null Apr 08, 2025 pm 03:03 PM

MySQL 主键不可以为空,因为主键是唯一标识数据库中每一行的关键属性,如果主键可以为空,则无法唯一标识记录,将会导致数据混乱。使用自增整型列或 UUID 作为主键时,应考虑效率和空间占用等因素,选择合适的方案。

Navicat查看MongoDB数据库密码的方法 Navicat查看MongoDB数据库密码的方法 Apr 08, 2025 pm 09:39 PM

直接通过 Navicat 查看 MongoDB 密码是不可能的,因为它以哈希值形式存储。取回丢失密码的方法:1. 重置密码;2. 检查配置文件(可能包含哈希值);3. 检查代码(可能硬编码密码)。

掌握 SQL 中的 ORDER BY 子句:有效地对数据进行排序 掌握 SQL 中的 ORDER BY 子句:有效地对数据进行排序 Apr 08, 2025 pm 07:03 PM

SQLORDERBY子句详解:高效排序数据ORDERBY子句是SQL中用于对查询结果集进行排序的关键语句,可按单列或多列进行升序(ASC)或降序(DESC)排列,显着提升数据可读性和分析效率。 ORDERBY语法SELECTcolumn1,column2,...FROMtable_nameORDERBYcolumn_name[ASC|DESC];column_name:排序依据列。 ASC:升序排序(默认)。 DESC:降序排序。 ORDERBY主要特性多列排序:支持多列排序,列的顺序决定排序优先级。自

See all articles