第7次上机任务必修

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

第六次上机任务——函数、文件

一、实验目的

✧练习使用数组做函数参数的函数

✧练习文件的简单使用

注意:

在系统开放盘(可能是D盘)建立一个以自己名字命名的文件夹,以下题目的程序都保存到该文件夹中。二、实验任务

◆程序改错,直接在源程序上修改

《C语言学习辅导与实践》第171页改错题:

程序2: 功能:将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。

例如:当a所指字符串中的内容为“abcdefg”,b所指字符串中的内容为“1234”时,c所指数组中的内容应该为“a1b2c3d4efg”;而当a所指字符串中的内容为“1234”,b所指字符串中的内容为“abcdefg”时,c所指数组中的内容应该为“1a2b3c4defg”。

#include

#include

/******************FOUND***************/

void fun( char*a, char*b, char*c )

{

while ( *a && *b )

{

*c = *a;

c++;

a++;

*c = *b; c++; b++;

}

if( *a == '\0' )

/**********FOUND**********/

while( *b ){ *c = *b; c++; b++; }

else

/**********FOUND**********/

while( *a ) {*c = *a; c++; a++; }

*c = '\0';

}

void main()

{

char s1[100], s2[100], t[200];

printf("\nEnter s1 string : ");scanf("%s",s1);

printf("\nEnter s2 string : ");scanf("%s",s2);

fun( s1, s2, t );

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

}

程序3:功能:在一个一维整型数组中找出其中最大的数及其下标。

#include

#define N 10

/**********FOUND**********/

float fun(int *a,int *b,int n)

{

int *c,max=*a;

for(c=a+1;c

if(*c>max)

{

max=*c;

/**********FOUND**********/

*b=c-a;

}

return max;

}

void main()

{

int a[N],i,max,p=0; //max存放最大值,p存放最大值下标

printf("please enter 10 integers:\n");

for(i=0;i

/**********FOUND**********/

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

/**********FOUND**********/

max=fun(a,&p,N);

printf("max=%d,position=%d",max,p);

}

程序4:

功能:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。

例如:当s中的数为:87654时,t中的数为:864。

#include

void fun (long s, long *t)

{

int d;

long sl=1;

*t = 0;

while ( s > 0)

{

d = s%10;

/**********FOUND**********/

if(d%2==0)

{

/**********FOUND**********/

*t = d * sl+ (*t);

sl *= 10;

}

/**********FOUND**********/

s/=10;

}

}

void main()

{

long s, t;

printf("\nPlease enter s:");

scanf("%ld", &s);

fun(s, &t);

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

}

编程练习

1.《C语言学习辅导与实践》第110页,编程题第4题

写一函数,使给定的一个二维数组(3×3)转置,即行列互换。

程序源码:

#include

#define N 3

void fun(int a[N][N])

{int i,j,t;

for(i=0;i

for(j=0;j

{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}

}

void main()

{

int i,j,a[N][N];

for(i=0;i

for(j=0;j

{

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

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

}

相关文档
最新文档