实验八 指针程序设计(解答)

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

《指针程序设计》实验解答

1、改错题

(1)

include

int digits(char *s)

{

int c=0;

while(*s) //s改为*s

{

if(*s>='0' && *s<='9') //*s>=0 && *s<=9改为*s>='0' && *s<='9'

c++;

s++;

}

return c;

}

void main()

{

char s[80];

printf("请输入一行字符\n");

gets(s);

printf("字符长度是:%d\n",digits(s));

}

(2)

#include

swap(int *p1,int *p2)

{

int p; //int *p改为int p

p=*p1; //*p=*p1改为p=*p1

*p1=*p2;

*p2= p; //*p2=*p 改为*p2=*p

}

void main()

{

int a,b;

scanf("%d%d",&a,&b);

printf("a=%d\tb=%d\n",a,b);

swap(&a,&b);

printf("a=%d\tb=%d\n",a,b);

}

(3)

#include

void move(int *pointer) ; //添加

void main(void)

{

int a[3][3],*p,i;

printf("输入数组元素:\n");

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

scanf("%d%d%d",&a[i][0], &a[i][1], &a[i][2]); //scanf("%d%d%d",a[i][0], a[i][1],

a[i][2])

p=&a[0][0]; // p=a[0][0];

move(p);

printf("转置后的数组为:\n");

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

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

}

void move(int *pointer)

{

int i,j,t;

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

for(j=i;j<3;j++)

{

t=*(pointer+3*i+j); //t=(pointer+3*i+j);

*(pointer+3*i+j)=*(pointer+3*j+i);

*(pointer+3*j+i)=t; //*(pointer+3*j+i)=*t;

}

}

2、程序填空

(1)

#include

int findmax(int *s,int t )

{

int i,k=0;

for(i=0;i< t ;i++) //1

if( s[i]>s[k]) k=i; // 2

return k ; //3

}

void main()

{

int a[10]={12,23,34,45,56,67,78,89,11,22},k=0,*add;

int j;

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

printf("%4d%4d%10xh\n",j+1,a[j],&a[j]);

k=findmax(a,10);

add=&a[k];

printf("\n%d %d %xh\n",a[k],k+1,add );

}

(2)

#include

void main()

{

int a[5]={1,3,5,7,9};

int *num[5],i,*p;

int *f(int *x[],int);

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

num[i]= &a[i] ; //1

p=f(num,2);

for ( ; p<=num[4]; p++)

printf(" %d\t", *p ); //2

}

int *f(int *x[],int i)

{

int k=0;

for (; k

return x[k] ; //3

}

3、编程题

(1)编写一个程序实现如下功能:利用指针作函数参数,设计一函数实现将n个元素进行排序(程序以文件名sy7_7.c存盘)。

#include

void sort(int *p,int n)

{int i,j,t;

for(i=0;i

for(j=0;j

if(*(p+j)>*(p+j+1)) //由小到大排序

{ t=*(p+j); *(p+j)=*(p+j+1);*(p+j+1)=t;}

}

void main()

{int a[10],i;

printf("输入%d个正数:",10);

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

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

sort(a,10); //调用排序函数

printf("排序后:\n");

相关文档
最新文档