c语言指针的应用实验报告6,C语言实验6 实验报告(指针).doc

C语言实验6 实验报告(指针)

C语言程序设计实验报告

实验六 使用指针的程序设计(1)

班级 2012153 学号 201215317 姓名 杜顺永

一、实验目的

(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;

*odd=0;

*even=0;

for(i=0;i

{

if(*a%2==0)

*even=*even+*a;

else

*odd=*odd+*a;

}

}

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

void main()

{

float search(float *p,int n);

int num[30],*p=num,i;long int n;

float score[30],*q=score,temp;

printf("请输入班级人数n(n<=30):");

scanf("%d",&n);

for(i=0;i

{

printf("请依次输入学号、成绩:\n");

scanf("%d%f",p,q);

}

temp=search(score,n);

printf("最高分 学号 如下:\n");

for(i=0;i

if(score[i]==temp)

printf("%5.1f%15d\n",score[i],num[i]);

}

float search(float *p,int n)

{

int i,j;

float max=*p;

for(i=0;i

if(*p>max)

max=*p;

return(max);

}

运行结果:

3.矩阵转置;

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

程序代码:

#include

void main()

{void ex(int(*p)[3],int *q);

int str[3][3],i,j;

printf("请按行输入矩阵(3*3):\n");

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

{

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

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

}

ex(str,str[0]);

printf("逆置后矩阵为:\n");

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

{

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

printf("%4d",str[i][j]);

printf("\n");

}

}

void ex(int(*p)[3],int *q)

{

int i,temp;

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

{

p++;q++;

temp=*q;

*q=**p;

**p=temp;

}

temp=*(*p+1

你可能感兴趣的:(c语言指针的应用实验报告6)