C语言从0开始

wufei123 2025-01-26 阅读:8 评论:0
C语言学习起步可能略显困难,但掌握正确方法后,您将快速掌握基础并逐步精通。本指南将引导您循序渐进地学习C语言核心概念,从基础知识到高级主题。 目录 C语言基础与数据类型 用户输入 条件表达式简写 switch语句 C语言数组 嵌套循环...

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;)。
    • float 和 double:单精度和双精度浮点数(例如,float pi = 3.14;)。
    • char:单个字符或ASCII码(例如,char letter = 'a';)。
    • bool:布尔值(true 或 false,需包含 头文件)。
// 数据类型示例:
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("你几岁了?
"); // 显示提示信息
scanf("%d", &age); // 指定数据类型和变量名
printf("你%d岁了", age);

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

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

fgets(name, 25, stdin); // fgets 也包含结尾的'
'

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("优秀!
"); // 打印"优秀!"
        break; // 退出switch语句
    case 'b': // 如果'grade'是'b'
        printf("良好!
"); // 打印"良好!"
        break; // 退出switch语句
    default: // 如果'grade'不是'a'或'b'
        printf("下次加油。
"); // 打印"下次加油。"
}

始终包含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("
");
}

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

C语言函数

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

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

int main() {
    greet();
    return 0;
}

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

void greet(char name[]) {
    printf("你好,%s!
", 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开始的详细内容,更多请关注知识资源分享宝库其它相关文章!

版权声明

本站内容来源于互联网搬运,
仅限用于小范围内传播学习,请在下载后24小时内删除,
如果有侵权内容、不妥之处,请第一时间联系我们删除。敬请谅解!
E-mail:dpw1001@163.com

分享:

扫一扫在手机阅读、分享本文

发表评论
热门文章
  • 闪耀暖暖靡城永恒怎么样-闪耀暖暖靡城永恒套装介绍(闪耀.暖暖.套装.介绍.....)

    闪耀暖暖靡城永恒怎么样-闪耀暖暖靡城永恒套装介绍(闪耀.暖暖.套装.介绍.....)
    闪耀暖暖钻石竞技场第十七赛季“华梦泡影”即将开启!全新闪耀性感套装【靡城永恒】震撼来袭!想知道如何获得这套精美套装吗?快来看看吧! 【靡城永恒】套装设计理念抢先看: 设计灵感源于夜色中的孤星,象征着淡然、漠视一切的灰色瞳眸。设计师希望通过这套服装,展现出在虚幻与真实交织的夜幕下,一种独特的魅力。 服装细节考究,从面料的光泽、鞋跟声响到裙摆的弧度,都力求完美还原设计初衷。 【靡城永恒】套装设计亮点: 闪耀的绸缎与金丝交织,轻盈的羽毛增添华贵感。 这套服装仿佛是从无尽的黑...
  • BioWare埃德蒙顿工作室面临关闭危机,龙腾世纪制作总监辞职引关注(龙腾.总监.辞职.危机.面临.....)

    BioWare埃德蒙顿工作室面临关闭危机,龙腾世纪制作总监辞职引关注(龙腾.总监.辞职.危机.面临.....)
    知名变性人制作总监corrine busche离职bioware,引发业界震荡!外媒“smash jt”独家报道称,《龙腾世纪:影幢守护者》制作总监corrine busche已离开bioware,此举不仅引发了关于个人职业发展方向的讨论,更因其可能预示着bioware埃德蒙顿工作室即将关闭而备受关注。本文将深入分析busche离职的原因及其对bioware及游戏行业的影响。 Busche的告别信:挑战与感激并存 据“Smash JT”获得的内部邮件显示,Busche离职原...
  • 奇迹暖暖诸星梦眠怎么样-奇迹暖暖诸星梦眠套装介绍(星梦.暖暖.奇迹.套装.介绍.....)

    奇迹暖暖诸星梦眠怎么样-奇迹暖暖诸星梦眠套装介绍(星梦.暖暖.奇迹.套装.介绍.....)
    奇迹暖暖全新活动“失序之圜”即将开启,参与活动即可获得精美套装——诸星梦眠!想知道这套套装的细节吗?一起来看看吧! 奇迹暖暖诸星梦眠套装详解 “失序之圜”活动主打套装——诸星梦眠,高清海报震撼公开!少女在无垠梦境中,接受星辰的邀请,馥郁芬芳,预示着命运之花即将绽放。 诸星梦眠套装包含:全新妆容“隽永之梦”、星光面饰“熠烁星光”、动态特姿连衣裙“诸星梦眠”、动态特姿发型“金色绮想”、精美特效皇冠“繁星加冕”,以及动态摆件“芳馨酣眠”、“沉云余音”、“流星低语”、“葳蕤诗篇”。...
  • 斗魔骑士哪个角色强势-斗魔骑士角色推荐与实力解析(骑士.角色.强势.解析.实力.....)

    斗魔骑士哪个角色强势-斗魔骑士角色推荐与实力解析(骑士.角色.强势.解析.实力.....)
    斗魔骑士角色选择及战斗策略指南 斗魔骑士游戏中,众多角色各具特色,选择适合自己的角色才能在战斗中占据优势。本文将为您详细解读如何选择强力角色,并提供团队协作及角色培养策略。 如何选择强力角色? 斗魔骑士的角色大致分为近战和远程两种类型。近战角色通常拥有高攻击力和防御力,适合冲锋陷阵;远程角色则擅长后方输出,并依靠灵活走位躲避攻击。 选择角色时,需根据个人游戏风格和喜好决定。喜欢正面硬刚的玩家可以选择战士型角色,其高生命值和防御力能承受更多伤害;偏好策略性玩法的玩家则可以选择法...
  • 龙族卡塞尔之门昂热角色详解-龙族卡塞尔之门昂热全面介绍(之门.龙族.卡塞尔.详解.角色.....)

    龙族卡塞尔之门昂热角色详解-龙族卡塞尔之门昂热全面介绍(之门.龙族.卡塞尔.详解.角色.....)
    龙族卡塞尔之门:昂热角色深度解析 在策略手游《龙族卡塞尔之门》中,卡塞尔学院校长昂热凭借其传奇背景和强大技能,成为玩家们竞相选择的热门角色。作为初代狮心会的最后一人,他拥有超过130岁的阅历,沉稳成熟的外表下,藏着一颗爽朗豁达的心。游戏中,昂热不仅具备出色的单体输出,更擅长通过控制和辅助技能,为团队创造优势。 技能机制详解 昂热的技能组合灵活多变,包含普通攻击、言灵·时零以及随星级提升解锁的被动技能。虽然普通攻击仅针对单体目标,但言灵·时零却能对全体敌人造成物理伤害,并有几率...