C语言实验报告2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验目的
1. 掌握函数的定义、调用和参数的传递方式。
2. 掌握数组的定义、初始化,以及数组元素的下标法引用和
指针法引用。
二、实验内容
1. 输出 Fibonacci 序列
程序填空,不要改变与输入输出有关的语句。
输入 2 个正整数m 和n(1<=m,n<=10000),输出m 和n 之间所有的fibonacci 数。
Fibonacci 序列(第1 项起):1 1 2 3 5 8 13 21 ......
要求定义并调用函数fib(n),它的功能是返回第n 项
Fibonacci 数。例如,fib(7)的返回值是13。
输出语句:printf("%d ", f);
文件命名---学号C1.C
主要代码:
if(f>=m&&f<=n) /*确定f是在m、n之间*/
printf(“%d”,f);
long fib(int n) /*定义求第n项Fibonacci数的函数*/ int i,x1,x2,x; /*x1、x2一次代表前两项,x表示其后一项*/ x1=1; /*前两项都是1*/
x2=1;
for(i=1;i<=n-2;i++){ /*循环输出后n-2项*/
x=x1+x2; /*计算新项*/
x1=x2; /*更新x1和x2,为下一次计算新项x做准备*/ x2=x;}
截图:
2.十进制转换二进制
程序填空,不要改变与输入输出有关的语句。
输入 1 个正整数n,将其转换为二进制后输出。
要求定义并调用函数 dectobin(n),它的功能是输出 n 的二进制。例如,调用dectobin(10),输出1010。
输出语句:printf("%d");
文件命名---学号C2.C
主要代码:
#include
int main(void)
{
int i,n;
void dectobin(int n);
scanf("%d",&n);
dectobin(n); /*定义函数,将n转换为二进制之后的数值*/ printf("\n");
}
void dectobin(int n)
{
if(n>1)
dectobin(n/2);
printf("%d",n%2); /*输出二进制数值*/
}
截图:
3.求平均值
程序填空,不要改变与输入输出有关的语句。
输入一个正整数 n (1 文件命名---学号C3.C 主要代码: #include int main() { int i, n,; float aver,sum=0; int a[10]; scanf("%d", &n); for(i=0; i scanf("%d", &a[i]); for(i=0;i sum=sum+a[i]; /*求和*/ aver=sum/n; /*求n个整数的平均值*/ printf("aver=%.2f\n", aver); /*输出平均值*/ } 截图: 4.求最大值及其下标 程序填空,不要改变与输入输出有关的语句。 输入一个正整数 n (1 文件命名---学号C4.C 主要代码: #include int main(void) { int i, index, n; int a[10]; scanf("%d", &n); for(i=0; i scanf("%d", &a[i]); /*找最大值a[index]*/ index=0; /*假设a[0]是最大值,即下标为0的元素最大*/ for(i=1; i if(a[i]>a[index]) /*如果a[i]比假设的最大值还大*/ index=i;/*再假设a[i]是新的最大值,即下标为i的元素最大*/ printf("max=%d,index=%d\n", a[index],index);/*输出最大值和相应的下标*/ } 截图: 三、收获、体会及问题 收获、体会:总的来说,这次实验的完成是不大轻松的,尤其是在对数组的相关学习方面,在实验的过程中暴露了诸多问题,说实话,数组这一章节的内容可以算是一个瓶颈,但经过实验操作以及对书本相应例题的研究,加深了对函数的定义、调用和参数的传递方式的理解,同时也进一步掌握了数组的定义、初始化以及数组元素的下标法引用和指针法引用。 问题:实验过程中,明显暴露出来的问题是对数组这一最基 本的构造类型不够熟悉,对数组名和下标来确定数组元素也了解地不够透彻,在实验后,其实只要了解数组的构造方法即可。