C语言练习大全(一):基础语法与入门练习
🎯 适合零基础新手,从最简单的输入输出、条件判断开始,一步步掌握 C 语言基本语法。
目录
1. 成绩等级判定
知识点: if-else if-else 多分支结构
根据分数输出对应等级:90+ → A,80+ → B,70+ → C,60+ → D,60 以下 → E。
#include <stdio.h>
int main()
{
int x = 0;
scanf("%d", &x);
if (x >= 90) {
printf("A");
} else if (x >= 80) {
printf("B");
} else if (x >= 70) {
printf("C");
} else if (x >= 60) {
printf("D");
} else {
printf("E");
}
return 0;
}
新手要点:
- if-else if 是从上往下依次判断的,一旦命中就不再往下走
- 所以条件顺序很重要!必须从大到小写(>=90 在前)
2. 12小时制与24小时制转换
知识点: 多条件 if-else 嵌套
#include <stdio.h>
int main()
{
int hour, min;
scanf("%d %d", &hour, &min);
if (hour >= 0 && hour < 12) {
printf("%d:%dAM", hour, min);
} else if (hour == 12) {
printf("%d:%dPM", hour, min);
} else if (hour == 24) {
printf("%d:%dAM", hour – 24, min);
} else {
printf("%d:%dPM", hour – 12, min);
}
return 0;
}
新手要点:
- && 表示"并且",两个条件同时满足
- 24 小时制的 0 点和 24 点其实是同一个时间
3. 超速检测
知识点: 简单 if-else 判断
输入车速,超过 60 显示超速警告。
#include <stdio.h>
int main()
{
int V;
scanf("%d", &V);
if (V > 60) {
printf("Speed : %d", V);
} else {
printf("speed : %d", V);
}
return 0;
}
别小看这个程序,它展示了分支判断的核心思想:根据条件走不同的路。
4. switch-case 成绩分级
知识点: switch-case 语句
用 switch 重写成绩分级,体会和 if-else 的区别。
#include <stdio.h>
int main()
{
int score;
scanf("%d", &score);
score /= 10; // 将分数转为 10 分制
switch (score) {
case 10:
case 9:
printf("A\\n");
break;
case 8:
printf("B\\n");
break;
case 7:
printf("C\\n");
break;
case 6:
printf("D\\n");
break;
default:
printf("E\\n");
break;
}
return 0;
}
新手要点:
- case 10: 和 case 9: 写在一起表示"10 或 9 都执行下面的代码"
- 每个 case 后面必须加 break,否则会"穿透"到下一个 case
- default 是"以上都不匹配"时的兜底
5. 厘米换算英尺和英寸
知识点: 整数除法与取余
1 英尺 = 30.48 厘米,1 英尺 = 12 英寸。
#include <stdio.h>
int main()
{
int cm, foot, inch;
scanf("%d", &cm);
foot = cm / 30.48;
inch = (cm / 30.48 – foot) * 12;
printf("%d %d", foot, inch);
return 0;
}
新手要点:
- 整数除法会直接丢掉小数部分,这正好用来取"整数部分"
- 先取整得到英尺,再用余数算英寸——这是常见的分步计算思路
6. 时间加法计算
知识点: 取余运算的妙用
输入一个时间(如 1030 表示 10:30)和要加的分钟数,计算结果时间。
#include <stdio.h>
int main()
{
int t, t1, minute, minute1, minute2;
scanf("%d %d", &t, &t1);
minute = t / 100; // 提取小时
minute1 = t % 100; // 提取分钟
minute2 = (minute * 60) + minute1 + t1; // 全部转为分钟再相加
printf("%d %d", minute2 / 60, minute2 % 60); // 再转回时:分
return 0;
}
新手要点:
- %(取余)和 /(取整)配合使用,可以拆分一个数的不同位
- 把复杂问题转成统一单位(分钟),算完再转回来——归一化思想
7. 三个数求最大值
知识点: 嵌套 if-else
#include <stdio.h>
int main()
{
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
if (a > b) {
if (c > a) {
printf("%d", c);
} else {
printf("%d", a);
}
} else {
if (c > b) {
printf("%d", c);
} else {
printf("%d", b);
}
}
return 0;
}
新手要点:
- 嵌套 if 就是"在某个条件成立的前提下,再判断另一个条件"
- 三个数比大小看起来简单,但逻辑要严密,漏掉一种情况就会出错
8. 九九乘法表
知识点: 嵌套 while 循环
#include <stdio.h>
int main()
{
int i = 0, b = 1;
scanf("%d", &i);
while (b <= i) {
int j = 1;
while (j <= b) {
printf("%d*%d=", j, b, j * b);
if (j * b >= 10) {
printf("%d ", j * b);
} else {
printf("%d ", j * b);
}
j++;
}
printf("\\n");
b++;
}
return 0;
}
新手要点:
- 外层控制行,内层控制列——这是嵌套循环的经典模式
- 格式化输出用空格对齐,让结果更美观
9. 斐波那契数列
知识点: 数组 + 循环
用数组存储斐波那契数列:1, 1, 2, 3, 5, 8, 13…(每个数等于前两个数之和)
#include <stdio.h>
int main()
{
int a[20] = {1, 1};
int i;
for (i = 2; i <= 20; i++)
a[i] = a[i – 1] + a[i – 2];
for (i = 0; i <= 20; i++) {
printf("%d ", a[i]);
if ((i + 1) % 5 == 0)
printf("\\n");
}
return 0;
}
新手要点:
- 数组初始化时只给前两个元素赋值,其余自动为 0
- a[i] = a[i-1] + a[i-2] 就是斐波那契的核心公式
10. 求平均数
知识点: while 循环 + 哨兵值
持续输入数字,输入 -1 时停止,求所有数字的平均值。
#include <stdio.h>
int main()
{
int number, sum = 0, count = 0;
scanf("%d", &number);
while (number != –1) {
sum += number;
count++;
scanf("%d", &number);
}
printf("%f\\n", 1.0 * sum / count);
return 0;
}
新手要点:
- 用一个特殊值(-1)作为"结束信号",叫做哨兵值
- 1.0 * sum / count 中乘以 1.0 是为了强制转为浮点除法,否则整数除法会丢小数
本篇总结
| if-else 分支 | 成绩等级、超速检测、求最大值 |
| switch-case | 成绩分级 |
| 取余与整除 | 时间计算、厘米换算 |
| while 循环 | 九九乘法表、求平均数 |
| for 循环 + 数组 | 斐波那契数列 |
💡 学习建议: 不要只看代码,一定要自己动手敲一遍。试着改改参数,看看输出会怎么变——这才是真正学会的方式。
下篇预告:《C语言练习大全(二):经典数学问题》— 素数、完数、水仙花数、牛顿迭代法…
