文档库 最新最全的文档下载
当前位置:文档库 › C实验报告参考答案

C实验报告参考答案

C实验报告参考答案
C实验报告参考答案

C实验报告参考答案集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)

《高级语言程序设计》实验报告班级:学号:姓名:成绩:

实验7 函数程序设计

一、实验目的

1.掌握函数定义的方法。

2.掌握函数实参与形参的传递方式。

3.掌握函数的嵌套调用和递归调用的方法。

4.了解全局变量和局部变量、动态变量、静态变量的概念和使用方法。

二、实验内容

1

(1)下列sub函数的功能为:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。例如,当s所指字符串的内容为“ABCD”时,t所指数组中的内容为“DCBAABCD”。纠正程序中存在的错误,以实现其功能。程序以文件名sy7_1.c存盘。

#include

#include

void sub( char s[], char t[] )

{

int i, d;

d=strlen( s );

for( i=1; i< d ; i++ ) for( i=0; i< d ; i++ ) t[i]=s[d-1-i] ;

for( i=0; i

t[d+i]=s[i] ;

t[2*d]='/0' ; t[2*d]='\0'

}

main( )

{

char s[100], t[100];

printf( " Please enter string s : " );

scanf("%s" , s );

sub(s,t) ;

printf( " \n The result is : %s \n ", t );

}

(2)下列程序的功能为:将字符数组中的字符串逆序输出。纠正程序中存在的错误,以实现其功能。程序以文件名sy7_2.c存盘。

#include

#include

#define ARR_SIZE = 80; #define ARR_SIZE 80

void Inverse(char str[]) void Inverse(char

str[]);

main()

{ char a[ARR_SIZE] ;

printf("Please enter a string: ");

gets(a);

Inverse(char a[]); Inverse(a);

printf ("The inversed string is: ");

puts(a);

}

void Inverse(char str[])

{ int len, i = 0, j;

char temp;

len = strlen(str);

for (j=len-1; i

{ temp = str[i];

str[j] = str[i]; str[i] =

str[j];

str[j] = temp;

}

}

(3)下列程序的功能为:求整数n的阶乘。纠正程序中存在的错误,以实现其功能。程序以文件名sy7_3.c存盘。

#include

int fun(int n)

{ static int p=1; int p=1;

p=p*n;

return p;

}

void main()

{ int n,i;

int f=0; int f=1;

printf("input member: ");

scanf("%d",&n);

for(i=1;i<=n;i++)

f=f*fun(i); f= fun(i);

printf("%d!=%d\n",n,f);

}

2.程序填空题

(1)下列sum()函数的功能是:计算数组x前n个元素之和。在主函数中,输入10个任意整数和下标i1、i2的值(设1≤i1≤i2≤9),调用sum()函数计算从第i1元素到第i2元素的和,并输出结果。补充完善程序,以实现其功能。程序以文件名sy7_4.c存盘。

#include

int sum( int x[], int n )

{

int i, s=0;

for ( i=0; i

s = s+x[i] ;

return s;

}

void main()

{

int i, i1, i2, result;

int x[10];

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

scanf( "%d", &x[i] );

scanf( "%d%d", &i1, &i2 );

result = sum( x+i1, i2-i1+1 );

printf( "Sum=%d\n", result );

}

(2)下列程序的功能为:输入一个字符数小于100的字符串string,然后将string所存盘字符串中的每个字符之间加一个空格。补充完善程序,以实现其功能。程序以文件名sy7_5.c存盘。

#include #include #define MAX 100void Insert(char srcStr[]);

main()

{

Insert( string ); }

{

strcpy(strTemp, srcStr);

while ( j

{ srcStr[i] =

i++;

j++;

srcStr[i] = '

}

srcStr[i] = '\0';

}

(3)下列程序的功能为:输出如下图形,补充

完善程序,以实现其功能。程序以文件名sy7_6.c

保存。

#include

void a(int i)

{

int j,k;

for(j=1;j<=30-i;j++)

printf("%c",' ');

for(k=1;k<= 2*i-1 ;k++) printf(“%c”,i+48 );

printf("\n"); or “%d”,i

strTemp[j]!

}

void main()

{ int i;

for(i=1;i<=7;i++) a(i) ;

for(i=6;i>=1;i--) a(i) ;

}

3.编程题

(1)从键盘任意输入10个整数,用函数编程实现将其中最大数与最小数的位置对换后,再输出调整后的数组。程序以文件名sy7_7.c存盘。

#include

#define N 10

void EXmaxmin(int a[],int n) //求最大数和最小数

{

int i,j=0,k=0,t;

int max,min;

max=a[0]; min=a[0];

for(i=1;i

if(max

else if(min>a[i]) { min=a[i]; k=i;}

t=a[j];

a[j]=a[k];

a[k]=t;

}

void main()

{

int i;

int a[N];

printf("请输入%d个整数:",N);

for(i=0;i

scanf("%d",&a[i]);

printf("调整前的数组元素为:");

for(i=0;i

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

printf("\n");

EXmaxmin(a,N);

printf("调整后的数组元素为:");

for(i=0;i

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

}

(2)编写一函数,判断一字符串是否为回文。所谓“回文”是指顺读和倒读都一样的字符串,如“deed”和“level”是回文。在主函数中对输入的5个字符串统计其中回文的个数。程序以文件名sy7_8.c存盘。

#include

#include

int function(char x[])

{

int i;

int y=strlen(x);

for(i=0;i

if(x[i]!=x[l-i-1])

return 0;

return 1;

}

void main()

{

char s[100];

int count=0,i;

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

{ printf("输入第%d个字符串:",i);

scanf("%s",s);

if(function(s))

{printf("%s是回文\n",s);count++;} else printf("%s不是回文\n",s);

}

printf("共有回文%d个\n",count);

}

(3)编写一函数,实现将一个十进制数转换成二进制数。程序以文件名sy7_9.c存盘。

#include

int n=0;

void tentotwo(int number,int b[ ])

{

while(number)

{

b[n]=number%2;

number=number/2;

n++;

}

}

void main(void)

{

int inumber;

int a[20],i;

printf("please input nunber: ");

scanf("%d",&inumber);

printf("\n");

tentotwo(inumber,a ); for(i=n-1;i>=0;i--)

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

}

相关文档