学生实验报告
实验课名称: 数组函数综合实验
实验项目名称: 数组函数综合实验
专业名称: 测控技术与仪器
班级: 2012240801
学号: 201224080126
学生姓名: 黄小龙
教师姓名: 武雅丽
2013 年 4 月 27 日
实验日期: 20## 年 4 月 27 日 实验室名称:数组函数综合实验
第二篇:C语言实验5-8答案(函数与数组)
实验5 函数定义、声明与调用
任务1 函数的定义和声明
1.21 2.12 3.s=16 功能:求2和4次方。
4.修改后代码如下:
#include <stdio.h>
main( )
{
int x,y;
scanf("%d,%d",&x,&y);
printf("%d\n",sum(x,y)); //形参与实参的个数要一致,所以将加号改成逗号。
}
int sum( int a,int b) //函数不能嵌套定义,所以将sun函数拉到main函数外,同 { 时形参的每个参数前都必须要有类型
return (a+b);
}
5.修改后代码如下:
#include <stdio.h>
fun(int n)
{
int k,yes;
for(k=2;k<=n/2;k++)
if(n%k==0) {yes=0;break;} //反证法证明,找到一个就跳出,否则会被后面覆盖 else yes=1;
return yes;
}
main( )
{
int n;
scanf("%d",&n);
if(fun(n)) //将main函数中的函数调用fun()改成fun(n),因为实参的个数应与形参对应 printf("%d:yes!\n",n);
else
printf("%d:no!\n",n);
}
6.修改后代码如下:
#include <stdio.h> main( )
{ double fun(int m); //先调用再定义,且不是能缺省的int型,请加上函数说明。 int m;
printf("\n input m:");
scanf("%d",&m);
printf("\n t= %12.10lf \n",fun(m));
}
double fun(int m)
{
double fac,t=0.0;
int i=1,j;
for(i=1;i<=m;i++)
{
fac=1.0;
for(j=1;j<=i;j++) fac=fac*j; //逻辑有误,改为:for(j=1;j<=i;j++) fac=fac*j;这样才表示求i!,原程序行是求i的m次方。
t+=1.0/fac;
}
return t;
}
任务2 函数的嵌套调用
1.
(1) in main:x=2,y=5
(2) in swap:a=2,b=5
(3) in swap:a=5,b=2
(4) in main:x=2,y=5
2.a=8
3.如输入:12345
则输出:54321
程序的功能是实现将输入的5个字符逆序输出。
4.8
实验6 函数递归调用、变量的存储类型及编译预处理 任务1 函数的递归调用
1.fact(j-1)*j
2.gcd(n,m%n)
m<n
3.//for(j=0;j<=n-i;j++)
// printf("");//删除这两行,因为顶格输出,不要空行了。 y==1||y==x
z=c(x-1,y-1)+c(x-1,y)
4.程序代码如下:
#include<stdio.h>
fib(int n)
{ int f;
if(n==1||n==2)
f=1; else f=fib(n-1)+fib(n-2);
return(f);
}
main()
{
int n,i,s=0; printf("Input n="); scanf("%d",&n); for(i=1;i<=n;i++) s=s+fib(i);
printf("n=%d,s=%d\n",n,s);
}
任务2 变量的存储类型与编译预处理
1.t1=4,t2=12,b=100
a=2,b=4
2.(1):1 (2):2 (3):11 (4):3 (5):2
3.7 8 9
4.Y=7
5.Y=3
6.12
7
7.程序代码如下:
#include "stdio.h"
#define MAX(A,B) (A)>(B)?(A):(B)
#define ZMAX(A,B,C) MAX(MAX(A,B),C)
main()
{ int a,b,c,t;
printf("input a,b,c:");
scanf("%d,%d,%d",&a,&b,&c);
t=ZMAX(a,b,c);
printf("max of a,b,c:%d\n",t);
}
实验7 一维数组、二维数组及字符串数组 任务1 数组的基本定义与应用
1.4 3 3 2
2.6,4,3,2,
3.a=a+arr[i][j]
j=2
j—
i+j==2
输出为:a=13,b=14
4.i=1
x[i-1]
5.m<1000
m/10%10或m/10-x*10
a[i]=m
m<i
输出结果为:153 370 371 407
6.a
a
sum/n
x[i]<ave
任务2 字符数组
1.‘\0’
str1[i]-str2[i]
2.c[k]=a[i++];
c[k]=b[j++];
a[i]== ‘\0’
3.xWHOwho
4.c1!= ‘ ’&&c2==‘ ’
实验8 数组与函数
任务1 数组与函数的综合应用
1. n%2+‘0’
bin[i]= ‘\0’
2.float a[10],x;
i<10
i<10
j<9或j<10-i
a[j]>a[j+1]
a[j]=a[j+1]
i<10
i%5==0
3.i=strlen(a);i>=j;i— a[i+1]=a[i]
4.m[i]=a%10
t=t*10
k=n*n
5.0
||
1
6.k-1
N-1
temp
7.程序代码如下: #include<stdio.h> void fun(char *a)
{ int i=0;
char *p=a;
while(*p&&*p=='*') {a[i]=*p;
i++;
p++;
}
while(*p)
{
if(*p!='*') {a[i]=*p; i++;
}
p++;
}
a[i]='\0';
}
main()
{ char s[81];
printf("Enter a string:\n"); gets(s);
fun(s);
printf("The string after deleted:\n");
puts(s); }