c语言第六次作业解析汇报

  • 格式:doc
  • 大小:274.00 KB
  • 文档页数:19

下载文档原格式

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

第六次作业:指针

(以下题目如无特殊声明,请使用指针技术实现,尽量不要使用数组作为形参,也尽量避免使用数组下标引用数组元素)

1.数组元素循环移位

有n个整数,使前面的各整数顺序向后移动m个位置,后面的m个整数则变成最前面的m个数。写一函数实现以上功能。

在主函数中输入n及n个整数,输入m (m

#include

void main()

{

void inv(int *p,int n,int m);

int n,m,a[20],*p;

printf("please input n=");

scanf("%d",&n);

printf("please input %d numbers:",n);

p=a;

while(p

scanf("%d",p++);

printf("please input m=");

scanf("%d",&m);

p=a;

inv(a,n,m);

printf("the new array:\n");

while(p

printf("%d ",*p++);

putchar('\n');

}

void inv(int *p,int n,int m)

{

int i;

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

*(p+n-i+m)=*(p+n-i);

for(i=0;i

*(p+i)=*(p+n+i);

}

2. 矩阵元素的排序

将一个5×5的整数型矩阵中各元素重新排序。排序规则为,矩阵元素按照从左到右,从上到下的顺序依次递增,即

4,41,10,14,03,02,01,00,0.......a a a a a a a a ≤≤≤≤≤≤≤。

要求编写一个函数实现上述排序功能。

在主函数中输入该矩阵,调用编写的上述函数,然后输出排序后的矩阵。

#include

void main()

{

void inv(int (*x)[5]);

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

int (*p)[5];

printf("please input an 5*5 array:\n");

p=a;

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

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

scanf("%d",*(p+i)+j);

inv(p);

printf("the new array:\n");

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

{

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

printf("%4d",*(*(p+i)+j));

putchar('\n');

}

putchar('\n');

}

void inv(int (*x)[5])

{

int i,j,t;

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

for(j=i+1;j<25;j++)

{

if(*(*x+i)>*(*x+j))

{t=*(*x+i);*(*x+i)=*(*x+j);*(*x+j)=t;}

}

return;

}

3.星期的查找

编写一个程序,输入一个1~7之间的整数,表示星期几,然后输出相应的文字。

例如:如用户输入3,则输出“星期三”。

要求:用指针数组的方法来实现。

#include

void main()

{

int n;

char (*p)[3];

char a[7][3]={"一","二","三","四","五","六","七"};

printf("please input n=");

scanf("%d",&n);

p=a;

printf("星期%s\n",p+n-1);

}

4.字符串库函数的实现

请使用指针的方法来实现如下的库函数:

Char * strncpy( char *s, char * t, int n) //复制t的前n个字符至s

Char * strncat( char *s, char * t, int n) //连接t的前n个字符至s的末尾int strncmp( char *s, char * t, int n) //比较s和t的前n个字符

并请编写一个主函数来调用并测试自己编写的库函数。

#include

#include

char *strncpy(char *s,char *t,int n)

{

int i,length;

length=strlen(s);

for(i=0;i

*(s+i)=*(t+i);

if(length

return(s);

}

char *strncat(char *s,char *t,int n)

{

int i,length;

length=strlen(s);

for(i=0;i