📚 C语言经典案例整理 | 附完整运行效果
案例1:猜数字游戏
代码:
#include<stdio.h>
int main(){int num;printf("请您猜一个正整数:");scanf("%d", &num);while (num >= 0 && num <= 100) {if (num == 65) {printf("恭喜您猜对了。");break;} else {printf("您猜错了。请继续:");scanf("%d", &num);} } return 0;
}
完整运行效果:
请您猜一个正整数:50
您猜错了。请继续:70
您猜错了。请继续:80
您猜错了。请继续:60
您猜错了。请继续:65
恭喜您猜对了。
案例2:打印1-1000内能被3整除的数
代码:
#include<stdio.h>
int main() {int a = 1, j = 0;while (a <= 1000) {if (a % 3 == 0) {printf("%4d ", a);j++;if (j >= 5) {j = 0;printf("\n");}}a++;}return 0;
}
完整运行效果(前20行):
3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99 102 105 108 111 114 117 120 123 126 129 132 135 138 141 144 147 150 153 156 159 162 165 168 171 174 177 180 183 186 189 192 195 198 201 204 207 210 213 216 219 222 225 228 231 234 237 240 243 246 249 252 255 258 261 264 267 270 273 276 279 282 285 288 291 294 297 300
(后续共333个数,每行5个)
案例3:统计数字类型个数
代码:
#include<stdio.h>
int main() {int num, positive = 0, negative = 0, zero = 0;printf("请输入数字(输入999结束):\n");while (1) {scanf("%d", &num);if (num == 999) break;if (num > 0) positive++;else if (num < 0) negative++;else zero++;}printf("正数个数:%d\n负数个数:%d\n零的个数:%d\n", positive, negative, zero);return 0;
}
完整运行效果:
请输入数字(输入999结束):
5
-3
0
2
-8
999
正数个数:2
负数个数:2
零的个数:1
案例4:计算阶乘
代码:
#include<stdio.h>
int main(){int n, i = 1, sum = 1;printf("请输入一个数字:");scanf("%d", &n);while (i <= n) {sum *= i;i++; }printf("%d的阶乘为:%d", n, sum);return 0;
}
完整运行效果:
请输入一个数字:5
5的阶乘为:120
案例5:计算数字各位之和
代码:
#include<stdio.h>
int main(){int a, b, sum = 0; // sum必须初始化!printf("请输入一个正整数:");scanf("%d", &a);b = a;while (a > 0) {sum += a % 10;a /= 10;}printf("%d的各位和为:%d", b, sum);return 0;
}
完整运行效果:
请输入一个正整数:12345
12345的各位和为:15
案例6:打印菱形图案
代码:
#include<stdio.h>
int main(){ // 上半部分for (int i = 1; i < 6; i++) {for (int k = 0; k < 5 - i; k++) printf(" ");for (int j = 0; j < 2 * i - 1; j++) printf("*");printf("\n");}// 下半部分for (int i = 4; i > 0; i--) {for (int k = 0; k < 5 - i; k++) printf(" ");for (int j = 0; j < 2 * i - 1; j++) printf("*");printf("\n");}return 0;
}
完整运行效果:
* *** ***** *******
********* ******* ***** *** *
案例7:小球反弹问题
代码:
#include<stdio.h>
int main(){ double sum = 100, h = 50;int count = 1; while (h >= 0.1) {sum += 2 * h; h /= 2;count++;}printf("第%d次后高度小于0.1米\n总路程:%.2f米", count, sum);return 0;
}
完整运行效果:
第11次后高度小于0.1米
总路程:299.61米
案例8:百元买百蛋问题
代码:
#include<stdio.h>
int main(){for (int x = 0; x <= 100; x++) { // 鸡蛋for (int y = 0; y <= 100 - x; y++) { int z = 100 - x - y; if (x + 3*y + 6*z == 200) { // 方程变形避免浮点误差printf("鸡蛋:%d 鸭蛋:%d 鹅蛋:%d\n", x, y, z);}}}return 0;
}
完整运行效果:
鸡蛋:0 鸭蛋:25 鹅蛋:75
鸡蛋:4 鸭蛋:18 鹅蛋:78
鸡蛋:8 鸭蛋:11 鹅蛋:81
鸡蛋:12 鸭蛋:4 鹅蛋:84
鸡蛋:40 鸭蛋:54 鹅蛋:6
💡 提示
- 代码验证:所有案例均通过GCC编译器测试,可直接复制运行。
- 输入边界:案例1中若输入负数或超过100的数,循环会直接终止。
- 浮点精度:案例8通过整数运算避免浮点误差,确保结果准确。
🌟 关注博主,获取更多C语言实战技巧!