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 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];