news 2026/5/5 8:20:53

C 语言基础:输入输出、运算符与流程控制全梳理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C 语言基础:输入输出、运算符与流程控制全梳理

好的,我们来一次C语言基础的系统梳理,重点覆盖你提到的三大块:输入输出运算符流程控制

这份内容适合零基础或想快速复习的人,全部用最实用、最常考的写法和注意点,强烈建议你边看边敲代码验证。

一、C程序基本结构(先打好地基)

#include<stdio.h>// 标准输入输出头文件intmain(void)// main函数是程序入口{// 你的代码写在这里return0;// 返回0表示正常结束,非0表示出错}

编译运行(常见命令):

gcc hello.c -o hello# 编译./hello# Linux/Mac运行hello.exe# Windows运行

二、输入输出(最常用、最容易错)

函数作用常用格式符注意点 / 常见坑
printf格式化输出到屏幕%d %ld %f %lf %c %s %p必须匹配类型,否则未定义行为
scanf格式化输入从键盘同上&取地址,空格/回车会影响输入,极易出错
getchar读一个字符返回 int(EOF = -1)
putchar输出一个字符
gets读一行(危险,已废弃缓冲区溢出风险,永远不要用
fgets安全读一行需要指定大小推荐替代 gets
puts输出字符串+换行比 printf(“%s\n”, str) 稍快

最常用示例(敲一遍!)

#include<stdio.h>intmain(){intage;floatheight;chargender;charname[20];// 字符串数组printf("请输入年龄、身高、性别(M/F)和姓名:\n");// 正确写法:scanf 需要 & 取地址scanf("%d %f %c",&age,&height,&gender);// 吃掉残留的换行符(常见坑)getchar();// 或 scanf("%*c");// 安全读字符串(包含空格)fgets(name,sizeof(name),stdin);// 去掉 fgets 带来的换行符if(name[strlen(name)-1]=='\n')name[strlen(name)-1]='\0';printf("你好,%s!\n",name);printf("年龄:%d 身高:%.1f 性别:%c\n",age,height,gender);return0;}

scanf 经典坑总结

  • 不要忘&
  • %s不要加&(数组名就是地址)
  • 连续输入时,空格/回车会残留 → 常用getchar()%*c吃掉
  • 建议用fgets+sscanf组合,更安全

三、运算符全梳理(优先级 + 结合性 + 常见陷阱)

优先级运算符结合性说明与陷阱
1() [] . ->左→右后缀运算符最高
2! ~ ++ – - + * & (type) sizeof右→左单目运算符;注意!只对0/非0,~是按位取反
3* / %左→右模运算 % 两边必须整数
4+ -左→右
5<< >>左→右移位(有符号右移看编译器)
6< <= > >=左→右关系运算符
7== !=左→右相等判断
8&左→右按位与
9^左→右按位异或
10左→右
11&&左→右逻辑与(短路)
12
13?:右→左三目运算符
14= += -= *= /= %= <<= >>= &= ^==右→左
15,左→右逗号表达式(最低优先级,常用于 for 循环)

最常考/最坑的点

inta=5,b=3;printf("%d\n",a+++++b);// 5 + 4 = 9 (后++ 先用后加,前++ 先加后用)intx=1;printf("%d\n",x++&&++x);// 1 && 2 → 1(短路,后面的 ++x 不执行)intn=10;n+=n++;// 未定义行为!不要写这种代码

推荐:永远不要在同一表达式中多次修改同一变量。

四、流程控制全家桶(顺序 → 分支 → 循环)

1. 分支结构
// ifif(age>=18){printf("成人\n");}elseif(age>=13){printf("青少年\n");}else{printf("儿童\n");}// 三目运算符(表达式)intmax=(a>b)?a:b;// switch(只能用于整型/字符型,不能范围判断)switch(grade){case'A':printf("优秀\n");break;case'B':case'C':printf("及格\n");break;// 穿透default:printf("不及格\n");}
2. 循环结构(三种 + 对比)
循环类型语法特点与适用场景跳出/继续
whilewhile(条件) { … }先判断后执行,适合未知次数break / continue
do-whiledo { … } while(条件);至少执行一次,适合菜单等同上
forfor(初始化; 条件; 增量) { … }最常用,计数/已知次数清晰同上

经典 for 变种(很实用)

// 死循环(常见写法)for(;;){...}// 等价 while(1)// 逗号表达式(for 中最强)for(inti=0,j=100;i<10&&j>50;i++,j-=5){printf("%d %d\n",i,j);}// 遍历数组(现代写法)intarr[]={1,2,3,4,5};for(inti=0;i<sizeof(arr)/sizeof(arr[0]);i++){...}

goto(了解即可,生产代码尽量别用

error:printf("出错了\n");// ...if(失败)gotoerror;

五、快速自测清单(做完这些说明你基础过关)

  1. scanf("%d", age);错在哪里?(忘了 &)
  2. printf("%f", 3/2);输出多少?(1.000000,因为整数除法)
  3. a = 5; b = a++ + ++a;b 是多少?(未定义行为!)
  4. while((c=getchar()) != '\n') putchar(c);作用是什么?(回显一行)
  5. for(;;)等价于什么?(while(1))
  6. switch 里不写 break 会怎样?(case 穿透)
  7. 三目运算符的结合性是?(右结合)
  8. do { ... } while(0);有什么用?(宏定义中常用,避免语法问题)

把上面这些点都敲代码验证一遍,C语言的输入输出 + 运算符 + 流程控制你就基本掌握了。

接下来想深入哪一块?(数组、函数、指针、结构体、文件操作、常见算法题…)直接告诉我,我继续给你最实用的总结和代码。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 9:45:38

Python如何识别周围WiFi:跨平台实现与进阶技巧

在物联网设备管理、网络安全审计或智能家居场景中&#xff0c;识别周围WiFi网络是基础需求。Python凭借其丰富的生态库&#xff0c;能够跨平台实现WiFi扫描、信号强度检测及网络分析。本文将系统梳理主流方法&#xff0c;结合代码示例与性能对比&#xff0c;帮助开发者快速构建…

作者头像 李华
网站建设 2026/5/4 12:18:26

基于spring mvc和mybatis的网上食品零食商城系统视频vue3

目录 系统架构与技术栈核心功能模块技术实现要点数据库设计示例部署与扩展建议 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 系统架构与技术栈 Spring MVC MyBatis 作为后端框架&#xff0c;Vue3 作为…

作者头像 李华
网站建设 2026/5/5 1:59:50

常用的css

js控制样式&#xff1a; //html中&#xff1a;<text class"test_text" :style"{--base_color:currentColor}">测试</text>//data中:currentColor:pink //methods中&#xff1a;this.currentColorred//style中&#xff1a;使用变量取值.test_t…

作者头像 李华
网站建设 2026/5/5 1:57:38

枚举中间

lc lc2964 枚举中间hash class Solution { public: int divisibleTripletCount(vector<int>& nums, int d) { int n nums.size(); if (n < 3) return 0; int ret 0; unordered_map<int, int> hash; hash[nums[0] % d]; // 枚举中间 for (int i 1; i &l…

作者头像 李华
网站建设 2026/5/3 4:10:59

三菱PLC六层电梯控制系统设计含报告程序【程序与文档】(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

三菱PLC六层电梯控制系统设计含报告程序【程序与文档】(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相关定制&#xff09;_文章底部可以扫码组态川基于三菱PLC的六层电梯控制系统设计[配套设计报告&#xff0c;程序&#xff0c;组态) 含基于三菱PLC的六层电梯控制…

作者头像 李华