(2)打印出所有“水仙花数”。
所谓“水仙花数”是指一个三位数,其各位数字的立方之和正好等于该数本身。
例如:
153是一个“水仙花数”,因为153=13+53+33
【提示】根据题目要求只要分别求出一个三位数的个位、十位、百位上的数字,然后判断是否满足(某一三位数的百位的立方的十位的立方的个位的立方)这个公式,满足这个条件的三位数就是“水仙花数”。
(3)一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
【提示】在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
3、程序选做题
(1)
第二题
<>
<>
()
{
000;
(a<=15)
{
(0<=25)
{
14*8*b;
100;
(200)
("\n");
;
}
;
}
}
猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃掉了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的总数一半零一个。
到第10天早上想再吃时,见只剩一个桃子了。
求第一天共摘了多少桃子。
【提示】使用逆向推导的方式,设后一天的桃子为N个,则其前面一天的桃子为
(1)*2个,以此类推。
(2)“百钱买百鸡”问题:
公鸡每只5元,母鸡每只3元,小鸡每3只1元;用100元买100只鸡,问公鸡,母鸡,小鸡各买多少只?
【提示】设公鸡x只,母鸡y只,小鸡z只;则有1<<=18,1<<=31,1<<=98,且同时满足533=100,100,3=0这三个条件。
通过数学运算可改变条件,从而可用不同的方法来解决此问题,请尝试不同的循环次数解决该问题。
五、程序调试记录
要求:
写出题号,并编写顺序号。
如四
(1)出现的错误
(1)······
(2)······
1、程序出现的错误及改正
2、程序的改进
实验3模块化设计与应用
一、实验学时
完成本实验需要4学时。
二、实验目的
1、阅读程序题
(1)掌握函数实参和形参的对应关系以及“值传递”的方式;
(2)理解函数调用的过程以及函数的返回值;
(3)弄清楚带参函数和带参的宏之间的异同。
2、编程题
(1)深刻理解模块化程序设计的思想及如何进行模块划分;
(2)掌握定义函数的方法以及函数原型的声明;
(3)灵活运用函数调用(有参函数和无参函数、有返回值的函数和无返回值的函数)。
三、实验指导
为了达到最佳的实验效果,下面提出几点指导意见或要求以供参考:
1、阅读程序题应先运用自己在课堂所学的知识,推导出结果。
上机时输入计算机,验证自己推导的结果是否正确。
若不正确,应分析原因。
2、编程题注意事项:
(1)一个模块(或函数)应有一个入口点和一个退出点。
(2)一般每个模块(或函数)只执行一个任务。
不要将无关的任务放于同一模块中,只将完成同一任务的语句组合在一起。
(3)先画流程图,后写程序代码;
(4)变量和函数标示符尽量“见名知义”;
(5)程序中应有适当注释。
3、应记录调试程序时出现的错误,以便经验的积累。
四、实验内容
1、阅读程序题
(1)下面程序的输出结果是5,8。
<>
f(m)
{
2;
;
;
}
()
{
s;
(2);
(",\n",s,f(s));
}
(2)下面程序的输出结果是777。
<>
f(a)
{
0;
3;
1;
1;
();
}
()
{
2;
(i=0<3)
(""(a));
}
(3)下面程序的输出结果是3(空格)5。
<>
(*a,*b)
{
*t;
;
}
()
{
35,*,*;
();
("\n",*p,*q);
}
(4)下面程序的输出结果是12。
<>
M()x*
()
{
123;
("\n",M());
}
(5)下面程序的输出结果是19。
<>
M(x,y,z)
{
p;
*;
(p);
}
()
{
123;
("\n",M());
}
2、编程序并上机调试运行。
(1)请设计一个函数(),它的功能是:
判断是否是素数。
若是素数,返回1;若不是素数,返回0。
的值由主函数从键盘读入。
函数():
主函数():
测试数据及输出结果:
330
371
(2)请设计一个函数(),它的功能是:
将两个两位数的正整数a、b合并形成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。
例如,当a=45,12。
调用该函数后,4152。
函数():
主函数():
测试数据及输出结果:
921输入数字错误!
21232123
(3)请设计两个函数()和(),它们的功能是:
前者用于求两个正整数的最大公约数,后者用于求两个正整数的最小公倍数。
函数():
函数():
函数():
测试数据及输出结果:
242(换行)4
351(换行)15
-15数字输入错误!
五、程序调试记录
要求记录以下内容:
1、程序出现的错误及改正
2、程序的改进
实验4相同数据类型集合
一、实验学时
完成本实验需4学时。
二、实验目的
1、阅读程序题
(1)掌握一维和二维数组的定义、赋值和输入输出
(2)学会使用一维数组、二维数组
(3)学会使用多维数组、字符数组
(4)学会使用字符串处理函数
2、编程题
(1)如何运用数组进行程序设计
(2)了解字符串处理函数
三、实验指导
为了达到最佳的实验效果,以下提供几条适于模块化编程的指导意见,可供参考。
1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意数组下标的使用方法。
2、编程题必须首先画出流程图,并反复思考判断程序设计的正确性,注意数组下标不要越界(为了加深认识,自己可以尝试一下下标越界的情况)。
3、调试程序要有耐心,反复的调试过程,虽然表面看起来费时费力,但是你一定会受益非浅。
四、实验内容
1、阅读程序题
(1)()
{[7]={"6521"};
0;
(0[i]>='0'[i]<='9'2)
10*[i]-'0';
("\n");}
该程序的输出结果是6。
(2)5
()
{a[];
(0<5)
a[i];
("\n*****a*****\n");
(0<5)
{
("a[]=");
("\n"[i]);
*****a*****
a[0]=0
a[1]=1
a[2]=2
a[3]=3
a[4]=4
}
}
该程序的输出结果是。
(3)""
N10
()
{
;
a[1];
0;
(":
\n");
(1<)
(""[i]);
("****************\n");
(1<)
{
;
(1<)
(a[j]>a[1])
{
[j];
a[j][1];
a[1];
}
("%3d:
");
(1<)
(""[j]);
("\n");
}
(":
\n");
(1<)
(""[i]);}
该程序的输出结果是冒泡排序显示过程,并最终把输入的十个数字由小到大无空格排列。
(4)""
N20
()
{
f[N];
f[0]=1;
f[1]=1;
(2<)
f[i][1][2];("\\n");
(0<)
{
(40)("\n\n");
("f[2d]5d"[i]);
f[0]=1f[1]=1f[2]=2f[3]=3
f[4]=5f[5]=8f[6]=13f[7]=21
f[8]=34f[9]=55f[10]=89f[11]=144
f[12]=233f[13]=377f[14]=610f[15]=987
f[16]=1597f[17]=2584f[18]=4181f[19]=6765
}
}
该程序的运行结果为。
(5)""
()
{
;
a[3][3]={{11,12,13},{21,22,23},{31,32,33}};
("\n");
(0<3)
{
(0<3)
("%3d"[i][j]);
("\n\n");
}
(0<3)
(0<)
{[i][j];
a[i][j][j][i];
a[j][i];
}
("a\n");
(0<3)
{
(0<3)("%3d"[i][j]);
111213
212223
313233
a
112131
122232
132333
("\n\n");
}
}
该程序的输出结果是。
(6)""
()
{s[40];
i;
(":
");
(0;(s[i]())'\n');
s[i]='\0';
("\:
");
(0[i]'\0')
{(s[i]>='a'[i]<='z')
s[i][i]-32;
(s[i]>='A'[i]<='Z')
s[i][i]+32;
(""[i]);
}
""
()
{s[3][4];
00;
("请按顺序输入12个数字,以空格或回车分隔:
\n");
(i<=2)
{(0<=3)
{(""[i][j]);}
;}
("\n");
(0<=2)
{(0<=3)
{(""[i][j]);}
("\n");}
("\n\n");
(0<3)
{(1<4)
{(s[i][j]>s[i][0])
{[i][0];
s[i][0][i][j];
s[i][j];}}}
(0<=2)
{(0<=3)
{(""[i][j]);}
("\n");
}}
}该程序的运行结果为将输入大写字母转变为小写,小写字母转变为大写。
2、编程序并上机调试运行(包括题目及要求、流程图、程序清单、测试数据及结果)
(1)编写一个3*4矩阵,找出每行中最大元素并与第一列元素交换。
具体要求如下:
(a)使用二维数组存放该3*4矩阵;
(b)定义并初始化该二维数组;
(c)输出原矩阵和变换后的矩阵进行比较;
(d)有必要的提示信息。
见下页
(2)编程实现如下功能:
将字符数组1中的全部字符拷贝到字符数组2中,具体要求如下:
(a)不能使用字符串拷贝函数();
(b)必须将1中的字符串结束标志‘\0’一起拷贝,但其后的字符不拷贝;
(c)1的长度不超过80,2的长度必须足够大;
(d)有必要的提示信息。
。
(3)设某班共有10名学生,为了平定某门课程的奖学金,按照规定超过全班平均成绩10%者发给一等奖,超过全班平均成绩5%者发给二等奖。
编写程序,输出学生学号、成绩和奖学金等级。
见下页
主函数中调用代码:
无
五、程序调试记录
(1)调试下面程序。
N10
()
{[]={12,15,23,29,30,31,34,45,56,70};
/*存放被查找的整数,数组存放有序数列*/
01;
/*、和分别标记查找区间的下界和上界及中间位置*/
("\:
\n");
("");/*输入要查找的整数*/
(":
\n");
(1<)
(""[i]);/*输出有序数列*/
(<)/*使用折半法查找数据*/
{()/2;
([])
("\[]!
");
;/*若等于数列中间位置的数据则查找成功*/
(>[])
1;
/*若小于中间位置的数据,等于1*/
1;
/*若大于中间位置的数据,等于1*/
}
(>)
("\n[]");
/*若大于,则查找失败*/
}
程序中包含有一些错误,按下述步骤进行调试。
程序调试记录
1、程序出现的错误及改正
1.用{}把十四十五行括起来
2.第十行1改成0;
2、程序的改进
1.把七八九三行与十十一两行换一下位置,方便用户操作;
实验5深入模块化设计与应用
一、实验学时
完成本实验需4学时。
二、实验目的
1、阅读程序题
(1)学会使用函数嵌套调用的使用方法
(2)学会使用一维数组做为函数参数
(3)递归调用的设计与使用
(4)学会使用指针做为函数的参数
2、编程题
(1)如何运用指针进行程序设计
(2)如何以一维数组、二维数组做为函数参数进行程序设计
(3)冒泡排序、选择排序的灵活应用
三、实验指导
为了达到最佳的实验效果,以下提供几条适于模块化编程的指导意见,可供参考。
1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意观察函数嵌套调用、一维数组做为函数参数、指针做为函数的参数、递归调用的使用方法。
2、编程题必须首先画出流程图,并反复思考判断程序设计的正确性,以面向过程的、模块化设计方法完成程序设计。
要注意变量设置、函数参数及返回值在数据传递或共享中的重要作用。
四、实验内容
1、阅读程序题
(1)(a,b)
{();}
()
{258;
(());
(“\n”);
}
该程序的输出结果是15。
(2)f(b[],n)
{;
1;
(0<)*b[i];
r;
}
()
{[]={2,3,4,5,6,7,8,9};
(a,3);
(“\n”);
}
该程序的输出结果是120。
(3)(n)
{(n>2)(
(1)
(2));
(2);
}
()
{(“\n”(3));}
该程序的输出结果是4。
(4)f(*s)
{0;
(*s)*10+*‘0’;
(k);
}
以f(“1234”)方式调用该函数,结果1234。
(5)(*n)
{;
(0<1){
;
(1<)
(*()<*());
()
{*();*()=*();*();}
}
}
()
{*[10];
;
(0<10)
(“”);
;
(p,10);
(0<10)
(“”,*p);
(“\n”);
}
该程序的输出结果是将输入数字按照从小到大顺序排列后组成一个新数字。
2、编程序并上机调试运行(包括题目及要求、流程图、程序清单、测试数据及结果)
(1)编写一个函数(*s),函数的功能是把字符串中的内容逆置。
例如,字符串中原有的内容为,则调用该函数后,字符串中的内容为