当前位置: 首页 > news >正文

C语言复习笔记(一)

这里写自定义目录标题

  • 1 Windows编译环境搭建
    • 1.1 软件安装与配置
    • 1.2 C语言程序运行
    • 2 变量和赋值
    • 3 格式化输入/输出
    • 4 表达式
    • 5 选择语句
    • 6 循环

本着“每次任务必须血洗一个关键领域”,2025年10月18日开启C语言的攻坚战。

1 Windows编译环境搭建

1.1 软件安装与配置

  • 使用的IDE是VS code:
  • 安装MinGW 编译器(在windows环境下提供类UNIX的开发工具)
  • 运行MinGW,然后输入以下代码安装MinGW-w64工具链
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain
  • 添加环境变量,用户path新建

“D:\Program Files (x86)\MSYS2\ucrt64\bin”

  • 在VS code里添加 c/c++扩展程序
  • 新建一个文件夹,VS code是一款基于文件夹进行代码编辑和管理的编辑器,通常会新建一个文件夹来管理一个项目的代码,并在Vs code中打开。

1.2 C语言程序运行

C语言依赖3个关键的语言特性:指令、函数和语句。预处理器执行的命令称为指令,所有指令都以#开头,默认只占一行,结尾没有分号或其他特殊标记;函数可分为库函数和用户自编写函数,可以理解为一系列组合在一起的语句以实现某些功能的结合体;语句是程序运行时执行的具体命令,以分号结尾
例如:

/*
* Name: test.c
* Purpose: prints a bad pun
* Author: Sonny
*/   
#include <stdio.h> //预处理指令int main(void)//主函数,返回一个整数值int, 参数为空void
{printf("To C or not to C: that is the question.\n");//库函数return 0;//语句
}

上述C语言程序首先送交预处理器,执行以#开头的第一行命令,这行命令包含的是C语言标准输入/输出库的相关信息,也就是下面printf实现过程,预处理器有点类似编辑器,给程序添加头文件内容
添加修改后的程序(比如添加库函数)进入编译器,将程序翻译为机器指令,由链接器将编译器产生的目标代码和其他附加代码整合在一起,产生最终可执行的程序。

2 变量和赋值

  • Float变量可以存储比int变量大得多的数值,但是运算时比int更慢,更重要的是,float变量只是实际数值的一个近似值,例如存储0.1,变量实际可能为0.09999999.
  • 就书写格式,在声明和语句之间留出一个空行;
  • 变量在赋值前必须先声明,float在赋值时在常量后面加一个f;
#include <stdio.h>int main(void)
{int weight, volume, length, width, height;height = 8;length = 12;width = 10;volume = length * width * height;weight = (volume + 165) / 166;printf("Dimensions:%dx%dx%d\n", length, width, height);printf("Volume:%d\n", volume);printf("Dimensional weight:%d\n", weight);return 0;
}
  • scanf命令

scanf(“%d”, &height);

  • 宏定义 #define INCHER 166,此处名称是大写,只是一种规范,不是C语言本身的要求
  • 名称以字母或下划线开头,区分大小写,长度没有限制(超过31个会丢失),不能使用关键字
    在这里插入图片描述

3 格式化输入/输出

printf函数的转化说明与变量最好一一对应,如果:

  • 变量类型不对应,会输出无意义的数据
  • 变量数量多于转化说明,多余的变量不显示;
  • 变量数量少于转化说明,多余的变量显示无意义
