10.实验指导书P83习题6.12。已知定义如下:f(1)=1,f(2n)=f(n),f(2n+1)=f(n)+f(n+1)。编写递归函数,并计算f(100)和f(151)的值。
#include \int f(int n) /*补充函数体部分*/ { }
void main() { printf(\ printf(\}
11.已知某一正整数,其各位数字均为素数,而且各位数字之和也为素数。比如235,各位数字2、3、5以及各位数字之和2+3+5=11也为素数。编程找出1~1000中满足条件的所有正整数,并将结果按每行5个输出
23
实验7 数组
院(系):信息科学与技术学院 班专级 业 学姓课程名称:高级语言程序设计 号 名 教师签名:
实验室 计算机号 实验名称 所用软件 实验成绩 7.1 实验目的
1.熟练掌握一维数组、二维数组的定义、赋值、输入、输出方法。
2.熟练掌握字符数组和字符串函数的使用。
3.熟练掌握一维数组以及一维数组元素的存储关系。
4.熟练掌握一维数组和二维数组的使用以及在函数中的传递。 5.通过上级实践掌握与数组有关的算法。
7.2 实验预习
1.熟悉循环语句与数组处理语句结合的方法。
2.复习一维数组、二维数组的定义、初始化和数组元素的引用。 3.复习数组的应用:批量处理数据、查找、排序和矩阵的处理。 4.复习字符数组的定义和使用。
5.复习字符串的含义、存储和字符串函数的功能。 6.复习函数调用时参数的传递过程。
7.3 实验任务
【上机题1】输入并运行以下程序。 main()
{ int i,a[5],b[5],c[5]; /*变量说明,数组说明*/ a[0]=2,a[1]=6,a[2]=4,a[3]=8,a[4]=9; b[0]=2,b[1]=7,b[2]=9,b[3]=5,b[4]=3; for(i=0;i<=4;i++) { c[i]=a[i]*b[i];
printf(\ } }
说明:
①int a[5]:整型一维数组说明,a是数组名,也是数组的起始地址,该数组可以存储5个整数。
②数组赋值方法和一般变量一样。例如:a[0]=2表示将2赋给a[0]。
结果分析:_____________________________________________________________________
【上机题2】输入并运行以下程序。 main()
{ int sum,i;
int a[]={5,8,4,6,4,3,8,2,4,5,6}; /*数组元素初始化*/ sum=0;
for(i=0;i<=10;i++)
sum+=a[i]; /*求数组元素之和*/
24
printf(\ }
结果分析:_____________________________________________________________________
【上机题3】程序实现:从键盘输入5个数,输出最大、最小元素的值以及它们的下标。将程序补充完整并上机调试。 main()
{ int i,j,k,max,min; int a[5];
for(i=0;i<5;i++)
scanf(\ max=min=a[0]; j=k=0;
for(i=0;i<5;i++) { if(max
{max=____;j=i;} else if(max>a[i]) {min=____;k=i;} }
printf(\ }
【上机题4】输入并运行以下程序,分析程序运行结果。 main()
{ int i,j;
int a[3][2]={12,34,24,11,45,20}; int b[3][2]={11,23,34,13,10,64}; int c[3][2];
for(i=0;i<=2;i++) /*3行*/ for(j=0;j<=1;j++) /*2列*/ c[i][j]=a[i][j]+b[i][j]; for(i=0;i<=2;i++)
{for(j=0;j<=1;j++)
printf(\ printf(\ } }
结果分析:___________________________________________________________________
【上机题5】以下程序实现:从键盘输入12个整型数,组成一个3行4列的二维数组并输出。将程序补充完整并上机调试。 main()
{ int a[3][4];
int i,j;
for(i=0;_____;_____) for(j=0;_____;_____) scanf(\ printf(\ for(i=0;_____;i++)
{ for(j=0;_____;j++)
printf(\ printf(\ } }
说明:
①运行程序后,从键盘输入的12个整数应以空格、Enter或Tab键分开。
25
②修改程序实现:分别输出各行的最小值和各列的最大值。
【上机题6】输入并运行以下程序。 main()
{ char a[7]=\ printf(\
printf(\}
说明:
①数组可以用字符串进行初始化,例如char a[7] = “FOXPRO”,但不能将字符串直接赋给数组,例如a[7]=”Forxpro”和;a=”Forxpro”都是错误的。
②字符串的最后有串尾标志’\\0’, char a[6] = “FOXPRO”也是不对的。 ③用%s格式输出指定位置的字符串,%c格式输出数组元素的字符。 运行结果如下:
【上机题7】输入并运行以下程序。 main() { int i;
char a[][8]={\ for(i=0;i<=3;i++)
printf(\ /*显示各字符串*/ }
运行结果如下:
【上机题8】输入并运行以下程序,分析程序运行结果。 main() { int i;
int a[5]={1,2,3,4,5}; pr(a);
for(i=0;i<5;i++) printf(\ } pr(p) int p[]; { int i;
for(i=0;i<5;i++) p[i]=p[i]*p[i]; } 说明:
①当形参为数组时,对应的实参为数组名,传递的是数组的首地址,此时实参数组与形参数组共享同一段内存单元,形参数组元素的改变会影响到实参数组元素的内容。 ②如果函数pr()不只是对5个元素的数组进行处理,而是可以对任意大小的数组进行处理,则如何修改程序。 运行结果如下:
结果分析:____________________________________________________________________
26
【上机题9】编写程序:从键盘输入一串整数保存到数组中,调用函数antitone()将数组反序并输出。自定义函数void antitone(int a[],int n)实现将数组中的n个数据按逆序存放。
【上机题10】已知某数列的前两项为2和3,其后每一项为其前两项之积。分别用函数和数组编程实现:从键盘输入一个整数x,判断并输出x最接近数列的第几项?
27