实验五使用指针的程序设计.doc
文本预览下载声明
C语言程序设计实验报告
实验五 使用指针的程序设计(1)
班级 李明月 学号 201219628 姓名 李明月
一、实验目的掌握指针的概念
(2)能正确使用数组的指针和指向数组的指针变量;
(3)熟悉指针做函数参数的使用方法;
(4)能正确使用字符串的指针和指向字符串的指针变量。
二、实验内容及步骤#include stdio.h
#define N 20
void fun(int *a,int n,int *odd,int *even)
{ int i;
*odd=0;
*even=0;
for(i=0;in;i++) //用循环判断数组中的元素哪个是偶数哪个奇数
{
if(a[i]%2==0) //如果除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;in;i++)
printf(%5d,*(a+i));
printf(\n\n);
fun(a,6,odd,even); //调用函数,取地址
printf(The sum of odd numbers:%d\n,odd);
printf(The sum of even number:%d\n,even);
}运行结果:
2.假设每班人数最多不超过30人,具体人数由键盘输入,试编程打印最高分及其学号。
要求:用一维数组和指针变量作函数参数,编程打印某班一门课成绩的最高分和学号。请编写相应的程序代码,并调试运行出正确结果。
程序代码:
#include stdio.h
void 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;in;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]);
}
void fun(float *score, int n, int *k)
{
int i;
for(i=1;in;i++)
if (*(score+(*k))*(score+i))
*k=i;
}
运行结果:
3.矩阵转置;
要求:从主程序中输入一个3*3的整形矩阵,调用一个函数,将此矩阵转置,用指针作为函数的形参,在主程序中输出转置后的矩阵。
程序代码:
#include stdio.h
int main()
{
void zhuanzhi(int (*b)[3]); //声明一个函数
int a[3][3];
int i,j;
printf(请输入一个3*3的矩阵:\n);//对矩阵的值进行输入
for(i=0;i3;i++)
{
for(j=0;j3;j++)
{
scanf(%d,a[i][j]);
}
}
printf(您输入的矩阵为:\n);//输出输入的矩阵
for(i=0;i3;i++)
{
for(j=0;j3;j++)
{
printf(%3d,a[i][j]);
}
printf(\n);
}
zhuanzhi(a); //调用函数使其转置
printf(转置之后的矩阵为:\n);
for(i=0;i3;i++)
{
for(j=0;j3;j++)
{
printf(%3d,a[i][j]);
}
printf(\n);
}
return 0;
}
void zhuanzhi(int (*b)[3]) //定义一个带有多维指针变量的函数实现转置
{
int temp,i,j;
显示全部