计算机科学-第14周模块化程序设计 题目及参考解答

简介: 《计算机科学》课程主页在:http://blog.csdn.net/sxhelijian/article/details/137055971、下面的两段程序体现了函数参数传值与传地址的区别,写出运行结果,上机时运行程序并记录结果,理解这两种机制的原理(1)#include <stdio.h>void swap(int x, int y);int main( ){

《计算机科学》课程主页在:http://blog.csdn.net/sxhelijian/article/details/13705597


1、下面的两段程序体现了函数参数传值与传地址的区别,写出运行结果,上机时运行程序并记录结果,理解这两种机制的原理
(1)

#include <stdio.h>
void swap(int x, int y);
int main( )
{
    int a=0, b=0;
    a = 20;
    b = 45;
    if(a<b) swap(a, b);
    printf("%d,%d", a, b);
    return 0;
}
void swap(int x, int y)
{
    int tmp = 0;
    tmp = x;
    x = y;
    y = tmp;
}
你认为运行结果为:_________________
实际运行的结果为:_________________

(2)

#include <stdio.h>
void swap(int *x, int *y);
int main( )
{
    int a=0, b=0;
    a = 20;
    b = 45;
    if(a<b) swap(&a, &b);
    printf("%d,%d", a, b);
    return 0;
}
void swap(int *x, int *y)
{
    int tmp = 0;
    tmp = *x;
    *x = *y;
    *y = tmp;
}
你认为运行结果为:_________________
实际运行的结果为:_________________

2、下面是根据教材11.2中例11.1分析得到的一部分程序,请将尚未定义的函数写出来,运行程序得到每个方案的造价。
#include <stdio.h>
#include <math.h>
#define PI 3.1415926
float f(float c1,float c2,float t1,float t2,float s1,float s2,float r1,float r2,float h);
float f1(float c1,float c2,float h);
float f2(float t1,float t2,float h);
float f3(float s1,float s2,float h);
float f4(float r1,float r2,float h);
int main( )
{
    printf("方案一造价: %.2f元\n", f(3,6,4,12,4,12,5,10,3));
    printf("方案二造价: %.2f元\n", f(5,7,2,12,4,12,9,8,3.2));
    printf("方案三造价: %.2f元\n", f(2,8,3,4,10,9,4,10,3.25));
    return 0;
}
float f(float c1,float c2,float t1,float t2,float s1,float s2,float r1,float r2,float h)
{
    return f1(c1,c2,h)+f2(t1,t2,h)+f3(s1,s2,h)+f4(r1,r2,h);
}
float f1(float c1,float c2,float h)
{
    float a, s;
    a=PI*c2*c2*3000;
    s=2*PI*c2*h*2000;
    return c1*(a+s+400000);
}
//下面定义f2,f3和f4函数

参考解答:

#include <stdio.h>
#include <math.h>
#define PI 3.1415926
float f(float c1,float c2,float t1,float t2,float s1,float s2,float r1,float r2,float h);
float f1(float c1,float c2,float h);
float f2(float t1,float t2,float h);
float f3(float s1,float s2,float h);
float f4(float r1,float r2,float h);
int main( )
{
    printf("方案一造价: %.2f元\n", f(3,6,4,12,4,12,5,10,3));
    printf("方案二造价: %.2f元\n", f(5,7,2,12,4,12,9,8,3.2));
    printf("方案三造价: %.2f元\n", f(2,8,3,4,10,9,4,10,3.25));
    return 0;
}
float f(float c1,float c2,float t1,float t2,float s1,float s2,float r1,float r2,float h)
{
    return f1(c1,c2,h)+f2(t1,t2,h)+f3(s1,s2,h)+f4(r1,r2,h);
}
float f1(float c1,float c2,float h)
{
    float a, s;
    a=PI*c2*c2*3000;
    s=2*PI*c2*h*2000;
    return c1*(a+s+400000);
}
float f2(float t1,float t2,float h)
{
    float a, s;
    a=sqrt(3)*t2*t2*3000;
    s=3*t2*h*2000;
    return t1*(a+s+400000);
}
float f3(float s1,float s2,float h)
{
    float a, s;
    a=s2*s2*3000;
    s=4*s2*h*2000;
    return s1*(a+s+400000);
}
float f4(float r1,float r2,float h)
{
    float a, s;
    a=3*sqrt(3)*r2*r2*3000/2;
    s=6*r2*h*2000;
    return r1*(a+s+400000);
}

3、利用随机函数与自定义函数,制作一个帮助小学生学算术的程序,参考运行的部分截图:


下面是给出的main()函数,请写出自定义函数answer。

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int answer(); 
int main()
{
    int i, sum=0;   //sum: 学生得分
    srand(time(0)); //初始化随机种子
    for(i=0; i<10; i++)
    {
        printf("第%d题: ",i+1);
        sum+=answer();
    }
    printf("共答对了%d道题. \n", sum);
    return 0;
}
提示:answer()函数中该做的事:
  • 产生两个随机数,分别作为被加数和加数;
  • 计算这两数的和作为答案;
  • 提示题目,并由小学生输入他/她计算的结果;
  • 将小学生的输入与答案比较;
  • 根据比较结果,提示小学生正误;
  • 返回结果,正确为1,错误为0