#include <stdio.h>int main(void)
{int weight, volume, length, width, height;// printf("Enter height of box:");// scanf("%d", &height);length = 12;width = 10;volume = length * width * height;weight = (volume + 165) / 166;printf("Dimensions:%fx%f\n", length, height);// printf("Dimensions:%dx%dx%d\n", length, width, height);// printf("Volume:%d\n", volume);// printf("Dimensional weight:%d\n", weight);return 0;
}
  • 不能在字符串中只单独放置一个 \ ,为了显示单斜杠,需要放2个 \ ;
  • 使用scanf函数时,必须检查转换说明与输入变量的数量是否匹配,且数据类型是否对应;
  • 使用scanf函数时,需要把&符号放在每个变量前面(如果不放置,就无法把输入读进来的值存储到变量中)
  • 尽量避免使用scanf函数,而是采用字符格式读取所有数据,然后再把他们转换为数值形式,否则用户输入非预期数据,许多程序将无法正常执行;
  • 在使用scanf函数时,%e、%f、%g这三个转换说明是可以互换的;
  • 要求读入整数时,scanf会首先寻找正号或负号,然后读取数字到一个非数字才停止;
  • 要求读入浮点数时,scanf会选找一个正负号,然后一串数字(可以包含小数点);
  • 读入的字符串空格数无关紧要,除非转换说明中包含了空格;
  • scanf遇到输入其他字符,会将它与下一个输入字符进行比较,如果不匹配,就会把字符放入输入中,然后异常退出。
  • 需要注意,scanf的转换说明中不要增加符号,比如逗号,这会触发scanf读取字符串时寻找逗号;末尾也不要增加换行符等转义符
/** add two fractions*/
#include <stdio.h>int main(void)
{int num1, denom1, num2, denom2, result_num, result_denom;printf("Enter first fraction:");scanf("%d/%d", &num1, &denom1);printf("Enter second fraction:");scanf("%d/%d", &num2, &denom2);result_num = num1 * denom2 + num2 * denom1;result_denom = denom1 * denom2;printf("The sum is %d/%d\n", result_num, result_denom);return 0;
}

4 表达式

C 语言中最基础的运算符:算术运算、赋值运算、自增自减运算、逻辑运算、关系运算等。
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:
注意:

  • 当两个操作数是整数时,/会丢掉分数部分来截取结果;
  • 运算符%要求操作数是整数;
  • i+=2,等同于i=i+2;
  • i++, 先用i的原始值,计算后再自增;
  • ++i ,立即自增1;
#include <stdio.h>int main(void)
{int i, j, k;i = 1;j = 1;k = ++i + j++;printf("%d%d%d\n", i, j, k);return 0;
}
  • ++和–与+、-的优先级相同,是右结合的;
#include <stdio.h>int main(void)
{int i, j, k;i = 5;k = (j = i + 2) - (i = 1);printf("%d%d%d\n", i, j, k);return 0;
}
  • C语言关系运算符的结果是0(假)或者1(真);
#include <stdio.h>int main(void)
{int i, j, k;i = 5;j = 5;k = i == j;printf("%d\n%d\n%d\n", i, j, k);return 0;
}

5 选择语句

C语言的语句大多有以下三类:

  • 选择语句:if和switch
  • 重复语句:while、do、for语句
  • 跳转语句:break、continue、goto语句
/** Calculates a broker's commission*/#include <stdio.h>int main(void)
{float commission, value;printf("enter value of trade:");scanf("%f", &value);if (value < 2500.00f)commission = 30.00f + .017f * value;else if (value < 6250.00f)commission = 56.00f + .0066f * value;else if (value < 20000.00f)commission = 76.00f + .0034f * value;else if (value < 5000.00f)commission = 100.00f + .0022f * value;else if (value < 50000.00f)commission = 155.00f + .0011f * value;elsecommission = 255.00f + .0009f * value;if (commission < 39.00f)commission = 39.00f;printf("commission:$%.2f\n", commission);return 0;
}
  • 悬空else语句属于离它最近的且未和其他else匹配的if语句,不以缩进格式为依据,可以用花括号括起来;
  • 条件表达式: 表达式1?表达式2:表达式3
/** Calculates a broker's commission*/#include <stdio.h>int main(void)
{int i, j, k, l;i = 1;j = 2;k = i > j ? i : j;l = (i >= 0 ? i : 0) + j;printf("%d\n%d\n", k, l);return 0;
}
  • Bool类型是整数类型,只能赋值为0或者1;
