实验六 指针程序设计

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

C语言程序设计实验报告

实验六指针程序设计

一、实验目的

(1)掌握指针的概念,会定义和使用指针变量;

(2)能正确使用数组的指针和指向数组的指针变量;

(3)熟悉指针做函数参数的使用方法;

(4)能正确使用字符串的指针和指向字符串的指针变量。

二、实验内容及步骤

1、按要求完善程序

下列程序的功能是分别求出数组中所有奇数之和以及所有偶数之和。形参n给了数组中数据的个数,利用指针odd返回奇数之和,利用指针even返回偶数之和。例如:数组中的值依次为:1,9,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even返回偶数之和8。请在下面空白处将实现这一功能的函数完善,并且调试运行出结果。

程序代码如下所示:

#include

#define N 20

void fun(int *a,int n,int *odd,int *even)

{ int i;

*even=0;

*odd=0;

for(i=0;i

{

if(a[i]%2==0)

*even=*even+a[i];

else

*odd=*odd+a[i];

}

}

void main()

{

int a[N]={1,9,2,3,11,6},i,n=6,odd,even;

printf("The original data is:\n");

for(i=0;i

printf("%5d",*(a+i));

printf("\n\n");

fun(a,n,&odd,&even);

printf("The sum of odd numbers:%d\n",odd);

printf("The sum of even number:%d\n",even);

}

运行结果:

2.假设每班人数最多不超过30人,具体人数由键盘输入,试编程打印最高分及其学号。要求:用一维数组和指针变量作函数参数,编程打印某班一门课成绩的最高分和学号。请编写相应的程序代码,并调试运行出正确结果。

程序代码:#include

int main()

{void fun(float*score,int n,int*k);

float score[30];

int num[30];

int i,n,k=0;

printf("请输入学生人数:");

scanf("%d",&n);

for(i=0;i

{printf("请输入第%d同学的学号,成绩:",i+1);

scanf("%d,%f",num+i,score+i);

}

fun(score,n,&k);

printf("\n最高分为:%.2f 学号为:%d\n",score[k],num[k]);

return 0;

}

void fun(float*score,int n,int*k)

{int i;

for(i=1;i

if(*(score+(*k))<*(score+i))

*k=i;

}

3.矩阵转置;

要求:从主程序中输入一个3*3的整形矩阵,调用一个函数,将此矩阵转置,用指针作为函数的形参,在主程序中输出转置后的矩阵。

程序代码:

#include

int main()

{void a(int (*b)[3]);

int c[3][3];

int i,j;

printf("请输入一个3*3矩阵:\n");

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

{for(j=0;j<3;j++)

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

}

}

printf("你输入的矩阵为:\n");

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

{for(j=0;j<3;j++)

{printf("%3d",c[i][j]);

}

printf("\n");

}

a(c);

printf("转置之后的矩阵为:\n");

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

{for(j=0;j<3;j++)

{printf("%3d",c[i][j]);

}

printf("\n");

}

return 0;

}

void a(int (*b)[3])

{int temp,i,j;

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

{for(j=0;j

{temp=*(*(b+j)+i);

*(*(b+j)+i)=*(*(b+i)+j);

*(*(b+i)+j)=temp;

}

}

}

运行结果:

4.从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出。(例如输入abcdef,输出fedcba)。请编写相应的程序代码,并调试运行出正确结果。

程序代码:

#include

#include

#define SIZE 100

void main()

{

int i;

int length;

char sign[SIZE];

char s;

printf("请输入一个字符串:");

scanf("%s",sign);

length=strlen(sign);

printf("字符串逆序输出为:\n");

for(i=length;i>0;i--)

{s=sign[i-1];

printf("%c",s);

}

printf("\n");

}

运行结果:

5.编写在字串str1中找出所有非数字的字符串当成一个空格,存入字符数组str2中(所有数字字符也必须依次存入str2中),str1不变仍为原字串的程序。例如,字符串str1为"$Ts!47&*s456 a23* +B9k",调用函数fun后,字符数组str2将存入" 47 456 23 9 ",str1仍然是"$Ts!47&*s456 a23* +B9k"。

程序代码:

相关文档
最新文档