法133计算机科学课第15周实践题目及参考解答

本文提供了C语言编程的基础练习题目及解答,包括素数判断、特殊数列生成、回文数验证、完数查找等典型算法实现,适合初学者进行实践操作。

课程主页在:http://blog.youkuaiyun.com/sxhelijian/article/details/13705597

编程练习1:输出1000以内的所有素数。

参考解答:

#include<stdio.h>
#include<math.h>
int main()
{
    int m,i,k,prime;
    for(m=2;m<=200;m++)
{
    prime=1;
    k=sqrt(m);
    for(i=2; i<=k; i++) //最多循环至……
        if(m%i==0)
        {
            prime=0;
            break;
        }
    if(prime==1)
        printf("%d ",m);
}
    return 0;
}

编程练习2:求满足条件n=a!+b!+c!的所有三位数n并输出,其中a,b,c分别为n的百、十、个位数。

参考解答:

#include<stdio.h>
int main()
{
    int n,a,b,c,sum;
    int i,f;
    n=100;
    while(n<1000)
    {
        sum=0;
        c=n%10;  //个位数,
        b=(n/10)%10;  //十位数
        a=n/100;  //百位数
        for(f=1,i=1; i<=a; ++i)  f=f*i; //求 a!
        sum += f;
        for(f=1,i=1; i<=b; ++i)  f=f*i; //求 b!
        sum += f;
        for(f=1,i=1; i<=c; ++i)  f=f*i; //求 c!
        sum += f; //此时sum的值为a!+b!+c!
        if(sum==n)  //若条件成立,则 n 就是要找的数。
            printf("%d ",n);
        ++n;  //考察下一个n
    }
    return 0;
}

解2:

#include<stdio.h>
int main()
{
    int n,a,b,c,sum;
    int i,f;
    for(n=100;n<1000;n++)
    {
        sum=0;
        c=n%10;  //个位数,
        b=(n/10)%10;  //十位数
        a=n/100;  //百位数
        for(f=1,i=1; i<=a; ++i)  f=f*i; //求 a!
        sum += f;
        for(f=1,i=1; i<=b; ++i)  f=f*i; //求 b!
        sum += f;
        for(f=1,i=1; i<=c; ++i)  f=f*i; //求 c!
        sum += f; //此时sum的值为a!+b!+c!
        if(sum==n)  //若条件成立,则 n 就是要找的数。
            printf("%d ",n);
    }
    return 0;
}

编程练习3:输入一个正整数,判断其是否为一个回文数(例1221、12321都是回文数)。提示:输入一个正整数n(例1234)后,构造出其反序数m(对应4321),若这两个数相等,则n是回文数(1234就不是回文数)。算法流程图如右图所示。

参考解答:

#include<stdio.h>
int main()
{
 
    int m,n,k;
    scanf("%d",&n);
    k=n;
    m=0;
    while(k>0)
    {
        m=m*10+k%10;
        k=k/10;
    }
    if(m==n)
        printf("%d是回文数\n",n);
    else
        printf("%d不是回文数\n",n);
    return 0;
}

编程练习4:输出1000以内的所有回文数。

参考解答:

#include<stdio.h>
int main()
{
 
    int m,n,k;
    for(n=0; n<1000; n++)
    {
        k=n;
        m=0;
        while(k>0)
        {
            m=m*10+k%10;
            k=k/10;
        }
        if(m==n)
            printf("%d ",n);
    }
    return 0;
}

编程练习5:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3,1、2、3是6的因子,所以6是完数。编程序,输入n,判断n是否是完数。

参考解答:

#include<stdio.h>
int main( )
{
    int i,n,s;
    scanf("%d",&n);
    s=1; //s表示因子和。1是任何数的因子,所以s=1,也使下一句可以从2开始尝试
    for(i=2; i<n; i++) //从2开始到n-1,逐个去试
    {
        if(n%i==0)
            s+=i;  //如果i是n的因子,则累加
    }
    if(n==s)
        printf("%d是完数\n",n);
    else
        printf("%d不是完数\n",n);
    return 0;
}

编程练习6:找出1000内的所有完数。

参考解答:

#include<stdio.h>
int main( )
{
    int i,n,s;
    for(n=2; n<1000; n++)
    {
        s=1; //s表示因子和。1是任何数的因子,所以s=1,也使下一句可以从2开始尝试
        for(i=2; i<n; i++) //从2开始到n-1,逐个去试
        {
            if(n%i==0)
                s+=i;  //如果i是n的因子,则累加
        }
        if(n==s)
            printf("%d ",n);
    }
    return 0;
}




本指南详细阐述基于Python编程语言结合OpenCV计算机视觉库构建实时眼部状态分析系统的技术流程。该系统能够准确识别眼部区域,并对眨眼动作与持续闭眼状态进行判别。OpenCV作为功能强大的图像处理工具库,配合Python简洁的语特性与丰富的第三方模块支持,为开发此类视觉应用提供了理想环境。 在环境配置阶段,除基础Python运行环境外,还需安装OpenCV核心模块与dlib机器学习库。dlib库内置的HOG(方向梯度直方图)特征检测算在面部特征定位方面表现卓越。 技术实现包含以下关键环节: - 面部区域检测:采用预训练的Haar级联分类器或HOG特征检测器完成初始人脸定位,为后续眼部分析建立基础坐标系 - 眼部精确定位:基于已识别的人脸区域,运用dlib提供的面部特征点预测模型准确标定双眼位置坐标 - 眼睑轮廓分析:通过OpenCV的轮廓提取算精确勾勒眼睑边缘形态,为状态判别提供几何特征依据 - 眨眼动作识别:通过连续帧序列分析眼睑开合度变化,建立动态阈值模型判断瞬时闭合动作 - 持续闭眼检测:设定更严格的状态持续时间与闭合程度双重标准,准确识别长时间闭眼行为 - 实时处理架构:构建视频流处理管线,通过帧捕获、特征分析、状态判断的循环流程实现实时监控 完整的技术文档应包含模块化代码实现、依赖库安装指引、参数调优指南及常见问题解决方案。示例代码需具备完整的错误处理机制与性能优化建议,涵盖图像预处理、光照补偿等实际应用中的关键技术点。 掌握该技术体系不仅有助于深入理解计算机视觉原理,更为疲劳驾驶预警、医疗监护等实际应用场景提供了可靠的技术基础。后续优化方向可包括多模态特征融合、深度学习模型集成等进阶研究领域。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值