/** Calculates a broker's commission*/#include <stdio.h>int main(void)
{int i, j, k;_Bool l;i = 1;j = 2;k = i > j ? i : j;l = (i >= 0 ? i : 0) + j;printf("%d\n%d\n", k, l);return 0;
}
  • <stdbool.h>头文件,变量类型可以用bool定义
#include <stdio.h>
#include <stdbool.h>
int main(void)
{int i, j, k;bool l;i = 1;j = 2;k = i > j ? i : j;l = (i >= 0 ? i : 0) + j;printf("%d\n%d\n", k, l);return 0;
}
  • swtich语句
/** prints a date in legal form*/#include <stdio.h>
#include <stdbool.h>
int main(void)
{int month, day, year;printf("Enter date (mm/dd/yy):");scanf("%d /%d /%d", &month, &day, &year);printf("Dated this %d", day);switch (day){case 1:case 21:case 31:printf("st");break;case 2:case 22:printf("nd");break;case 3:case 23:printf("rd");break;default:printf("th");break;}printf(" day of ");switch (month){case1:printf("January");break;case2:printf("February");break;case3:printf("March");break;case4:printf("April");break;case5:printf("May");break;case6:printf("June");break;case7:printf("July");break;case8:printf("August");break;case9:printf("September");break;case10:printf("October");break;case11:printf("November");break;case12:printf("December");break;}printf("20%.2d.\n", year);return 0;
}

6 循环

  • while循环语句
#include <stdio.h>
#include <stdbool.h>
int main(void)
{int i, n;printf("This program prints a table of .\n");printf("Enter number of entries in table:");scanf("%d", &n);i = 1;while (i <= n){printf("%10d%10d\n", i, i * i);i++;}return 0;
}
  • do语句
/** Calculates the number of digits in an integer*/
#include <stdio.h>
#include <stdbool.h>
int main(void)
{int digits = 0, n;printf("Entera nonnegativew integer:");scanf("%d", &n);do{n /= 10;digits++;} while (n > 0);printf("The number has %d digits(s)\n", digits);return 0;
}
  • for语句
/** Calculates the number of digits in an integer*/
#include <stdio.h>
#include <stdbool.h>
int main(void)
{int i, n;printf("Enter number of entries in table :");scanf("%d", &n);for (i = 1; i <= n; i++)printf("%10d%10d\n", i, i * i);return 0;
}
http://www.dtcms.com/a/532842.html

相关文章:

  • (10)shell 编程入门
  • 深入剖析C++文件操作的底层机制
  • 高端网站价格网架球加工厂家
  • 响应式网站文章网站建设字体变色代码
  • python+vue图书在线阅读推荐平台设计(源码+文档+调试+基础修改+答疑)
  • git仓库基本使用
  • 网站维护需要多久时间上海做网站建设公司排名
  • 在婚恋网站上做红娘怎么样什么都可以看的浏览器
  • 做平台网站要什么条件重庆网站建设重庆网站设计
  • 江苏系统建站怎么用咖啡网页设计素材
  • 网站建设软件免费使用密码访问wordpress文章
  • 物联网设备通信协议参数的能耗自适应调整机制
  • PySide6 win10 记事本从零到一——前言
  • win7 iis网站无法显示石家庄尚武科技
  • 建设网站哪家公司好网站建设公司招聘
  • UFS Reset 介绍
  • ESP8266无线开关
  • 生鲜电商网站建设一共有多少网站
  • 泰州网站建设案例海淘网站主要关键词
  • 网站 第三方登录做公众号用什么网站吗
  • 【FPGA】三八译码器——板级验证
  • Bugku-Web题目-charlottesweb- WolvCTF 2023
  • TCMalloc原理解析(下)
  • 短波红外相机入门核心场景和选型要求
  • centos做网站服务器吗南京品牌网站设计
  • 【Qt】启动新窗口--C/S传输信息
  • vf建设银行网站wordpress根据点击量最高查询文章
  • 统一日志管理架构设计
  • 綦江网站网站seo找准隐迅推
  • 建设网站前准备资料微信如何注册小程序