参考解答:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int answer(); //函数声明,完成一道题的测试并返回评判结果,正确1为,错误为0
int main()
{
    int i, sum=0;      //sum: 学生得分
    srand(time(0)); //初始化随机种子
    for(i=0; i<10; i++)
    {
        printf("第%d题: ",i+1);
        sum+=answer();
    }
    printf("共答对了%d道题. \n", sum);
    return 0;
}

int answer()
{
    int a,b,d,t;
    a=rand()%10+1;
    b=rand()%10+1;
    d=a+b;
    printf("%d + %d = ", a, b);
    scanf("%d", &t);
    if(t==d)
        printf("right! \n");
    else
        printf("wrong! \n");
    return (t==d);
}


目录
相关文章
|
6天前
|
人工智能 自然语言处理 JavaScript
2026年Windows+Ollama本地部署OpenClaw保姆级教程:本地AI Agent+阿里云上快速搭建
2026年OpenClaw凭借本地部署、私有化运行的特性,成为打造个人智能体的核心工具,而Ollama作为轻量级本地大模型管理工具,能让OpenClaw摆脱对云端大模型的依赖,实现**本地推理、数据不泄露、全流程私有化**的智能体验。本文基于Windows 11系统,从硬件环境准备、Ollama安装与模型定制、OpenClaw部署配置、技能扩展到常见问题排查,打造保姆级本地部署教程,同时补充阿里云OpenClaw(Clawdbot)快速部署步骤,兼顾本地私有化需求与云端7×24小时运行需求,文中所有代码命令均可直接复制执行,确保零基础用户也能快速搭建属于自己的本地智能体。
7953 63
|
3天前
|
人工智能 安全 API
CoPaw:3分钟部署你的 AI助理
源自阿里巴巴开源生态的个人 AI 助理——CoPaw。作为阿里倾力打造的开源力作,CoPaw 完美打通钉钉、飞书、Discord 等多平台对话通道,支持定时任务自动化。内置 PDF/Office 深度处理、新闻摘要等强大技能,更开放自定义扩展接口。坚持数据全程私有化部署,绝不上传云端,让每一位用户都能在大厂技术加持下,拥有安全、专属的智能助手。
|
5天前
|
人工智能 自然语言处理 机器人
保姆级教程:Mac本地搭建OpenClaw及阿里云上1分钟部署OpenClaw+飞书集成实战指南
OpenClaw(曾用名Clawdbot、Moltbot)作为2026年最热门的开源个人AI助手平台,以“自然语言驱动自动化”为核心,支持对接飞书、Telegram等主流通讯工具,可替代人工完成文件操作、日历管理、邮件处理等重复性工作。其模块化架构适配多系统环境,既可以在Mac上本地化部署打造私人助手,也能通过阿里云实现7×24小时稳定运行,完美兼顾隐私性与便捷性。
3511 5
|
4天前
|
人工智能 安全 JavaScript
阿里云上+本地部署OpenClaw(小龙虾)新手攻略:解锁10大必备Skills,零基础也能玩转AI助手
2026年,开源AI代理工具OpenClaw(昵称“小龙虾”)凭借“能实际做事”的核心优势,在GitHub斩获25万+星标,成为现象级AI工具。它最强大的魅力在于可扩展的Skills(技能包)系统——通过ClawHub插件市场的数百个技能,能让AI助手从简单聊天升级为处理办公、学习、日常事务的全能帮手。
3176 8
|
7天前
|
人工智能 JSON JavaScript
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
手把手教你用 OpenClaw(v2026.2.22-2)+ 飞书,10分钟零代码搭建专属AI机器人!内置飞书插件,无需额外安装;支持Claude等主流模型,命令行一键配置。告别复杂开发,像聊同事一样自然对话。
3889 13
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
|
6天前
|
人工智能 监控 机器人
2026年零门槛部署 OpenClaw(Clawdbot)接入A股数据,实现24小时股票分析保姆级教程
在AI赋能金融分析的浪潮中,OpenClaw(原Clawdbot/Moltbot)凭借开源灵活的架构,成为个人投资者打造专属智能分析助手的首选。通过接入A股实时数据,它能实现24小时市场监控、涨跌预警、潜力股推荐等核心功能,彻底解放人工盯盘的繁琐。而阿里云的稳定部署环境,更让这套系统实现全天候不间断运行,成为真正的“金融AI助手”。 本文基于OpenClaw v2026.1.25稳定版与QVeris免费A股数据接口,详细拆解阿里云OpenClaw部署步骤、A股数据接入流程、高级分析功能配置及多平台联动技巧,所有代码命令均可直接复制复用,即使无技术基础也能在1小时内完成从部署到实战的全流程。
2845 11
|
8天前
|
存储 人工智能 BI
2026年OpenClaw(Clawdbot)极简部署:接入小红书全自动运营,一个人=一支团队
2026年的小红书运营赛道,AI自动化工具已成为核心竞争力。OpenClaw(原Clawdbot)凭借“Skill插件化集成、全流程自动化、跨平台联动”的核心优势,彻底颠覆传统运营模式——从热点追踪、文案创作、封面设计到自动发布、账号互动,仅需一句自然语言指令,即可实现全链路闭环。而阿里云作为OpenClaw官方推荐的云端部署载体,2026年推出专属秒级部署方案,预装全套运行环境与小红书运营插件,让零基础用户也能10分钟完成部署,轻松拥有7×24小时在线的“专属运营团队”。
2631 11