经典 C 程序 100 例实战详解:从入门到精通的一周学习计划

第一天:基础编程思维入门(程序 1-5)

程序 1:三位数排列组合问题

题目 :用 1、2、3、4 组成无重复数字的三位数,求所有可能的组合。
核心思路:三重循环遍历百位、十位、个位,通过条件判断过滤重复数字。

cpp 复制代码
main() {
    int i,j,k;
    for(i=1;i<5;i++)  
        for(j=1;j<5;j++)    
            for(k=1;k<5;k++)
                if(i!=k&&i!=j&&j!=k)  
                    printf("%d,%d,%d\n",i,j,k);
}

关键点 :三重循环的嵌套逻辑,条件判断的去重逻辑。
扩展思考:若数字改为 0-9,如何修改代码?(提示:百位不能为 0)

程序 2:完全平方数求解

题目 :寻找一个数,加 100 是完全平方数,再加 168 也是完全平方数。
核心思路:遍历 10 万以内的数,用平方根函数判断是否为整数。

cpp 复制代码
#include "math.h"
main() {
    long int i,x,y;
    for(i=1;i<100000;i++) {
        x=sqrt(i+100);  
        y=sqrt(i+268);  
        if(x*x==i+100&&y*y==i+268)
            printf("%ld\n",i);
    }
}

关键点 :利用数学库函数sqrt,通过平方验证完全平方数。
优化点 :可缩小循环范围,比如从 1 开始到(y^2 - 268),减少计算量。

程序 3:三数排序

题目 :输入三个数,按从小到大输出。
核心思路:两两比较交换,确保最小数在最前。

cpp 复制代码
main() {
    int x,y,z,t;
    scanf("%d%d%d",&x,&y,&z);
    if(x>y) {t=x;x=y;y=t;}  
    if(x>z) {t=z;z=x;x=t;}  
    if(y>z) {t=y;y=z;z=t;}  
    printf("small to big: %d %d %d\n",x,y