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

《计算机科学》课程主页在: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);
}
时间: 2024-10-29 11:11:03

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

2013-C++第13周班级对抗赛题目及参考解答

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759 Problem  A  她胖吗? Description奚嘉嘉是位爱美的女孩,身高165cm,体重52.5kg,可还是为保持身材错过了好多口福.实际上,保持健康和快乐,无论胖瘦都是美.当然太胖或太瘦可能对健康不利,适当注意即可.我们要为奚嘉嘉这样的爱美女孩设计一个程序,提供身体.体重,给出建议.女性的标准体重是:身高(厘米)-100= 标准体重(公斤),超过标准体重20%

计算机科学-第9周 数组、结构体、指针综合练习 题目及参考解答

<计算机科学>课程主页在:http://blog.csdn.net/sxhelijian/article/details/13705597 发现第9周的题目及参考没有公布,补上. 1.阅读程序阅读下面的程序,写出运行结果,上机时运行程序,记录结果,从而能够理解指针的用法(1) #include<stdio.h> int main(){ char a[]="Hello World",*p; int i; i=8; p=a+i; printf("%s\n&

计算机科学-第6周 文件 题目及参考解答

<计算机科学>课程主页在:http://blog.csdn.net/sxhelijian/article/details/13705597 题目:文件salary1.txt是某单位100名员工的工号.基本工资和绩效工资.编程序(1)从文件中读取数据,求出总工资,并在屏幕上显示信息:(2)将完整的工资单保存到文件salary2.txt中.(3)将总工资超过5000元的员工的工号保存到文件rich.txt中.(4)在屏幕上显示工资最高的员工的工资信息提示:(1)定义一个结构体数组保存从文件中读入的

计算机科学-第13周 函数 题目及参考解答

<计算机科学>课程主页在:http://blog.csdn.net/sxhelijian/article/details/13705597 1.阅读程序:阅读下面的程序,写出运行结果,上机时运行程序,记录结果,从而能够理解函数的用法(1) #include <stdio.h> void fun(int x, int y) { x=x*10; y=y+x; printf("%d\t%d\n",x,y); } int main() { int a=2, b=3; f

计算机科学-第3周 排序和查找 题目及参考解答

<计算机科学>课程主页在:http://blog.csdn.net/sxhelijian/article/details/13705597 本周练习需要的数据文件下载自:链接 练习一 salary.txt中是某企业(不超过500)职工的工资,请编程读入数据,给每名职工的工资增加20%后降序排序,并输出排序后的结果.运行程序时,请将salary.txt复制到源文件同一文件夹下.Salary.txt在提供的材料中. 下面是完成应用的部分代码,可以增加定义需要的变量,但不建议改动已有的代码: #in

计算机科学-第15周 递归函数 题目及参考解答

<计算机科学>课程主页在:http://blog.csdn.net/sxhelijian/article/details/13705597 1.阅读下面关于递归函数的程序,在草稿纸上画出函数调用"递推-回归"的过程,得出运行结果,并和实际运行结果进行对照(1) #include <stdio.h> int fact(int n); int main(){ long x=0,y=0; x=5; y=fact(x); printf("%ld\n"

计算机科学-第8周 字符串和动态数组 题目及参考解答

<计算机科学>课程主页在:http://blog.csdn.net/sxhelijian/article/details/13705597 1.阅读程序 阅读下面的程序,写出运行结果,上机时运行程序,记录结果,从而能够理解指针的用法(1) #include<stdio.h> int main() { int i; for(i='A'; i<'I'; i++,i++) printf("%c",i+32); printf("\n"); re

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

课程主页在:http://blog.csdn.net/sxhelijian/article/details/13705597 2398:分段函数求值[双分支] Description 编程序,计算下面函数的值并输出: y = x - 1 (当x>=1), y = -x + 1 (当x<1) Input 一个整型数x Output 按公式计算出的y Sample Input 2 Sample Output 1 参考解答: #include <stdio.h> int main() {

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

课程主页在:http://blog.csdn.net/sxhelijian/article/details/13705597 [课后练习1] 完成下面"歌手大奖赛计分程序"的设计(至少一项要求): 1.在歌手大奖赛中,有10位评委为参赛的选手打分,分数为0~10分(运行时由人控制).选手最后得分为去掉一个最高分和一个最低分后的平均值.请编写一个程序实现计分. 2.做一个更通用的计分程序,评委人数n可以在输入成绩之前输入,从而评委人数可以灵活调整. 3.进一步完善程序.一次运行程序只计算