上 海 开 放 大 学
闵二 分校《学生实验报告》记录表
姓名: 学号: 实验日期: 2014 年 5 月 19 日 年级、专业名称 实验指导教师 指导教师评定 实验报告成绩 课 程 名 称 主持(主讲)教师 主持(主讲)验收教师评审意见 C语言程序设计 陈海建 黄晓冬 实验名称: 实验二 数组
使用主要设备: VC++6.0
实验目的: 1、 熟练掌握一维数组的定义、引用和初始化; 2、 理解二维数组的定义、引用和初始化; 3、 了解字符数组的定义、引用和初始化;
实验要求:
1、根据每个实验的具体要求,填写程序或编写完整程序,将运行结果截图,并粘贴到指定位置。 2、实验独立完成。
实验安排:
1、本实验时间为4学时。
2、实验结束后,须完成实验报告作为评分依据,它应包括实验名称,实验目的、实验内容、实验结果及实验体会等内容,以电子版形式上交(包括调试源程序)
实验考核:
1、实验成绩占总成绩的20%,本次成绩占总成绩的5%。 2、实验成绩以百分制记分。本次实验共4题,每题25分。 3、实验成绩的评分标准为:(1)编写了程序源代码,但没调试程序,得50%;(2)编写了程序源代码,并调试了程序,但结果不完全正确,得70%;(3)编写了程序源代码,并调试了程序,结果正确,得为90%;(4)编写了程序源代码,调试了程序,结果正确,并撰写体会,得95%或更高。
1 实验题序号 实验题描述: 用一维数组来处理Fibonacci数列(1,1,2,3,5,8…),显示前20个数列。Fibonacci数列的规则是:第1个数字是1,第2个数字是1,从第3个数字开始是前2个数字之和,即an=an-1+an-2。 程序文本,请补充完整 #include int main() { int i; //i为数组下标 int f[20]={1,1}; //对最前面两个数组元素f[0]和f[1]赋初值1 for (_i=2____;i<20;i++) _f[i]=f[i-1]+f[i-2]_____________________; //先后求出f[2]~f[19]的值 for (_i=0____;i<20;i++) { if (i%5= =0) printf(“\\n”); //控制每输出5个数后换行 printf(“%12d”, _f[i]____); //输出一个数 } printf(\"\\n\"); return 0; } 运行结果(截图): 2 实验题序号 实验题描述: 用数组的方法,求10个整数中的最大值,以及它所在序号(下标加1)。 程序文本,请补充完整 #include int main() { int a[10]; //定义含10个元素的数组变量 int i,max,max_i; printf(“input 10 numbers:\\n”); for (_i=0____;i<10;i++) _scanf(“%d”,&a[i])______; //输入10个数组元素的值 printf(“\\n”); __max=a[0]__________;//初始化max _max_i=0____________;//初始化max_i for (j=1;j<=9;j++) //应该是变量i if(a[i]>max) {_max=a[i];max=i+1__;} printf(“the max number is %d, it locate at %d.\\n”, _max,max_i_____); return 0; } 运行结果(截图): 3 实验题序号 实验题描述: 输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。 程序文本,请补充完整。 #include int main() { char string[81]; int i,num=0,word=0; char c; gets(string); // 输入一个字符串给字符数组string for (i=0;(c=string[i])!='\\0';i++) // 只要字符不是'\\0'就继续执行循环 if(c==' ') __word=0_________; // 如果是空格字符,使word置0 else if(word==0) // 如果不是空格字符且word原值为0 {__word=1;___________ // 使word置1 __num++;___________ // num累加1,表示增加一个单词 } printf(\"There are %d words in this line.\\n\ //输出结果 return 0; } 运行结果(截图): 4 实验题序号 实验题描述: 有3个字符串,要求找出其中最大者。 程序文本,请补充完整。 #include _#include ____ int main() { char str[3][20]; //定义二维字符数组 char string[20]; //定义一维字符数组,作为交换字符串时的临时字符数组 int i; for(i=0;i<3;i++) gets(str[i]); //读入3个字符串,分别给str[0],str[1],str[2] if (strcmp(str[0],str[1])>0) //若str[0]大于str[1] _strcpy(string,str[0])__; //把str[0]的字符串赋给字符数组string else //若str[0]小于等于str[1] _strcpy(string,str[1])__; //把str[1]的字符串赋给字符数组string if(strcmp(str[2],string)>0 //若str[2]大于string _strcpy(string,str[2])___; //把str[2]的字符串赋给字符数组string printf(“\\nthe largest string is:\\n%s\\n”,string); return 0; } 运行结果(截图): 本次实验的体会(可选):