实验7 函数程序设计

更新时间:2023-11-24 14:25:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验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[2*d]='/0' ;t[2*d]='\\0' ; } main( ) {

char s[100], t[100];

printf( \scanf(\ sub(s,t) ;

printf( \ }

(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(\ gets(a);

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

puts(a); }

void Inverse(char str[]) {

int len, i = 0, j;

char temp; len = strlen(str);

for (j=len-1; 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() {

intn,i; int f=0;intf=1;

printf(\scanf(\for(i=1;i<=n;i++)

f=f*fun(i); //fun(i) printf(\}

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

void main() { int i, i1, i2, result; int x[10]; for ( i=0; i<10; i++ ) scanf( \ scanf( \ result = sum( x+i1, i2-i1+1); printf( \}

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

#include #include #define MAX 100 void Insert(char s[]); main() {

char string[MAX]; scanf(\ Insert(string);

printf(\}

void Insert(char srcStr[]) {

char strTemp[MAX]; int i = 0, j = 0;

strcpy(strTemp, srcStr); while (strTemp[j]!=’\\0’ ) { srcStr[i] = strTemp[j]; i++; j++; srcStr[i] = ' '; i++; }

srcStr[i] = '\\0'; }

(3)下列程序的功能为:输出如下图形,补充完善程序,以实现其功能。程序以文件名sy7_6.c保存。

1 222 33333 4444444 555555555 66666666666

7777777777777 66666666666 555555555 4444444 33333 222 1

#include void a(int i) {

intj,k;

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

for(k=1;k<=2*i-1 ;k++) printf(“%d”,i); printf(\}

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) //求最大数和最小数 {

inti,j=0,k=0,t; intmax,min;

max=a[0]; min=a[0]; for(i=1;i

if(maxa[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个整数:\ for(i=0;i

printf(\调整前的数组元素为:\ for(i=0;i

EXmaxmin(a,N);

printf(\调整后的数组元素为:\ for(i=0;i

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

#include #include int function(char s[]) { int i;

int l=strlen(s);

for(i=0;i

void main() {

char s[100]; int count=0,i;

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

{ printf(\输入第%d个字符串:\

scanf(\ if(function(s)) {printf(\是回文\\n\ else printf(\不是回文\\n\ }

printf(\共有回文%d个\\n\}

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

void tentotwo(intnumber,int a[]) {

while(number) { a[n]=number%2; number=number/2; n++; } }

void main() {

intinumber; int a[20],i;

printf(\ scanf(\ printf(\

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

scanf(\ if(function(s)) {printf(\是回文\\n\ else printf(\不是回文\\n\ }

printf(\共有回文%d个\\n\}

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

void tentotwo(intnumber,int a[]) {

while(number) { a[n]=number%2; number=number/2; n++; } }

void main() {

intinumber; int a[20],i;

printf(\ scanf(\ printf(\

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

本文来源:https://www.bwwdw.com/article/55zt.html

Top