实验5函数程序设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言程序设计实验报告

实验5 函数程序设计

一、实验目的

(1)掌握C语言函数定义及调用的规则;

(2)掌握递归函数的编写方法和运行过程;

(3)理解变量的作用域和生存期。

二、实验内容及步骤

1、程序改错

输入已编好的源程序,源程序中包含有错误,先对源程序进行编译和连接,然后根据提示信息,修改程序中的错误,经过多次修改—编译—连接,直到编译、连接成功。最后运行程序,输出正确结果。

(1)下述程序中,函数FUN功能是:计算正整数NUM的各位上的数字之积。例如,若输入252,则输出应该是20;若输入202,则输出应该是0。

#include /*提示:有3处错误*/

#include

long fun(num)

{long k=1;

do

{k*=num%10;

num\=10;

}while (num)

return k;

}

void main()

{long n;

scanf(“%ld”,&n);

printf(“\n%ld\n”,fun(n));

}

修改后程序代码:

#include

long fun(long num)

{long k=1;

do

{k*=num%10;

num/=10;

}while (num);

return k;

}

void main()

{long n;

scanf("%ld",&n);

printf("\n%ld\n",fun(n));

}

运行结果:

2.已有一个已排好序的数组,要求在主程序中输入一个数,调用函数将其它插入数组中,保持数组依然有序,在主函数中输出插入后的数组。

程序代码:

#include

main()

{ void insert(int y);

int x;

printf("请输入一个数:");

scanf("%d",&x);

insert(x);

printf("\n");

}

void insert(int y)

{

int i,j,a[6]={1,5,10,15,20};

for(i=0;i<5;i++)

{ if(y

{for(j=5;j>i;j--)

a[j]=a[j-1];

a[i]=y;break;

}

}

for(i=0;i<6;i++)

printf("%d\t",a[i]);

}

运行结果:

3、有一篇文章,共有3行文字,每行有80个字符。要求在主程序中输入文章,打印统计结果。写一个函数分别统计出其中英文大写字母、小写字母、数字、空格及其它字符的个数。

程序代码:

#include

int d=0,x=0,k=0,n=0,s=0;

main()

{void tongji(char c[][80]);

char ch[3][80];

int i;

printf("请输入三行字符:\n");

for(i=0;i<3;i++)

gets(ch[i]);

tongji(ch);

printf("大写字母个数为:%d\n",d);

printf("小写字母个数为:%d\n",x);

printf("空格个数为:%d\n",k);

printf("数字个数为:%d\n",n);

printf("其他字符个数为:%d\n",s-d-x-k-n);

//总数减去大小写字母、空格、数字的个数就是其他字符的个数}

void tongji(char c[][80])

{int i,j;

for(i=0;i<3;i++)

{ for(j=0;j<80;j++)

{ if(c[i][j]!='\0')

{s++;//统计输入字符的总数

if(c[i][j]>='A'&&c[i][j]<='Z')d++;

if(c[i][j]>='a'&&c[i][j]<='z')x++;

if(c[i][j]>='0'&&c[i][j]<='9')n++;

if(c[i][j]==' ')k++;

}

else break;

}

}

}

运行结果:

4. 递归程序设计练习——计算最大公约数

利用计算最大公约数的三条性质,用递归方法计算两个整数的最大公约数。

性质1:如果x>y,则x和y的最大公约数与x-y和y的最大公约数相同性质2:如果y>x,则x和y的最大公约数与x和y-x的最大公约数相同性质3:如果,即x=y,则x和y的最大公约数与x值和y值相同

具体要求:

①主函数中随机输入x、y的值

②所有变量定义为整数变量。

③键盘输入数据前要有提示。

④要求用函数求最大公约数。

程序代码:

#include

main()

{ int max(int a,int b);

i nt x,y;

p rintf("请输入两个整数:用空格隔开\n");

s canf("%d %d",&x,&y);

p rintf("最大公约数为:%d\n",max(x,y));

}

int max(int a,int b)

{ int t;

if(a==b) t=b;

if(a>b) t=max(a-b,b);

if(b>a) t=max(b-a,a);

return t;

}

运行结果:

相关文档
最新文档