实验四 数 组 一、实验目的 数组是有序数据的集合,通过实验上机掌握一维和二维数组的使用,以及字 符串处理函数的使用方法。 二、实验要求 1. 掌握一维数组的定义和数组元素引用的正确方法。 2. 掌握二维数组的定义和数组元素引用的正确方法。 3. 熟悉在什么情况下使用数组,并熟练运用数组来解决实际问题。 4. 掌握字符串处理函数的使用方法。 5. 编写实验报告(四)。 三、实验内容 4-1 编写程序S4-1.C。计算fibonacci数列的前15个数,并将其存放到一维数 组f中,然后输出结果。 4-2 读程序S4-2.C,说明程序的功能和输出结果,然后执行程序,验证结果的 正确性。 源程序S4-2.C main() { int a[3][4]={{4,6,3,-7},{5,2,7,-4}, {8,6,4,-1}}; int min, p, i, j; for (i=0;i<=2; i++) { min=abs(a[i][0]); p=0; for(j=0;j<=3;j++) if(abs(a[i][j])<min) { min=abs(a[i][j]); p=j; } printf("%d\t (%d,%d)\n", a[i][p],i,p); } } 4-3 完善程序S4-3.C,使其能输出如下图形。 * * * * * * * * * * * * * * * * * * * * * * * * * 源程序S4-3.C main() { static char a[]={ ′*′,′*′,′*′,′*′,′*′}; int i,j,k; char space=′′; for(i=0;i<5;i++) { } } 4-4 用一维数组编写程序S4-4.C。从键盘上输入由5个字符组成的一个字符串, 然后输出该字符串。要求用两种方法实现:①按字符逐个输入/输出;②按 字符串输入/输出。 4-5 用二维数组编写程序S4-5.C。输入3个字符串,然后反向输出每个字符串 以及字符串的长度。 4-6 程序S4-6.C是查询某学生是否为该班学生的程序,试填空完成该程序。 源程序S4-6.C #include <stdio.h> main() {char class[5][8]={"王小华","张三","赵四","向玲","丁一"}; int i, flag=0; char name [8]; printf("请输入要查询的学生姓名:"); gets (name); for(i=0;i<5;i++) /* 与初始化中的5个人进行比较 */ if ( )= =0) flag=1; if ( ) printf("%s是这个班的。\n",name); else printf("%s不是这个班的。\n",name); } 4-7 编写程序S4-7.C。用二维数组实现输出下面的杨辉三角形(要求输出前10 行)。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ┇ ┇ 4-8 从键盘上输入一个字符,用折半查找法找出该字符在已排序的字符串a中 的位置。若该字符不在a中,则打印“该字符不在a中”。试完善程序S4-8.C。 源程序S4-8.C # include <stdio.h> main() { char a[12]="abcdefklmnp",ch; int i, top,bot,mid; printf("Input a character \n"); scanf("%c",&ch); printf("ch=%c\n",ch); if (bot >top) printf("该字符不在a中\n"); } 4-9 不用strcat()函数,将两个字符串连接起来,试完善程序S4-9.C。 源程序S4-9.C main() { char s1[80],s2[40]; int i=0,j=0; printf("Enter s1:"); scanf("%s",s1); printf("Enter s2:"); scanf("%s",s2); printf("\nResult is:%s",s1); getch(); } 4-10 程序S4-10.C的功能是找出数组x中的最小值和次小值,并分别将其与x[0] 和x[1]交换。调试程序,使其能够运行出正确的结果。 注意:不能增加行或删除行,也不能更改程序的结构, 源程序S4-10.C main() { int x[]={5,8,7,6,2,7,3,9,0,4}; int i,t,m1=0,m2=0,min1=32767,min2=32767; for(i=1;i<10;i++) if(x[i]<min1) { min2=min1; m2=m1; min1=x[i]; m1=i; } else if(x[i]<min2) { min2=x[i]; m2=i; } t=x[0];x[m1]=x[0];x[m1]=t; t=x[1];x[m2]=x[1];x[m2]=t; for(i=1;i<10;i++) printf("%3d",x); getch(); } *4-11 编写程序S4-11.C,模拟用户注册和登录的过程,登录时要进行身份 验证。(注有“*”的实验题可以选做)